Sql server 将大城市文本文件导入SQL server

Sql server 将大城市文本文件导入SQL server,sql-server,import,sql-server-2012,ssis-2012,import-from-csv,Sql Server,Import,Sql Server 2012,Ssis 2012,Import From Csv,我正在尝试将cities name的文本文件导入SQL server 2012。该文件为1.45 GB,我正在使用SQL Server导入和导出向导执行此操作,但每次出现此错误时: 正在复制到[dbo].[worldcitiespop](错误) 信息 错误0xc02020a1:数据流任务1:数据转换失败。列“City”的数据转换返回状态值4和状态文本“文本被截断或一个或多个字符在目标代码页中不匹配。”。 (SQL Server导入和导出向导) 错误0xc020902a:数据流任务1:“源-wo

我正在尝试将cities name的文本文件导入SQL server 2012。该文件为1.45 GB,我正在使用SQL Server导入和导出向导执行此操作,但每次出现此错误时:

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

    错误0xc020902a:数据流任务1:“源-worldcitiespop_txt.Outputs[Flat File Source Output]。列[City]”由于发生截断而失败,并且“源-worldcitiespop_txt.Outputs[Flat File Source Output]。列[City]”上的截断行处理指定截断失败。在指定组件的指定对象上发生截断错误。 (SQL Server导入和导出向导)

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

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

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


谢谢

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

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


加载到staging表后,将数据(经过适当的转换)插入最终表单(然后构建索引)。当数据已经存在于表中时,发现此类问题要比一次又一次地令人沮丧地导入数据时容易得多。

谢谢,使用此解决方案,我可以导入更多行,但我遇到了相同的错误。有没有办法让向导恢复错误?@DainaHodges。如果列很宽并且
nvarchar()
,那么这听起来像是数据文件有问题。您可以使用
bulk insert
lastrow
选项隔离行。这是一个耗时的过程()。有时打开文件并查找任何不一致的地方会有帮助,我非常确定Microsoft NotePad将无法打开此文件,或者至少您将无法使用该文件,即使您在NotePad中打开了它。我用来检查如此大的文件的工具
EmEditor
,有很多很酷的功能,可以让你处理100千兆字节的文件。它还提供了一些功能,可以帮助您查找大型文本、csv文件中的不一致之处。试试免费版本。当然,你会发现它非常有用。谢谢。我会试试的