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

格式文件.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>

这是我得到的错误:无法将值 NULL 插入“已声明”列,列不允许空值。插入失败。

我正在尝试跳过已声明的列。我在格式文件中做错了什么?

4

1 回答 1

0

看看这个答案是否有帮助。

对于 XML 格式文件,当您使用 bcp 命令或 BULK INSERT 语句直接导入表时,不能跳过列。但是,您可以导入到表的最后一列以外的所有列。如果必须跳过除最后一列以外的任何列,则必须创建目标表的视图,该视图仅包含数据文件中包含的列。然后,您可以将该文件中的数据批量导入到视图中。

要使用 XML 格式文件通过 OPENROWSET(BULK...) 跳过表列,您必须在选择列表和目标表中提供明确的列列表,如下所示:

插入...从开放式集中选择(批量...)

于 2013-03-23T00:29:13.760 回答