SQL Server批量插入具有最大长度的XML格式文件

时间:2016-09-13 13:02:30

标签: c# sql-server xml bulkinsert

我想将一个XML字段的长度设置为MAX。

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="1" xsi:type="CharFixed" LENGTH="3" />
    <FIELD ID="2" xsi:type="CharFixed" LENGTH="MAXLENGTH"  />
    <FIELD ID="3" xsi:type="CharFixed" LENGTH="10" />
    <FIELD ID="4" xsi:type="CharFixed" LENGTH="8" />

 </RECORD>
 <ROW>
    <COLUMN SOURCE="1" NAME="Field1" xsi:type="SQLNVARCHAR"/>
    <COLUMN SOURCE="2" NAME="Field2" xsi:type="SQLNVARCHAR"/>
    <COLUMN SOURCE="3" NAME="Field3" xsi:type="SQLNVARCHAR"/>
    <COLUMN SOURCE="4" NAME="Field4" xsi:type="SQLNVARCHAR"/>   
 </ROW>
</BCPFORMAT>

但是&#39; MAXLENGTH&#39;似乎不起作用。

错误讯息:

bad value MAXLENGTH for attribute "LENGTH"

有关如何将LENGTH置于最大值的任何建议?

1 个答案:

答案 0 :(得分:0)

字符串的长度限制为4000(nchar)或8000(char)类型。没有max length - 常数 - AFAIC

请参阅this, "Field Attributes"

如果您像SQL Server一样查找架构元数据,您可以点击此链接

http://schemas.microsoft.com/sqlserver/2004/bulkload/format/bulkloadschema.xsd

找到这个

<xsd:attribute name="LENGTH" type="xsd:positiveInteger" use="required"/>
[...]
<xsd:attribute name="MAX_LENGTH" type="xsd:positiveInteger" use="optional"/>

因此lengthrequiredmax_length似乎为optional,但如果您指定它,则必须为正整数。