200万行の更新

解決


Pochi  2008-12-12 08:10:41  No: 145483

VB2005でMDBファイルを操作しています。
現存するテーブルの特定のフィールドに対して変更をする必要があります。
この操作は繰り返し実行する必要はなく今のところ1回のみの実施のつもりです。

変更内容は
  スペース(複数あればすべて)を削除する
という簡単な事なのですが、どうもSQL(Update)ではReplace関数は使えないようです。
実際に修正対象となるレコードはだいたい半分(約100万件)程度と思っています。

今の私の知識では、

DataAdapter,DataSet,DataTable
を使って修正の必要なレコードを一度DataSet,DataTableに取り込んで
それぞれのRows().Item()をVBのReplaceで修正して、Updateする

という方法しか思い浮かびません。
なにか別の方法はありますでしょうか?

#バックアップとしてMDBファイルをコピーしておくことによりトラン
#ザクション処理は考えなくていいと思っています。
#(失敗したらやり直し)
#他ユーザからのアクセスはありません。


やじゅ  2008-12-12 18:26:39  No: 145484

>SQL(Update)ではReplace関数は使えないようです。
VB経由では使えないが、Access経由からならば利用できます。

>今のところ1回のみの実施のつもりです。
Accessで該当MDBを読み込んで、クエリ作成で実行でもいいかな。


やじゅ  2008-12-12 18:55:13  No: 145485

あとは、SQL Server ⇔ mdb ファイルのデータのやり取り
SQL Server 側で置換して、mdbに戻すとかの方がいいかな。
データ件数が多いとVB側で処理するとなると時間がかかり
すぎますね。


みは  2008-12-12 22:41:02  No: 145486

やじゅさんに同意。

繰り返し使わないならアプリ組む必要もないですし処理も面倒かと。
SQLでできるならそれがいいかと。

#SQLのReplace関数ってNULLには置換できなかったですっけ?


Pochi  2008-12-12 23:06:18  No: 145487

やじゅ様、みは様  ご回答ありがとうございます。

>VB経由では使えないが、Access経由からならば利用できます。
>SQL Server ⇔ mdb ファイルのデータのやり取り

ダメだと決め付けていました。できるんですね。確認できました。

質問文にあるとおり私が一回だけ実施すればいいので
Accessで手作業でやってみます。

ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加