■BCPを使用し、カンマ区切りの形式でファイルを出力する(クエリアナライザーで実行)
bcp [database_name].dbo.実績CSV out D:\実績.CSV -T -c -t ","
bcp "[database_name].dbo.販売実績" out "D:\実績.txt" -T -c ←TAB区切り
■BULK INSERTを使用し、カンマ区切りのCSVファイルをインサートする(コマンドプロンプトで実行)
BULK INSERT 実績.CSV FROM "D:\実績.CSV" With (FIELDTERMINATOR = ',')
BULK INSERT 販売実績 FROM "D:実績.txt" ←TAB区切り
【参考情報】
件名:テキストデータの一括書き込みを行うには
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=21554&forum=26&5
SQLServerのテーブルをVBAでエクスポート。でもクォートがつかない
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=29704&forum=26&8
2. データ転送ツールとしての DTS
http://tipsofvb.net/blogs/tips/archive/2005/06/28/88.aspx
http://www.microsoft.com/japan/msdn/sqlserver/columns/dts/dts1.aspx
BulkInsertTask クラス
http://msdn2.microsoft.com/ja-jp/library/microsoft.sqlserver.dts.tasks.bulkinserttask.bulkinserttask.aspx
BULK INSERT (Transact-SQL) SQL Server 2005 Books Online
http://msdn2.microsoft.com/ja-jp/library/ms188365.aspx
bcpコマンドの説明サイト
http://www.systeminfinity.co.jp/sub/tech/doc/SQLServer_BCP/BCP1.html
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdnsql7/htm/sql7dss4.asp
BULK INSERT では、プロセス間でデータを受け渡す必要がなくなるので、bcp の 2.5 倍のパフォーマンスが達成されます。
BULK INSERT lineitem from ‘e:\lineitem.tbl.1’
理想的には、物理的なプロセッサ 1 つについて 1 つの BULK INSERT を起動するといいでしょう。
たとえば、4 プロセッサ システムでは 4 つの BULK INSERT ステートメントを並列実行し、8 プロセッサ システムでは 8つの BULK INSERT ステートメントを並列実行します。次のコード サンプルは、複数のファイルを使って並列ロードを行っています。
FOR %i IN (1 2 3 4) DO
START isql -Usa -P -Q "BULK INSERT lineitem from lineitem.tbl.%I with (tablock)"
次のコード サンプルは、1 つのファイルを使って並列ロードを行っています。
START isql -Usa -P -Q"BULK INSERT lineitem_table from c:\data\lineitem.tbl"
-FIRSTROW 1 -LASTROW 500000
START isql -Usa -P -Q"BULK INSERT lineitem_table from c:\data\lineitem.tbl"
-FIRSTROW 500001 -LASTROW 1000000