[SQL Server] BULK INSERTを使って大量のCSV,TXTファイルのデータをSQLSERVERにインポート。

inno
2013-09-28 12:00 6223 0
作業中にcsvファイルやtxtファイルから大量のデータをインポートする時はあります。
インポート方法は様々ですが、その中でも簡単で高速でインポートが可能な方法を説明します。

その方法はBULK INSERTを使います。

txt(csv)ファイルの内容は下記のとおりに準備をしました。
列区切りはコンマ(,)にしました。

1,Microsoft,2013-01-01
2,Apple,2013-01-02
3,Google,2013-01-03
4,HP,2013-01-04
5,Dell,2013-01-05

では、このデータファイルを「C:\innoya\TestData.txt」で保存したとして
txt(csv)ファイルをSQL SERVERにインポートしてみましょう。

-- #### テーブル作成
CREATE TABLE dbo.TestData
(
Idx int
, Data1 varchar(10)
, RegDate datetime
)
GO

-- #### データを登録
BULK INSERT dbo.TestData
FROM 'C:\innoya\TestData.txt'
WITH 
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO

データを登録するところにファイルが保存されているパスとファイル名を記入して実行します。
そうすると簡単にデータが登録できます。

txt(csv)ファイルのデータの区切りがタブになっている場合は
BULK INSERT文の「FIELDTERMINATOR = ',',」ところを「FIELDTERMINATOR = '\t',」に変更して実行してください。



ここで注意が必要なのはtxt(csv)ファイルを保存する時に
文字コードを「Unicode」で保存が必要です。
「ANSI」、「UTF-8」の方で保存すると
1行のデータが文字化けが発生したりしますので、
「Unicode」で保存して使ってください。

コメント