OPENROWSET(BULK)中的跳过列

时间:2013-03-22 23:22:17

标签: sql-server

尝试将大量行大量插入表格。

我的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>

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

我正试图跳过Claimed专栏。我的格式文件中出错了什么?

1 个答案:

答案 0 :(得分:0)

查看此answer是否有帮助。

  

使用XML格式文件时,您无法跳过列   使用bcp命令或BULK直接导入表   INSERT语句。但是,您可以导入除最后一列之外的所有列   一张桌子。如果你必须跳过除最后一列之外的任何一栏,你必须   创建仅包含列的目标表的视图   包含在数据文件中。然后,您可以批量导入数据   将文件存入视图。

     

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

     

INSERT ...从OPENROWSET中选择(BULK ...)