Sql server 2005 有没有办法强制将截断的列插入SQL Server表中?
数据以电子表格的形式提供给我,我正在将其转换为以管道分隔的文件。我尝试插入46000多行,但其中四(4)行失败,并显示错误消息 SQLState=22001,NativeError=0 错误=[Microsoft][SQL本机客户端]字符串数据,右截断 知道哪些行失败会很好。是否有一种方法可以强制使用截断字符串插入这些行,或者确定哪些行使用BCP失败Sql server 2005 有没有办法强制将截断的列插入SQL Server表中?,sql-server-2005,bcp,Sql Server 2005,Bcp,数据以电子表格的形式提供给我,我正在将其转换为以管道分隔的文件。我尝试插入46000多行,但其中四(4)行失败,并显示错误消息 SQLState=22001,NativeError=0 错误=[Microsoft][SQL本机客户端]字符串数据,右截断 知道哪些行失败会很好。是否有一种方法可以强制使用截断字符串插入这些行,或者确定哪些行使用BCP失败 我已经尝试过构建 在XLSX文件中插入语句 与连接。这失败了,因为 我有太多的参数用于 凹形 我试过逗号和逗号 制表符分隔的文件,失败 因为有些数
bcp TableName的表中^|
您可以设置足够高的错误数以覆盖异常,然后指定错误文件。然后一次处理一个异常。这是最干净的方法。如果您愿意使用SSI,您可以在工作流程中更加详细地处理截断和日志记录,但您将失去批量复制的好处。您使用的是暂存表吗
您通常会使用一个具有大量列长度等的列,然后执行验证和质量检查。即使是一个简单的
INSERT Finaltable (..)
SELECT (..), LEFT (offendingcolumn, 100) FROM Stagingtable
一个存储的进程也可以用来进行批量插入,然后进行一些检查,然后插入到最终的表中。我通过创建一个“而不是”触发器成功地做到了这一点 我用varchar(max)创建了一个表,以确保我没有得到截断。 然后,我在insert上创建了一个instead of触发器(因此这个“代理”表永远不会得到行) 在触发器中,我进行转换(varchar(50),name255)。 Ie:显式执行截断 但是,这意味着您需要使用BCP命令指定“FIRE_TRIGGER” 这有什么帮助