1

我正在尝试使用“导入向导”将数据导入 SQL Server,但失败并显示下面粘贴的错误。我尝试了“建议类型”并将类型手动设置为 varchar 255。我还将全局截断错误设置为忽略但它仍然会停止导入。有没有更简单的方法可以将数据导入 SQL Server?

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

错误 0xc020902a:数据流任务 1:“Source - Vast Tech - Personnel Listing (2)_txt.Outputs[Flat File Source Output].Columns[Position]”失败,因为发生了截断,以及“Source - Vast”上的截断行处置Tech - Personnel Listing (2)_txt.Outputs[Flat File Source Output].Columns[Position]" 指定截断失败。指定组件的指定对象发生截断错误。(SQL Server 导入和导出向导)

错误 0xc0202092:数据流任务 1:处理数据行 511 上的文件“\SANDBOX\Users\bpadgett\Downloads\Vast Tech - Personnel Listing (2).txt”时出错。(SQL Server 导入和导出向导)

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

4

2 回答 2

0

要回答您的问题,不,确实没有更简单的方法可以将数据导入 SQL Server。但是,一旦您习惯了导入向导,它就会相当简单。

您的第二段错误说:

“Source - Vast Tech - Personnel Listing (2)_txt.Outputs[Flat File Source Output].Columns[Position]”上的截断行处置指定截断失败。

我的第一个问题是:目标表中的“位置”列有多宽?是否有可能您的 Position 值对于它来说太宽了?(我假设它varchar在目标表中,但如果不是,那可能是你问题的根源。)

接下来,我很好奇第 511 行中的值是什么,它在哪里遇到了问题。您正在导入的文件是否有可能已损坏或被截断?你没有提到输入格式是什么:如果它是一个 CSV 文件并且你没有使用文本分隔符,那么该行中的一个字段是否有可能在其中包含逗号,从而将所有其他字段超过一个柱子?这可能导致更长的字段被推入“位置”字段的位置。

一种快速的检查方法(如果您使用的是 CSV 文件)是在 Excel 中打开它,将所有列展开到其内容的宽度,然后只看一下第 511 行。如果它被关闭或者您真的这样做了值Position超过 255 个字符,这很明显。

我希望这有帮助。

于 2013-11-15T17:54:03.023 回答
0

一种解决方案是在上下文中设置相同宽度的 nvarchar 值。例如,如果一个字段定义了 FILED NVARCHAR(450),您需要使用 450 设置相同的 OutputColomWidth。

这就是例子。 图像示例

默认情况下,向导模型在字符串类型中设置 50 宽度。

于 2020-04-07T17:05:46.633 回答