SQL Server导入向导失败,包含难以理解的消息

时间:2013-01-08 10:07:30

标签: sql-server sql-server-2005 ssis

我只想将平面文件中的两列导入到新表中。我已将一列“代码”设置为varchar(50),将另一列“描述”设置为nvarchar(max)

导入失败,并显示以下消息:

- Executing (Error)
Messages
Error 0xc02020a1: Data Flow Task 1: Data conversion failed. The data conversion for column "Description" returned status value 4 and status text "Text was truncated or one or more characters had no match in the target code page.".
 (SQL Server Import and Export Wizard)

Error 0xc020902a: Data Flow Task 1: The "output column "Description" (14)" failed because truncation occurred, and the truncation row disposition on "output column "Description" (14)" specifies failure on truncation. A truncation error occurred on the specified object of the specified component.
 (SQL Server Import and Export Wizard)

Error 0xc0202092: Data Flow Task 1: An error occurred while processing file "C:\Users\rinaldo.tempo\Desktop\ICD10_Edition4_CodesAndTitlesAndMetadata_GB_20120401.txt" on data row 3.
 (SQL Server Import and Export Wizard)

Error 0xc0047038: Data Flow Task 1: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED.  The PrimeOutput method on component "Source - ICD10_Edition4_CodesAndTitlesAndMetadata_GB_20120401_txt" (1) returned error code 0xC0202092.  The component returned a failure code when the pipeline engine called PrimeOutput(). The meaning of the failure code is defined by the component, but the error is fatal and the pipeline stopped executing.  There may be error messages posted before this with more information about the failure.
 (SQL Server Import and Export Wizard)

错误消息告诉我数据被截断,因为它被放置在“描述”列中,类型为nvarchar(max)!说完输入数据之后,我会说这些描述永远不会超过2或300个字符,所以这是不可能的。

有人能说出这里有什么问题吗?

4 个答案:

答案 0 :(得分:31)

导入中字符串列的默认大小为50个字符。在数据进入数据库之前发生此截断。 您应该在导入向导的第一步中在Columns部分中调整此项。

答案 1 :(得分:2)

错误

  

"文本被截断或目标代码页中的一个或多个字符不匹配。"

当您的源平面文件是Unicode文件并且您的目标列定义为nvarchar(max)时,可能会发生

SSIS通过扫描有限数量的行并推断出有根据的猜测来推断源文件中的数据类型。由于无休止地重复尝试使其工作,它将数据类型OutputColumnWidth的元数据停留在路径的某处50个字符,导致包内部截断。

查看数据源"高级"中的元数据。选项卡以解决​​问题。

答案 2 :(得分:0)

你也可以试试这个。

在高级选项卡中选择所有nvarchar列为Dt_NTEXT,然后在数据转换中,为所有DT_WSTR的别名列选择Nvarchar(Unicode_String)数据字段。

它对我有用:)。试试吧

答案 3 :(得分:0)

在尝试加载275列表时,我也收到了此消息。无论我做了什么,我都无法得到消息。一次更换一列真的很难。修复一个,在另一个中获得错误。还有一些似乎没有解决。

然后我删除了所有":"和","制表符分隔的源文件中的字符,加载得很好。