• ベストアンサー

ファイルとデータベースについて

Te-Shoの回答

  • ベストアンサー
  • Te-Sho
  • ベストアンサー率52% (247/472)
回答No.1

細かな事が全く書かれていないので想定が入りますので、ご自分の仕様に合わせて読み替えてください。 単純にCGIで一連の流れとしてデータベースを更新し、ファイルに書き込むコードを書けば順番に処理をしますので正常に作用すると思います。 ただし同時に複数のアクセスがあったり、データベース更新後にファイルの書き込み異常があったときなどのエラー処理の為の考慮が必要となってきます。 トランザクション処理というものです。 データベース更新処理の初めにトランザクションを開始し、ファイル書き込み終了にコミット。エラーが発生した場合はロールバックするようにしないと、データベースは更新されているがファイルは更新されていなかったり、ファイルの書き込み途中にそのファイルを参照しに行ってしまったりと動作異常が起こります。 データベースとファイルのデータを確実に同期させる為の考慮が必要と言うことですね。 データベースのトランザクションについては使用するデータベースにより変わりますので、データベースのリファレンスを参照してください。 トランザクション処理に関しては参考URLか、ネットを検索して熟読してくさい。

参考URL:
http://www.sophia-it.com/category/transaction.jsp

関連するQ&A

  • データベースの使い方は?

    フリーCGIの中にあるファイルにある.dat拡張子などのデータ保存場所(<>ではさんでデータにしていくもの)とSQLとよく言われているデータベースでは機能的や動作的に違うものなのですか??ネットショッピングで個別の商品をデータ化していくのにcgiやphpを想定してるのですが、データの量やスピード又は全体的な機能面によって違いがあるのですか?またどちらのほうが優れているのでしょうか??理由等もつけていただけると助かります。初心者ですいません。(ちなみに教えてgooに質問をするとどれくらいの時間で返答されるのですか??参考までにこちらも聞いてみました。)

  • データファイルのソート方法について

    perlで使用している、データファイルのソート方法について質問いたします。 やりたいこと。 1.ファイルを読み込み 2.指定されている文字列でソートをして 3.同じファイルに格納する 以上になります。 以下のファイルにデーターが入ってます・ namedata.cgi 田中,4 佐藤,2 鈴木,1 水野,3 このファイルをソートして以下のように並び替えて保存したいと思ってます。 スクリプトを実行後 namedata.cgi 鈴木,1 佐藤,2 水野,3 田中,4 となっていてほしいのです。 スクリプト sort.cgi 略・・・ #ふぁいる読み込み open(DB,"<$file") || &error("Can't write $file"); flock(DB, 1); @lines = <DB>; close(DB); #ソート @result = sort { $a <=> $b } @lines; #ファイル書き込み open(DB,">$file") || &error("Can't write $file"); flock(DB, 2); print DB "@result"; close(DB); ファイルの2項目目が分からないからソートされていないような気がするのですが、記述方法がわかりません。 ファイル読み込み時にforeachを使用して読み込まないとだけなのでしょうか? うまく説明できていないかもしれませんが、よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • dbmopenでデータベース作成?

    現在perlで、 dbmopen関数を使ってDBファイルを作成しようとしています。 できることはできたのですが、幾分わからないところがありまして、、、。 どなたかお助け下さい。。。 というのも、 テキストファイルを、内容・順番を全く同じにしてDBファイルにしたいのですが、、、。 自分で作ると、DBファイルはできても順番がバラバラでした。 どのようなスクリプトを作ればいいのでしょうか? 自分が作成したperlスクリプトはこんな感じです ↓ dbmopen %a, "ファイル名", 0666; open(TMP,"ファイル名.txt"); while($data=<TMP>){ # chop($data); $n=index($data," "); $key=substr($data,0,$n); $a{$key}=$data; } dbmclose %a; まだperlを触って数日で、どこをどうすればいいのか不明です、、、。 なんとか、テキストファイルを1行ずつひっぱってきて、DBファイル化したいのですが。 ご指導お願い致します、、、。

  • フォームでの、巨大ファイルデータのアップロード

    form input type="file" を使ってファイルデータをアップロードし、perl の標準入力からデータを取得します。 この時、約30メガくらいまでなら正常に取得可能ですが、それ以上になると、CGI側でエラーが出ます。このことについてサーバー業者に問合せをしたところ、 「CGIの動作時間が長くかかる場合、該当のスクリプトの動作が負荷軽減のため、仕様により中断される場合がございます。」という解答でした。 大きなファイルを転送する方法が不明です。 どなたかご回答をお願いできますでしょうか。 宜しくお願い致します。

  • ネットワーク上EXCELファイルとローカルEXCEL

    ちょっと困っていますのでどなたか助けていただけないでしょうか。 (何がしたいか) ローカルPCのデスクトップにExcelファイル(A.xls)があります。 ネットワーク上にはEXCELファイル(\\Net\DB\B.xls)があります。 A.xlsのSheet1のA1のセルに12345(企業コード)を入力し検索ボタンを 押すと、B.xlsのファイルをOpenせずにb.xlsの中のA列に保存されている 企業コードデータを検索し、見つかったセルの一つとなりのセルにセット されている売上データ(10000)をA.xlsのB1のセルへ戻す。 こんな処理は可能でしょうか。 (背景) ネットワーク上のb.xlsはDB的に使用します。データ量が多いため EXCEL関数ではどうしても重くなってしまいます。 なんとか、なんとか効率を上げたいので、どうぞお助けください!

  • エクセルファイルのダウンロード

    cgiにてブラウザ上のボタンを押すと、xlsファイルをダウンロードさせたいのですが、ブラウザ上でいきなり開いてしまいます。他のPCで同じ動作をテストしてみたところ、いきなりxlsのファイルが開かずに、開くか保存かのダイアアログが出ます(正常)。ファイルをいきなり開かずに、保存させたいのですが何か設定が必要なのでしょうか。 OS:win2000 ブラウザ:IE6 office2000です。どなたかご教授いただければ有難いです。

  • データベースの設計についての質問です。

    『データ独立性( http://133.20.244.52/airs/db1/db1-9/b/ )』の説明の中の『概念層』は、".confファイル"内の設定情報と関わっているのでしょうか?

  • 2つのMDFファイルをattachさせたい。

    別々のテーブルが入った二つのMDFファイル(A.mdf,B.mdf)があります。 いまsp_attach_dbを使ってサーバーにアタッチしたいのですが「ファイルを別のデータベースに関連付けることはできません。」と出来ませんでした。 sp_attach_dbのヘルプには「ファイル名は最大 16 個まで指定できます。」と書いてあるので出来ると思ったのですが・・・。初心者なのでもともとの考え方がずれているのでしょうか・・・。 SQLは以下の通りです。 --------------------------------- sp_attach_db @dbname = 'Test', @filename1 = 'C:\aaa\Data\A.mdf', @filename2 = 'C:\aaa\Data\A.ldf', @filename3 = 'C:\aaa\Data\B.mdf', @filename4 = 'C:\aaa\Data\B.ldf' --------------------------------- もし、これが出来ない時はBファイルのテーブルを Aファイルに移動したいのですがどのようにすれば できますでしょうか。 まったく初心者で途方にくれています。ご教授よろしくお願いします。

  • HTMLの外部jsのようなcgiファイルについて

    はじめまして。かなりレアなケースになると思うのですが、すでにリリースしており、泣き寝入りする事態が起きまして、CGIの出力のところがわからなくて困っております。 1、あるHTMLをブラウザで開くと<head>内のCGIが実行される。 <script language="JavaScript" type="text/javascript" src="○○.cgi"></script> 2、このCGIが実行されるとMySQLのデータを取得し、HTMLでデータを取り扱えるよう、取得した値をJavaScriptの配列の形式に加工され、「Temporary Internet Files」に○○.cgiが保存されます。 var 配列A=new Array(); 配列A[0]="0000001,名前,住所"; 配列A[1]="0000001,名前,住所"; ※○○.cgiを開くと右のような配列の表記が記載されている。 3、このHTML内で、上記の配列をJavaScriptで呼び出せば、Temporary Internet Filesに保存されたcgiファイルのデータ(配列形式の)が表示されるので、まるで外部JSの配列を扱っているかのようにDBのデータを取得することができます。 mysqlのデータを取得した後、CGIでHTMLに吐き出すぐらいはわかるのですが、 画面上に表示させるのではなく、外部JSなら普通どこかサーバにあるJSファイルを見にいくと思うのですが、Temporary Internet Filesに保存され、それが値として操作できるところです。 このCGIの出力の記述がまったくわからないので困っております。 わかりにくい文章で本当に申し訳ございません。どうかよろしくお願いします。

    • 締切済み
    • CGI
  • データベースの結合について

    データベースAとBがあり。 データベースAには基本となるデータが入力されています。 id name flag a test 0 b aaaa 1 c ghic 0 データベースBにはデータベースBと同様のIDが入っています。 id pre a ddd このようなデータベースの場合、データベースBに入っているものを 1として表示したい場合はどのようなSQL文にしたらいいのでしょうか?? 出力したいDB例 id name flag b_flag a test 0 1 b aaaa 1 c ghic 0