C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: 配列の中身を一気にテーブルに追加する方法のご教授おねがいしま


(過去ログ 120 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■70241 / inTopicNo.1)  配列の中身を一気にテーブルに追加する方法のご教授おねがいしま
  
□投稿者/ ようこ (1回)-(2014/03/04(Tue) 11:50:19)

分類:[VB.NET/VB2005 以降] 

お世話になります。
1次元配列(hai())にデータが10000件あり、これをSQLサーバのT1テーブルのデータ列に代入したいのですが、私が考えた方法は

(コネクションは開かれていると仮定します。)
dim JJ as long
dim SQL as string
dim cn as sqlconnection
dim SQLCOmm as sqlcommand
'//---次々データを追加
for JJ=0 to ubound(hai)
SQL="insert into T1(データ) values(@データ)"
SQLCOmm =NEW sqlcommand
SQLCOmm .parameters.addwithvalu("@データ",hai(JJ))
SQLCOmm.executenonquery
next
この方法では10000件取り込むのに3分以上かかりました。
一気に配列haiの中身をテーブルに追加する方法ってないでしょうか?
よろしくお願いします。
引用返信 編集キー/
■70242 / inTopicNo.2)  Re[1]: 配列の中身を一気にテーブルに追加する方法のご教授おねがいしま
□投稿者/ 魔界の仮面弁士 (553回)-(2014/03/04(Tue) 12:05:08)
No70241 (ようこ さん) に返信
> これをSQLサーバのT1テーブルのデータ列に代入したいのですが、

大量データの取込であれば、
 (案1) SSIS (SQL Server Integration Services) … 旧DTS(データ変換サービス)
 (案2) BULK INSERTステートメント
 (案3) BCP ユーティリティ
などは如何でしょうか。


> dim JJ as long
> for JJ=0 to ubound(hai)
なぜ Long 型を?
UBound 関数の戻り値は Integer ですよ。


> SQL="insert into T1(データ) values(@データ)"
> SQLCOmm =NEW sqlcommand
> SQLCOmm .parameters.addwithvalu("@データ",hai(JJ))
> SQLCOmm.executenonquery
なぜループ内で SQL を作り直しているのでしょうか?
同じコマンドでパラメータが異なるだけで、リクエストは同じなのですから、
SqlCommand の生成はループの外側で行い、ループ内では
パラメータを渡して実行する部分のみを担当した方が良いのでは。
引用返信 編集キー/
■70244 / inTopicNo.3)  Re[2]: 配列の中身を一気にテーブルに追加する方法のご教授おねがいしま
□投稿者/ PANG2 (26回)-(2014/03/04(Tue) 12:41:48)
System.Data.SqlClient.SqlBulkCopy クラス
引用返信 編集キー/
■70245 / inTopicNo.4)  Re[3]: 配列の中身を一気にテーブルに追加する方法のご教授おねがいしま
□投稿者/ ようこ (2回)-(2014/03/04(Tue) 13:16:26)
ありがとうございます。いろいろ方法があるんですね。
一度お調べしてみます。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -