在outpu日志导入失败之前,我收到错误Error - [Microsoft][SQL Native Client] String data, right truncation
大约10次。该错误与其相关的字段有点模糊。 Normaly如果数据集真正处于第3范式,那么这不会成为问题。但是,数据集包含超过125个字段,超过100,000个记录作为制表符分隔的txt文件。在这种情况下,找到违规数据将是一项艰巨的任务。 如何判断SQL 2k5 BCP在导入失败时抱怨哪个字段?如果我能找出错误输出的字段,这将极大地帮助缩小问题范围。
bcp db.dbo.table in "dataset.txt" -f "fmt.table.txt" -S instancename -U user -P password -o log.txt
是的,这是一个更大的故事,但为了简单起见,我将这个特定问题限制在其中。否则进一步要求提出另一个问题。 :)
答案 0 :(得分:1)
问题发生在第112个字段,其中字段被定义为char(1),并且提取的数据字面上“”在每个记录下一直给出2的长度。我这样做是通过将数据作为制表符分隔的文件导入Excel将每个字段设置为文本(至关重要,因为Excel自动将日期字段转换为数值)并将文本限定符设置为“无(Excel执行的另一个转换功能)和将其设置为工作表1.我使用=len(Sheet1!A1)
,=len(Sheet1!A2)
,=len(Sheet1!A3)
等检查第二张表格中数据集中每个数据的字段长度(感谢上帝自动填充)并粘贴第三张表格中的shema信息,用于比较每个字段=max(Sheet2!A1:A126324)
的最大长度。基本问题在于数据的提取方式。
我就是这样做的,但我觉得这远远不是一个很好的方法....
答案 1 :(得分:1)
将空排序规则添加到格式文件中。即
112 SQLCHAR 0 1 "\t" 112 CREDITREPORTADDRINDICATOR ""
我在行终止符之间没有任何内容导入文件以获取null。 确保包含连续的标签。