【发布时间】:2011-12-01 19:38:11
【问题描述】:
我在 SQL Server 中创建了一个表,例如:
CREATE TABLE [dbo].[
[myId] [smallint] IDENTITY(1,1) NOT NULL,
[name] [nchar](10) NOT NULL,
[value] [int] NOT NULL,
CONSTRAINT [PK_metadado] PRIMARY KEY CLUSTERED
(
[myId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
我想使用 xml 格式化程序在我的表中导入一个文件。我遇到了问题,因为我的桌子上有“myId”。我认为这是 bcp 中的一个错误,因为如果我不添加 myId 列,则导入工作正常。
文件:
Test 0010000290
Xml 格式文件:
<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="CharFixed" LENGTH="10"/>
<FIELD ID="2" xsi:type="CharFixed" LENGTH="5"/>
<FIELD ID="3" xsi:type="CharFixed" LENGTH="5"/>
</RECORD>
<ROW>
<COLUMN SOURCE="3" NAME="value" xsi:type="SQLINT" />
<COLUMN SOURCE="1" NAME="name" xsi:type="SQLCHAR" />
</ROW>
</BCPFORMAT>
输出:
Starting copy...
SQLState = 23000, NativeError = 515
Error = [Microsoft][SQL Server Native Client 10.0][SQL Server]Cannot insert the value NULL into column 'value', table 'XXX.dbo.metadata'; column does not allow nulls. INSERT fails.
SQLState = 01000, NativeError = 3621
Warning = [Microsoft][SQL Server Native Client 10.0][SQL Server]The statement has been terminated.
BCP copy in failed
编辑
@马修马丁: “价值”在我的第一种格式中为空。 如果我使用 null 列
创建这种奇怪的 xml 格式,它会起作用<COLUMN SOURCE="2" NAME="null" xsi:type="SQLCHAR" />
<COLUMN SOURCE="1" NAME="name" xsi:type="SQLCHAR" />
<COLUMN SOURCE="3" NAME="value" xsi:type="SQLINT" />
【问题讨论】:
-
您的问题不清楚:您遇到了什么“问题”?你有错误信息吗?而且我不明白“如果我不使用特殊的 int pk 列它可以正常工作”是什么意思?您需要准确地向我们展示哪些有效,哪些无效。
-
使列可以为空,看看它是如何运行的。我希望特定行为空,或全部为空。无论哪种方式,它都会指向解决方案(1 rouge 行或 bcp 语法仍然不正确)
-
我认为这是 bcp 中的错误。 ://
标签: sql-server bcp