SQL Server BCP不接受管道格式文件中的字段终止符

时间:2011-04-08 14:33:35

标签: sql-server bcp

我正在创建一个BCP IN进程,以将管道分隔文件加载到表中。 BCP实用程序在xml格式文件 的第4行第51行给出错误 错误= [Microsoft] [SQL Server Native Client 10.0] [SQL Server]语法错误运行。格式文件的第一行如下:

<?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="|", MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS" />

错误的位置在“|”处FIELD条目。我尝试了单引号和双引号的各种变体,管道前后没有引号和斜线,但错误总是在同一点抛出。

文件本身只是多行数据,在文件的顶部和底部有管道分隔符和短标题/预告片记录。

2 个答案:

答案 0 :(得分:2)

不确定这是否是问题,但是终结者属性后面的逗号看起来不正确

TERMINATOR = “|” 的

答案 1 :(得分:2)

我无法从这个问题中看出来,但如果这与命令窗口,批处理文件和/或不那么微妙的平面文件操作有关,那么你可能会遇到管道角色的事实有一个非常具体的用途。在这些环境中有许多模糊的方法可以“逃避”特殊角色......虽然我在战斗时从未找到任何可靠的文档,但随着时间的推移,我确定使用一个或多个引号,^,和&amp;经常会解决我的问题。例如,您可以小心地尝试以下操作:

<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="^|", MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS" />

<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="&|", MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS" />

当然它可能只是@Conrads逗号问题,在这种情况下忽略所有这些。