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ファイルをインポートする」のご紹介でした。









