いつもお世話になっております。
csvファイルを読み込み 既存のテーブルにUPDATEしようとしていますが、
どうLOOPすればいいかよくわかりません。
レコードが130行ぐらいあります。
環境は
vb6.0 oracle 9 です。データベースとの接続はoo4o使ってます。
Dim strCSVLine As String 'CSVレコード
Dim intFp As Integer 'ファイル番号
Dim strFlie As String 'CSVファイル
Dim strSqlmsg As String 'SQL文格納
strFlie = dir(\*.csv)
intFp = FreeFile
Open strFile For Input As #intFp
Call CoOrcl_Connect ' DBと接続
Do While Not EOF(intFp)
Line Input #intFp, strCSVLine
strSqlmsg = "UPDATE JOKENMST SET ShOHINCD =strCSVLine "
loop
提示コード中の「Do」「Loop」がどのような意味を持っているか理解していますか?
>どうLOOPすればいいかよくわかりません。
貴方が既に示されているLOOP方法で良いと思いますが。。。
>Do While Not EOF(intFp)
> Line Input #intFp, strCSVLine
> strSqlmsg = "UPDATE JOKENMST SET ShOHINCD =strCSVLine "
>loop
もしかしてSQL文が記述できないと言いたいのでしょうか?
それではまず、csvと言っていますからカンマ区切りなのでしょう。
ではそのカンマ区切りで区切ってSQL文を生成すればよいです。
SQL文自体は貴方しか仕様を知らないので貴方自身で作っていく
しかないですよ(条件文など)。
通ってみた 2007/06/04(月) 20:19:44
提示コード中の「Do」「Loop」がどのような意味を持っているか理解していますか?
はい、
ただのLOOPさせるのはわかりますけど、
それをテーブルにUPDATAするのがちょっとわからないです。
テーブルのレコードも130ぐらいありますので
モーヲタ様
CSVファイルとテーブルのレイアウトはまったく同じです。
テーブルの主キーと内容が違っていればUPDATAしようと思います。
こういう場合って テーブルもLOOPさせないと全レコードをUPDATE
するのはむりですか?
>CSVファイルとテーブルのレイアウトはまったく同じです。
であればプログラム作るよりもSQLLoader使った方が速そうな気も。。。
>テーブルの主キーと内容が違っていればUPDATAしようと思います。
>こういう場合って テーブルもLOOPさせないと全レコードをUPDATE
>するのはむりですか?
いいえ、UPDATEしようとする条件文のレコードが既にデータベースに
存在するか問い合わせれば良いです(SELECT文で)。
または反則技ではありますが強引に更新して重複エラーが起きたら
UPDATE文を発行するとか。。。(例外処理で引っかける)
#やはりDB関連の質問でしたか。
#質問内容が「どうLOOPしたらよいか分かりません」では
#回答者みなさん、LOOPの仕方が分からないのかなって思いますよ。
#質問は相手(回答者)に分かるように質問しましょう。
すみません。 やっぱり そうでした。
DBの全レコードをひとつの変数格納してから 実行したら
全レコードがUPDATEできました。 ありがとうございました。
| ツイート |
|