SQLServerでCSVファイルをインポートする
SQLServerでCSVファイルをインポートする場合、「SQL Server Management Studio」にてインポートウィザードを使用すると簡単にインポートすることが可能ですが、ここではSQLでインポートを行う方法についてご紹介します。
コーディング例
BEGIN SELECT * INTO TBL_TEST FROM OPENROWSET( BULK 'C:\TEST.csv' ,FORMATFILE = 'C:\TBL_TEST.xml' ,FIRSTROW = 2 ) AS TBL; SELECT * FROM TBL_TEST; END
TBL_TEST.xml
<?xml version="1.0"?> <BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <RECORD> <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="12"/> <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="10" COLLATION="Japanese_CI_AS"/> <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="20" COLLATION="Japanese_CI_AS"/> </RECORD> <ROW> <COLUMN SOURCE="1" NAME="ID" xsi:type="SQLINT"/> <COLUMN SOURCE="2" NAME="Code" xsi:type="SQLNCHAR"/> <COLUMN SOURCE="3" NAME="Name" xsi:type="SQLNVARCHAR"/> </ROW> </BCPFORMAT>
TEST.csv
ID,Code,Name 1,00001,テスト1 2,00002,テスト2 3,00003,テスト3
実行結果
ID | Code | Name |
---|---|---|
1 | 00001 | テスト1 |
2 | 00002 | テスト2 |
3 | 00003 | テスト3 |
7行目にある「OPENROWSET」を使用すると指定したCSVファイルをテーブルとして扱うことができます。
ただしCSVファイルの構造を明記したフォーマットファイルが必要となります。
8行目の「BULK」でインポートを行うCSVファイルのパスを指定します。
9行目の「FORMATFILE」でフォーマットファイルのパスを指定します。
これらのパスはDBサーバ上のパスとなります。
10行目の「FIRSTROW=2」によりCSVファイルの2行目から読み込むように設定しています。
こちらの例ではCSVファイルを読み込んだテーブルを新規テーブル「TBL_TEST」として作成しています。
以上、「SQLServerでCSVファイルをインポートする」のご紹介でした。