1

OPENROWSETをBULKコマンドとともに使用して、データをCLOBとしてSQL Serverにロードし、2番目のステップとしてCLOBを解析し、データをテーブルとしてロードリードしたいと思います。

例えば:

SELECT BulkColumn 
FROM OPENROWSET (BULK 'c:\somedir\somefile.txt', SINGLE_CLOB) TheFile

収量:

BulkColumn
Col1,Col2,Col3,1,2,3,1,2,3,1,2,3,1,2,3

これを次のように選択します。

Col1   Col2   Col3
1      2      3
1      2      3
1      2      3
4

2 に答える 2

3

フォーマットファイルを作成し、OPENROWSETまたはBULKINSERTを使用してテキストファイルからデータをインポートします。format.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="1" /> 
  <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="1" /> 
  <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="1" /> 
 </RECORD>
 <ROW>
  <COLUMN SOURCE="1" NAME="Col1" xsi:type="SQLNVARCHAR" /> 
  <COLUMN SOURCE="2" NAME="Col2" xsi:type="SQLNVARCHAR" /> 
  <COLUMN SOURCE="3" NAME="Col3" xsi:type="SQLNVARCHAR" />  
 </ROW>
</BCPFORMAT>

これが重要な行です <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="1" /> 。データが1行の場合、ターミネータ文字は「\ r \ n」ではなく、「、」です。

OPENROWSETの例:

INSERT INTO [your_table]
SELECT      [text_file].[Col1],
            [text_file].[Col2],
            [text_file].[Col3]
FROM OPENROWSET(
BULK N'c:\somedir\somefile.txt',
FORMATFILE = N'c:\somedir\format.xml',
FIRSTROW = 1) AS [text_file]

バルク挿入の例:

BULK INSERT [your_table]
FROM        N'c:\somedir\somefile.txt'
WITH        (FORMATFILE = N'c:\somedir\format.xml')
于 2012-01-10T19:35:07.330 に答える
0

としてインポートしないでくださいOPENROWSET..BULK

BULK INSERTを使用して、列またはOPENROWSETとして単独でインポートできます。

于 2012-01-10T12:28:48.500 に答える