SQL Server:批量插入带有计算列的表

时间:2017-11-22 14:05:20

标签: sql sql-server calculated-columns sqlbulkcopy

我尝试将文本文件中的数据插入带有bcp的计算列的SQL Server 2016表中。

我的bcp命令:

bcp Test.dbo.myFirstImport IN D:\myFirstImport.txt -f D:\myFirstImport.xml –T

我的表:

CREATE TABLE [dbo].[MyFirstImport](
       [PersonID] [smallint] NULL,
       [FirstName] [varchar](25) NULL,
       [LastName] [varchar](30) NULL,
       [BirthDate] [date] NOT NULL,
       [YearMonthCom]  AS (datepart(year,[BirthDate])*(100)+datepart(month,[BirthDate])) PERSISTED
) ON [PRIMARY]

我的数据(标签分隔):

1   Anthony   Grosse      1980-02-23
2   Alica     Fatnowna    1963-11-14
3   Stella    Rosenhain   1992-03-02

我的格式文件:

<?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="\t" MAX_LENGTH="7"/>
  <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="25" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="30" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="11"/>
  <!--
  <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="11"/>
  <FIELD ID="5" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="12"/>
  -->
 </RECORD>
 <ROW>
  <COLUMN SOURCE="1" NAME="PersonID" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="FirstName" xsi:type="SQLVARYCHAR"/>
  <COLUMN SOURCE="3" NAME="LastName" xsi:type="SQLVARYCHAR"/>
  <COLUMN SOURCE="4" NAME="BirthDate" xsi:type="SQLDATE"/>
  <!--
  <COLUMN SOURCE="5" NAME="YearMonthCom" xsi:type="SQLINT"/>
  -->
 </ROW>
</BCPFORMAT>

我的错误

  

SQLState = 37000,NativeError = 1934   错误= [Microsoft] [SQL Server的ODBC驱动程序11] [SQL Server] Fehler bei INSERT,   da die folgenden SET-Optionen falsche Einstellungen aufweisen:“QUOTED_IDENTIFIER”。 ÜberprüfenSie,ob die SET-OptionenfürdieVerwendung mit indizierte Sicht   en und / oderIndizesfürberechneteSpalten und / oder gefilterte Indizes und / oder   Abfragebenachrichtigungen und / oder XML-Datentypmethoden und /oderVorgängefürrä   umliche Indizes richtig sind。   BCP副本失败

用英语

  

INSERT失败,因为以下SET选项的设置不正确:“QUOTED_IDENTIFIER”。验证SET选项是否正确用于计算列和/或筛选索引和/或查询通知和/或XML数据类型方法和/或空间索引操作的索引视图和/或索引

1 个答案:

答案 0 :(得分:1)

我创建了另一个没有该计算列的表,并且bcp工作,只是为了确保它是计算列的问题。 然后我重新创建了表(带有计算列),并将QUOTED_IDENTIFIER设置为ON - 请参阅雅各布的评论 - 它仍然无法正常工作。 但是当我用-q启动bcp时它起作用了。谢谢你,雅各布!