0

テーブルに大量の行を一括挿入しようとしています。

私のSQL文:

INSERT INTO [NCAATreasureHunt-dev].dbo.CatalinaCodes(Code)
SELECT (Code)
   FROM OPENROWSET(BULK 'C:\Users\Administrator\Desktop\NCAATreasureHunt\10RDM.TXT',
       FORMATFILE='C:\Users\Administrator\Desktop\NCAATreasureHunt\formatfile.xml') as t1;

10RDM.TXT:

DJKF61TGN7
Q9TVM16Z6Z
X44T4169FN
JQ2PT1ZXZK
C7NW71QPNG
SFJRR1FWKZ
TYZJW1ZPFY
9MR3M1J3N5
QJ6R217JTK
TVJVW19TYT

formatfile.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="C1" xsi:type="CharTerm" TERMINATOR="\r\n"/>
    </RECORD>
    <ROW>
        <COLUMN SOURCE="C1" NAME="Code" xsi:type="SQLNVARCHAR" />
    </ROW>
</BCPFORMAT>

これは私が得ているエラーです:列 'Claimed' に値 NULL を挿入できません。列は null を許可しません。INSERT は失敗します。

Claimed 列をスキップしようとしています。フォーマット ファイルで何が間違っていますか?

4

1 に答える 1

0

この回答が役立つかどうかを確認してください。

XML 形式のファイルでは、bcp コマンドまたは BULK INSERT ステートメントを使用してテーブルに直接インポートする場合、列をスキップできません。ただし、テーブルの最後の列を除くすべての列にインポートできます。最後の列以外をスキップする必要がある場合は、データ ファイルに含まれる列のみを含むターゲット テーブルのビューを作成する必要があります。次に、そのファイルからビューにデータを一括インポートできます。

XML フォーマット ファイルを使用して OPENROWSET(BULK...) を使用してテーブル列をスキップするには、次のように、選択リストとターゲット テーブルで列の明示的なリストを指定する必要があります。

INSERT ... OPENROWSET から選択 (BULK...)

于 2013-03-23T00:29:13.760 に答える