掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
CSVファイルをDBへ転送したいです (ID:32390)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
CSVファイル(カンマ区切り)を読み込んで、読み込んだレコードと、 それに対応するDB(Oracle)内レコードを更新するツールを作成しているのですが、困っています。 現在作成中のコードはコチラ↓ procedure TForm7.Button5Click(Sender: TObject); function RemoveToken(var s:string;delimiter:string):string; begin //読み込んだ文字列を、 カンマ区切りで切り取る関数(内容省略) end; var s: string; csvFile : TextFile; FieldData : array [1..12] of string; begin AssignFile(csvFile,'アドレス\ファイル名.csv'); Reset(csvFile); try try while not Eof(csvFile) do begin Readln(csvFile,s); //Fielddataにカンマで切り取った文字を格納していく Fielddata[1] := RemoveToken(s,delimiter); Fielddata[2] := RemoveToken(s,delimiter); Fielddata[3] := RemoveToken(s,delimiter); Fielddata[4] := RemoveToken(s,delimiter); Fielddata[5] := RemoveToken(s,delimiter); Fielddata[6] := RemoveToken(s,delimiter); Fielddata[7] := RemoveToken(s,delimiter); Fielddata[8] := RemoveToken(s,delimiter); Fielddata[9] := RemoveToken(s,delimiter); Fielddata[10] := RemoveToken(s,delimiter); Fielddata[11] := RemoveToken(s,delimiter); Fielddata[12] := RemoveToken(s,delimiter); Query1.sql.clear; //条件にあてはまるレコードを更新 Query1.sql.add ('update MEIBO set カラム1 = :Fielddata[1] where カラム2 = :Fielddata[2] and カラム7 = :Fielddata[7] and カラム9 = :Fielddata[9] and カラム11 = :Fielddata[11] and カラム12 = :Fielddata[12]'); //パラメータに値を代入 Query1.Params[0].Asstring := Fielddata[1]; Query1.Params[1].Asstring := Fielddata[2]; Query1.Params[2].Asstring := Fielddata[7]; Query1.Params[3].Asstring := Fielddata[9]; Query1.Params[4].Asstring := Fielddata[11]; Query1.Params[5].Asstring := Fielddata[12]; Query1.ExecSQL; end; except raise Exception.create('データを読み込めません'); end; Finally CloseFile(csvFile); end; messageDlg('データ転送終了',mtConfirmation,[mbok],0); end; と、これでできるかと思うのですが、 「Query1.ExecSQL;」の時点で固まってしまいます。 (カーソルが砂時計SQLのままです。) エラーメッセージは出ないので、何が間違っているのかわからない状態です。 どこか間違っていれば教えてください。 また、違う方法があればそちらもよろしくお願いします。 この方法だと何千件ものデータを処理するには あまりにもスマートじゃない気が・・・。 長文失礼いたしました。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.