差分出力と取り込みの方法について

このQ&Aのポイント
  • vbscriptを使用して、テーブルから差分データをcsv形式で出力する方法と、既に出力済みのレコードを除外する方法について教えてください。
  • また、あるファイルを読み込んでテーブルに追加する方法と、既に取り込まれたレコードを除外する方法についても教えていただけますか?
  • テーブルにフラグの列を追加し、フラグの値によって出力済みや取り込み済みの判断を行い、対応するレコードのみを出力または取り込むプログラムを作成することが基本的な方法です。
回答を見る
  • ベストアンサー

差分出力及び差分出力について

プログラム初心者です。教えてください。 vbscriptで2パターンプログラムを書きたいです。 ・1つはテーブルから差分データをcsv形式で出力  既に出力済のレコードは出力しない。 ・もう1つはあるファイルを読み込み、テーブルに追加する  既に取り込み済のレコードについては取り込まないようにする。 基本的な質問ですが、テーブルから出力やテーブルへの取り込みについては、 テーブルにフラグの列を作って、レコードのそのフラグの列が 1の場合は出力済、もしくは取り込み済 0の場合は未出力、もしくは未取り込み と判断させるようなプログラムを書き、該当するレコードだけ 出力もしくは取り込みという処理を書けばいいのでしょうか? 何か参考になる例があれば教えていただけないでしょうか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • shockatz
  • ベストアンサー率80% (153/191)
回答No.1

とんだ亀レスになりますが、ご参考までに vbscriptということで、レガシーASPに関する質問だと思いますが、一般的なケースだと思いますので。 ■データのエクスポート:出力済のデータは出力しない MS-SQLサーバで言えば、テーブルにsmalldatetime型の項目、[DateExported]を付加し、出力時に日付を打ちこんでおけば良いと思います。 単純なフラグですと、出力データを紛失した場合に、再出力が不可能になりますので。 ■データのインポート:取込済のデータは取込まない テーブルに、重複判断項目を指定した単一値(ユニーク)なインデックスを作っておけば、重複データを挿入する瞬間に例外で落とされますので、自動でスキップできます。 挿入前に重複の是非をSQL(指定項目の件数を返すようなクエリ)で打つ方法もありますが、こちらのほうが高速でしょう。 レガシーASPで使用されているADOは、Windows2000Server時代の遺物であり、最近でいうEntity Frameworkどころか、だいぶ前からあるADO.NETよりパフォーマンスがかなり低いので、新規で作るなら、最低でもASP.NETを使われることをお勧めします。

関連するQ&A

  • Accessで2テーブルの差分出力

    Access2000を使っています。 2つのテーブルの不一致レコードを表示したいと思っています。 下記例では『玄米茶の単価が違う・ 紅茶の数量が違う』ため、差分のレコードを出力したいのです。 (新しいテーブルにINSERTしてもかまいませんし、クエリで出力してもかまいません) 例) Aテーブル 品目  単価  数量 緑茶  100   10 玄米茶 200   15 紅茶  150   5 Bテーブル 品目  単価  数量 緑茶  100   10 玄米茶 150   15 紅茶  150   30 差分テーブル(クエリでも可) 品目 玄米茶 紅茶 実際に処理するレコードが10万件を超える為、差分レコードのみを表示したいと思っています。 上記例では、緑茶レコードは表示したくありません。 どなたか教えてください。お願いします。

  • アクセスのテーブルの差分の抽出について

    アクセスの初心者です。今、仕事でデーターの差分の抽出の仕方についてわからず困っています。 2つのテーブルがあります。 テーブルには100以上の項目と500件ほどのレコードがそれぞれ入っています。 この2つのテーブルを比較して差分を出したいのですが方法が思いつきません。 出したいものは、テーブル1とテーブル2の共通のIDを比較し、 テーブル1からテーブル2で変更、追加されたものを出したいのです。 レコードの追加だけなら差分クエリを利用してやれると思うのですが、 100以上の全フィールドをそれぞれ比較するとなるとどうすれば良いのかわからないのです。 2つのテーブルの項目は基本一緒ですが、追加されたり、変更されたりします。 もともとはエクセルのデータで毎週やりとりされるもので、 エクセル上で手作業で、 シート1とシート2でマッチングを行い、シート3に追加、変更されたものを書き出しています。 100列ほどの項目も追加や変更されるので、前回データと今回データで (1)列の比較をして2つの列数を揃えてから、 (2)KEYになる列でVLOOKUP関数を使い、追加されたデータをよけて、 (3)前回データと今回データが一緒のデーター並べ替え、揃えて、シートを比較して変更、追加を探す という作業を行っています。 データー数が多く、エクセルでは限界がでてきました。 また、アクセスを使えば簡単にできる。と言われましたが、 まだまだ初心者のため、この大量のデータをどう処理すればいいのかわかりません。 質問は、 (1)アクセスで100項目以上あるテーブルのそれぞれの差分をだすことができるのでしょうか? (2)その方法はどうすればよいのでしょうか? また、アクセス初心者でも勉強すればすぐにできるのでしょうか? と、いうことです。 会社に迷惑をかけないためにも、可能、不可能を判断したいです。 よろしくお願いいたします。

  • oracleのデータディクショナリからCSV出力のPGM生成

    oracleのテーブルからデータをCSV形式でエクスポートしたいのですが、 expコマンドではCSV形式をサポートしていないようです。  ↓ 仕方なくPL/SQLで順次読みしながらCSV出力するプログラムを書こうと思いました。  ↓ テーブルひとつひとつ手作りするのは面倒なので、 「CSV出力するプログラム」を書くのではなく、 USER_TABLESやUSER_TAB_COLUMNSの情報を参照しながら、 「CSV出力するプログラムを生成するプログラム」を書こうと思いました。  ↓ こんな誰でも思いつく事は誰かが既にやってそうなので、 ネットに落ちているのではないかと思いました。  ↓ という経緯です。 PL/SQLでoracleのデータディクショナリを参照しながら 「CSV出力するプログラムを生成するプログラム」 の雛形がどこかネットに無料で落ちていたら紹介して下さい。 よろしくお願い致します。

  • ファイルを比較して差分のみを出力するには…?

    とつぜんですみません。緊急なので投稿しました。 VBSを使って、2つのファイル(ファイルAとファイルB)の1行目からファイルの終わりまでを比較して差分を出力するプログラムを作成したいと考えています。 ファイルの1列目は主キーとなっております。 <ファイルA> 100,A 110,B 133,D 155,R … <ファイルB> 100,A 110,B 133,F 155,P … また差分の出力は上の例でいくと、 133,D → F 155,R → P というようなかたちでファイルに出力したいです。 どなたかアドバイス頂けないでしょうか? よろしくお願いします。

  • Access2000のMDBファイルをVBScriptやWSH?で

    Access2000のmdbファイルがあります。 VBScriptでテーブル名の一覧をテキストに落としたり、 特定のテーブルのレコードにあるデータに1.05を掛けて テキストにcsvの形で出力させたいのですが、何か良いサンプルはあるのでしょうか?

  • VB詳しい方!DataGridViewCS出力

    VB初心者です。 業務ツールとしてSQLServerから取得したものをVBで DataGridVewに反映させています。 さらにDataGridView.Columns.Addで列を追加し 連携させています。 その状態でCSV出力ボタンを作成し、出力プログラムを書いたのですが、 出力結果に追加した列の値が空欄になってしまいます。(ヘッダーは出ます。) バインドできていないことが原因だと思いますがどのようにすればよろしいでしょうか?

  • MATLABのCSV形式での書き込みについて

    MATLABにて計算させた結果をCSV形式で出力したいのですが, もともとCSVファイルに書き込んであるデータを消さずに, 追加書き込みとして,行と列を指定して書き込み出来るのでしょうか? もしできるのであれば, どのようなプログラムを組めばよいのでしょうか? どなたかご教授お願いします.

  • MATLABのCSV形式での書き込みについて

    MATLABにて計算させた結果をCSV形式で出力したいのですが, もともとCSVファイルに書き込んであるデータを消さずに, 追加書き込みとして,行と列を指定して書き込み出来るのでしょうか? もしできるのであれば, どのようなプログラムを組めばよいのでしょうか? どなたかご教授お願いします.

  • VBSでソート&ファイル分割

    VBScriptでCSVファイルを最大5件のレコードになるように ファイル分割しようとしています。 ただし、同じコードが複数のファイルに分かれないようにしたいです。 入力するCSVファイル(test_in.csv)は以下のような形式です。 (実際のファイルに項目行はありません) 連番,コード,フラグ,日付 01,0001,A,20091001 02,0002,A,20091001 03,0003,A,20091002 04,0001,U,20091003 05,0003,D,20091003 06,0004,A,20091003 07,0005,A,20091003 08,0001,D,20091005 09,0006,A,20091003 10,0006,A,20091003 ※入力ファイルに同じコードのレコードが5件を超えることはありません) 上記の入力ファイルの場合は以下の3つのファイルに分割することになります。 【test_out_001.csv】 01,0001,A,20091001 04,0001,U,20091003 08,0001,D,20091005 02,0002,A,20091001 【test_out_002.csv】 03,0003,A,20091002 05,0003,D,20091003 06,0004,A,20091003 07,0005,A,20091003 【test_out_003.csv】 09,0006,A,20091003 10,0006,A,20091003 ※コード"0003"のレコードは2件あるので、test_out_001.csvには出力せず、  test_out_002.csvに出力します。  コード"0006"についても同様でtest_out_003.csvに出力します。 処理の手順としては 入力ファイルのデータをコードでソートし、 1ファイルに5件を超えないように追加していくのかと思いますが、 ソートと5件制限はどのように記述すればよいでしょうか?

  • Excel をCSVで出力できません。

    OS/Win7 Excel 2007  Excel表をCSV形式で出力したい。「ファイル名保存」「ファイルの種類―CSV」を指定すると、下記メッセージが出て、CSV形式で出力できません。 「(出力ファイル名.CSV)には互換性のない機能が含まれている可能性があります。」 単にテキストデータとしてなら出力できますが、このテキストファイルからOPEN文で読み込むと 1レコード全体を読み込めません。解決方法を教えてください。 同窓会の宛名書きを今週中にもしなければなりませんので、大変困っています。よろしくお願いします。

専門家に質問してみよう