将大城市文本文件导入SQL服务器

时间:2018-02-17 12:40:20

标签: sql-server import sql-server-2012 ssis-2012 import-from-csv

我试图将城市名称的文本文件导入SQL Server 2012.该文件是1.45 GB,我使用SQL Server导入和导出向导来完成这项工作,但每次出现此错误:

  
      
  • 复制到[dbo]。[worldcitiespop](错误)   消息   错误0xc02020a1:数据流任务1:数据转换失败。列" City"的数据转换返回状态值4和状态文本"文本被截断或目标代码页中的一个或多个字符不匹配。"。   (SQL Server导入和导出向导)

         

    错误0xc020902a:数据流任务1:"源 - worldcitiespop_txt.Outputs [平面文件源输出] .Columns [City]"失败,因为截断发生,截断行处置"源 - worldcitiespop_txt.Outputs [平面文件源输出] .Columns [City]"指定截断失败。指定组件的指定对象上发生截断错误。   (SQL Server导入和导出向导)

         

    错误0xc0202092:数据流任务1:处理文件时发生错误" C:\ Users \ elsho \ Downloads \ worldcitiespop.txt \ worldcitiespop.txt"在数据行114091上。   (SQL Server导入和导出向导)

         

    错误0xc0047038:数据流任务1:SSIS错误代码DTS_E_PRIMEOUTPUTFAILED。 Source上的PrimeOutput方法 - worldcitiespop_txt返回错误代码0xC0202092。当管道引擎调用PrimeOutput()时,组件返回失败代码。失败代码的含义由组件定义,但错误是致命的,管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。   (SQL Server导入和导出向导)

  •   

我将表字段大小更改为文本类型以避免数据长度问题,但这没有帮助,请指教。

由于

1 个答案:

答案 0 :(得分:3)

我强烈建议您使用临时表。将表导入到具有宽nvarchar()文本字段的临时表中。

如果您无法成功完成此操作,则数据文件本身可能已损坏。

加载到临时表后,将数据(包含适当的转换)插入最终表单(然后构建索引)。当数据已经在表格中时比在尝试一次又一次地导入数据时更容易找到这样的问题。