我正在尝试将CSV文件(逗号分隔)上传到SQL Server 2012(vs 11.0.2100.60)表。为了测试目的,我创建了一个所有列等于nvarchar(MAX)
的表,因为我只想将数据放入数据库进行测试。不幸的是,我一直收到以下错误:
消息错误0xc02020a1:数据流任务1:数据转换失败。 “Column 2”列的数据转换返回状态
值4和状态文本“文本被截断或一个或多个字符 在目标代码页中没有匹配。“。(SQL Server导入和导出 向导)错误0xc020902a:数据流任务1:“来源 - Book2_txt.Outputs [平面文件源输出] .Columns [Column 2]“失败 因为截断发生,截断行处置 “Source - Book2_txt.Outputs [平面文件源输出] .Columns [Column 2]“指定截断失败。发生截断错误 指定组件的指定对象。 (SQL Server导入 和导出向导)
错误0xc0202092:数据流任务1:错误 处理文件时发生 数据行3上的“C:\ Users \ shalinp \ Desktop \ MISO \ junk \ Book2.txt”。(SQL 服务器导入和导出向导)
错误0xc0047038:数据流任务1: SSIS错误代码DTS_E_PRIMEOUTPUTFAILED。 PrimeOutput方法 Source - Book2_txt返回错误代码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)
那就是说,这就是我使用nvarchar(max)
类型的原因。无论如何,我很感激帮助。
谢谢。