从.tsv或.txt导入SQL Server错误(使用导入向导)

时间:2017-08-26 22:33:36

标签: sql sql-server csv sql-server-2016

我正在尝试使用SQL Server 2016中的导入和导出向导(使用SSMS)从.tsv(或.txt)平面文件源导入。我有3个文件正在导入,前两个导入没有问题。第三个文件开始导入,但在~100K行之后停止(文件大约为1.6M行)。

我收到的错误消息如下:

  

复制到[dbo]。[文件名](错误)

     

消息

     
      
  • 错误0xc02020a1:数据流任务1:数据转换失败。列“keyword”的数据转换返回状态值4和状态文本“文本被截断,或者目标代码页中的一个或多个字符不匹配”。    (SQL Server导入和导出向导)

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

  •   
  • 错误0xc0202092:数据流任务1:在数据行118345上处理文件“C:............ \ filename.tsv”时发生错误。    (SQL Server导入和导出向导)

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

  •   

第118365行第12栏所载的数据是“Harmon Medical and Rehabilitation Hospital Positions”。这大于50个字符。

源文件采用UTF-8编码。数据库的排序规则为SQL_Latin1_General_CP1_CI_AS。当我进入导入时,我将代码页更改为65001(UTF-8)。

我尝试过的列定义如下:

CREATE TABLE [dbo].[members3] (
    [member_id] nvarchar(100),
    [date] nvarchar(100),
    [email_domain] nvarchar(100),
    [first_name] nvarchar(100),
    [city] nvarchar(100),
    [state] nvarchar(100),
    [zip] nvarchar(100),
    [degree_level] nvarchar(100),
    [hs_or_ged_year] nvarchar(100),
    [pcp_score] nvarchar(100),
    [keyword] nvarchar(100)
);

CREATE TABLE [dbo].[members3] (
    [member_id] varchar(100),
    [date] varchar(100),
    [email_domain] varchar(100),
    [first_name] varchar(100),
    [city] varchar(100),
    [state] varchar(100),
    [zip] varchar(100),
    [degree_level] varchar(100),
    [hs_or_ged_year] varchar(100),
    [pcp_score] varchar(100),
    [keyword] varchar(100)
);

我也尝试将字符数增加到500,但也没有成功。即使我将它接受的字符数更改为大于50的字符,它似乎仍然不允许我导入大于50个字符的数据。我想知道全局设置中是否存在我可能需要更改的内容......

我尝试过搜索有类似问题或相同错误消息的人,但没有遇到任何解决我问题的问题。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

请按以下步骤操作:

1。检查第118345行和第12列(关键字)的值,将其删除并尝试根据生成的错误插入数据:

- "处理文件时发生错误" C:............ \ filename.tsv"在数据行118345上。"

- "数据转换失败。列"关键字"的数据转换返回状态值4和状态文本"文本被截断或目标代码页中的一个或多个字符不匹配。"

问题可能与数据特征有关。

2。要么增加列的大小"关键字"超过(100)或将数据类型更改为Varchar而不是nvarchar。

此致