SQLServerでファイルを取り込む
取り込みフォーマットファイル「ImportDefine.xml」を用意して、「ImportText.txt」を取り込みます。
フォーマットファイルは以下を組み合わせて作成します。
<!-- n文字を読み取る -->
<FIELD ID="1" xsi:type="CharFixed" LENGTH="n"/>
<!-- 「,」まで読み取る -->
<FIELD ID="1" xsi:type="CharTerm" TERMINATOR=","/>
<!-- タブまで読み取る -->
<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="\t"/>
<!-- 行末まで読み取る -->
<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="\r\n"/>
サンプル
取り込みファイル:ImportText.txt
2024/10/09 22:19 1320 DESKTOP-PC\masayasu 10_xxx.txt
2024/10/09 22:19 4400 DESKTOP-PC\masayasu 11_xxx.txt
2024/10/09 22:19 440 DESKTOP-PC\masayasu 1_xxx.txt
2024/10/09 22:19 2200 DESKTOP-PC\masayasu 2_xxx.txt
2024/10/09 22:19 8800 DESKTOP-PC\masayasu 3_xxx.txt
フォーマットファイル:ImportDefine.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="CharFixed" LENGTH="17"/>
<FIELD ID="2" xsi:type="CharFixed" LENGTH="8"/>
<FIELD ID="3" xsi:type="CharFixed" LENGTH="1"/>
<FIELD ID="4" xsi:type="CharFixed" LENGTH="19"/>
<FIELD ID="5" xsi:type="CharFixed" LENGTH="2"/>
<FIELD ID="6" xsi:type="CharTerm" TERMINATOR="\r\n"/>
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="c1" xsi:type="SQLDATETIME" />
<COLUMN SOURCE="2" NAME="c2" xsi:type="SQLINT" />
<COLUMN SOURCE="4" NAME="c3" xsi:type="SQLNVARCHAR" />
<COLUMN SOURCE="6" NAME="c4" xsi:type="SQLNVARCHAR" />
</ROW>
</BCPFORMAT>
実行クエリ
INSERT INTO t_file_info (ファイル名, 日付, サイズ, 所有者)
SELECT c4,c1,c2,c3
FROM OPENROWSET
(BULK 'D:\~\ImportText.txt',
FORMATFILE = 'D:\~\ImportDefine.xml',
FIRSTROW = 1
) AS tbl