- 締切済み
大量データ(csv)ファイルのインサート
1分に1回レコードが出力されたログファイルがあります。 これはCSV形式のファイルです。ファイルは15ファイルあります。 各ファイルの列数は違っていて60~260まであります。 必要なデータが記録されている列もファイルによって違いますが 各ファイルともいらない列が半分くらいありデータは無いか"-"になっています。 データは大体整数4桁小数2桁の数値です。 毎月一回集計しないといけないので各ファイルに対応したテーブルを作り データを読み込みたいと思います。 過去分を持つとレコード数が増えるので毎回読み込みからにしたいと思います。 データをテーブルに取り込むやり方を考えています。 VBでシステムを作っているのでファイルを1行ずつ読み 必要なデータをインサートするのがいいのか SQLServerの機能を使って全部読み込むのがいいのか 何を調べて判断すればいいのかアドバイスをお願いします。 VBは2008でSQLServerも2008でやろうかと考えています。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- jamshid6
- ベストアンサー率88% (591/669)
バッチ処理で1行ずつINSERTするのはさすがにナンセンスでしょう。 ・ログファイルはどこにあるのですか? ・SQL Serverのエディションは? サーバにあるなら、BCPユーティリティ、SSIS、xp_cmdshell+BULK INSERTのいずれか ローカルにあるなら、BCPユーティリティかSSIS で実行するのがよいと思います(SSISはStandard以上です)。 SSISはBIDS(VB2008のBusiness Inteligence Development Studio)でグラフィカルに作れますが、プログラミング志向ならばそれ以外の方法も取れます。 あとはサーバ管理者の意見も聞いてみるのがいいでしょう。 (SSISがインストールされていないならインストールする必要があるし、xp_cmdshellは少しセキュリティを緩める必要がありますので)
補足
SQLSeverのエディションは必要な機能に合わせて これから調達します。 取り込むファイルも実行するプログラムも SQLServerも全て同じマシンに用意します。 必要な機能があれば申請するとどうにでもなります。(多分) BCPユーティティがお金もかからず簡単に出来そうな気がしてきました。