- - PR -
「C#」 SQLServer一括コピーについて
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-10-06 21:37
SQLServerのDBテーブルに、CSVファイルのデータをバルクコピーしたいの
ですが、"C#"で実装する方法がわかりません・・・・・ クライアントマシンから実行したいのですが、クライアントマシンには、 「Enterprise Manager」がインストールでれていないので、 バッチで実行することができません・・・・ どなたか、ご教授願えませんでしょうか。 | ||||
|
投稿日時: 2005-10-06 22:40
お世話になります。
CSVファイルからテーブルにバルクコピーするDTSを作成し、 C#側からそのDTSを叩く。とかはどうでしょうか。 参考 [HOWTO] Visual Basic .NET での DTS パッケージ イベントの使用方法 | ||||
|
投稿日時: 2005-10-07 09:48
こんにちは。こんな感じどうでしょうか。
using System.Data.SqlClient; using(SqlConnection cn = new SqlConnection(接続文字列)) using(SqlCommand cmd = new SqlCommand(@"BULK INSERT TABLE1 FROM 'D:\Data.csv' WITH (FIELDTERMINATOR = ',')", cn)) { cn.Open(); cmd.ExecuteNonQuery(); } | ||||
|
投稿日時: 2005-10-07 10:57
大変お世話になっています。
なおこ(・∀・)さん、momotchiさん、ありがとうございます。 DTSについてですが、CSVファイル名が可変のため、現在使用を見合わせて います。(ご教授頂きながら、申し訳ありません) BULK INSERT文を使用する方法ですが、試してみたのですが、 ファイルがopenできませんというエラーとなってしまいました。 CSVファイルがサーバに存在しているか、共有フォルダネットワークパスで 指定しなければならないことが、分かりました・・・・。 クライアントマシン内にある、CSVファイルを一括コピーすることは 不可能なのでしょうか・・・・ | ||||
|
投稿日時: 2005-10-07 11:14
サーバーの共有ディレクトリにコピーしてから momotchiさんの方法を実行する、とかはどうでしょう。 | ||||
|
投稿日時: 2005-10-07 11:24
なおこ(・∀・)さん返信ありがとうございます。
当初、サーバの共有ディレクトリにコピーするという 案もあったのですが、Windows認証の問題がでてきてしまいました・・・ すべてのクライアントが、サーバにアクセスできるのはセキュリティ 的に、あまりよくないということで、廃案になってしまったのです。 最初の書きこみに条件が足りずに申し訳ありません・・・ | ||||
|
投稿日時: 2005-10-07 11:35
お世話になります。
そうなんですか。 そうなると、DataAdapterやらDataSetやらDataTableやらを使って、 ローカルのCSVファイルをDataTableに流し込んで、 DataAdapter.Update(DataSet)しか、私は思いつかないです…。 | ||||
|
投稿日時: 2005-10-07 12:05
試したことはないので想像ですが、
・DTS パッケージを作成 ・一括挿入 タスクを作成 ・動的プロパティ タスクを作成し、一括挿入タスクの入力ファイル名をグローバル変数にバインド ・COM Interop で DTS.Package オブジェクトを作成 ・GlobalVariables["変数名"] の値を設定 ・実行 でできるような気が少しだけします。 |