我正在尝试将 CSV 文件(逗号分隔)上传到 SQL Server 2012(与 11.0.2100.60)表。为了测试目的,我创建了一个所有列都等于的表,nvarchar(MAX)
因为我只想将数据放入数据库中进行测试。不幸的是,我不断收到以下错误:
消息错误 0xc02020a1:数据流任务 1:数据转换失败。列“列 2”的数据转换返回状态
值 4 和状态文本“文本被截断或一个或多个字符在目标代码页中不匹配。”。(SQL Server 导入和导出向导)错误 0xc020902a:数据流任务 1:“Source - Book2_txt.Outputs[Flat File Source Output].Columns[Column 2]”失败,因为发生了截断,并且“Source - Book2_txt.Outputs[Flat File Source Output] 上的截断行处置].Columns[Column 2]" 指定截断失败。指定组件的指定对象发生截断错误。(SQL Server 导入和导出向导)
错误 0xc0202092:数据流任务 1:处理数据行 3 上的文件“C:\Users\shalinp\Desktop\MISO\junk\Book2.txt”时出错。(SQL Server 导入和导出向导)
错误 0xc0047038:数据流任务 1:SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。Source - Book2_txt 上的 PrimeOutput 方法返回错误代码 0xC0202092。当管道引擎调用 PrimeOutput() 时,组件返回了失败代码。失败代码的含义由组件定义,但错误是致命的并且管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。(SQL Server 导入和导出向导)
我的文件很大,但我创建了一个新文件,其中只有前 4 行数据要测试。不幸的是,stackoverflow 不允许您上传文件,所以我无法提供它(如果我弄错了,请纠正我?)。
但这里是它的剪切和粘贴:
1/1/2010,ARNLD HAZELTON BASE,HAZLTON HAZLTARNOL34_1 1 (LN/ALTW/ALTW),ACTUAL,1,($23.18)
1/1/2010,MANISTIQ_T1_T1_XF,MANISTIQ T1 T1 (XF/WEC/*),,1,($12.47)
1/1/2010,ONT-NYIS BASE,BECK2 BECK2GPACKAR_1 A (LN/ONT/NYISO); BECK2 BECK_BNIAG_3_1 A (LN/ONT/NYISO); BECK2 BECK_ANIAG_3_1 A (LN/ONT/NYISO); STLAWRE1 SAUND_MOSES1_1 A (LN/ONT/NYISO); BECK2 BECK2GNIAG_3_1 A (LN/ONT/NYISO); STLAWRE1 SAUND_MOSES__1 A (LN/ONT/NYISO),ACTUAL,1,($6.05)
1/1/2010,PADDCK_TWNLINE FLO PADDCK_BLACKHWK,TOWNELIN TLR_PAD 1 (LN/ALTE/ALTE),PADDOCK-BLACKHAWK 138 (X-53),1,($3.06)
我怀疑故障发生在第 3 行第 3 列,它有一个长文本字符串:
BECK2 BECK2GPACKAR_1 A (LN/ONT/NYISO); BECK2 BECK_BNIAG_3_1 A (LN/ONT/NYISO); BECK2 BECK_ANIAG_3_1 A (LN/ONT/NYISO); STLAWRE1 SAUND_MOSES1_1 A (LN/ONT/NYISO); BECK2 BECK2GNIAG_3_1 A (LN/ONT/NYISO); STLAWRE1 SAUND_MOSES__1 A (LN/ONT/NYISO)
也就是说,这就是我使用 type 的原因nvarchar(max)
。无论如何,我感谢您的帮助。
谢谢你。