我在将 .xls 导入 SQL 时遇到问题。Excel 文件的列中的某些单元格包含超过 2000 个文本字符,因此在导入时我将nvarchar
每列更改为 4000。导入有效,但一列将单元格截断为 255 个字符。我检查了一下,列是 nvarchar (4000, null) 但 SELECT MAX(LEN(column)) = 255,这很奇怪。我试图更改nvarchar
为,varchar(4000)
但这不被接受。消息是:
[来源信息] 表:`Sheet1$` 栏目:q1 列类型:VarChar SSIS 类型:Unicode 字符串 [DT_WSTR] [目的地信息] 表:[dbo].[Sheet1$] 栏目:q1 列类型:varchar SSIS 类型:字符串 [DT_STR]
奇怪的是,一列具有源类型:LongText 和目标类型:nvarchar,默认情况下显示最大字符,并且在导入时,该特定列(超过 255 个字符)的一切都很好。对于所有其他列nvarchar
,nvarchar
但即使更改为 4000 或 3000 个字符,也会在 255 处中断。
我尝试将 Excel 文件重新保存为 .csv 格式,但 SQL 显示正在执行(错误):
任务 1:数据转换失败。“第 13 列”列的数据转换返回状态值 4 和状态文本“文本被截断或一个或多个字符在目标代码页中不匹配 任务 1:“输出列“列 13”(62)”由于发生截断而失败,并且“输出列“列 13”(62)”上的截断行处置指定截断失败。指定组件的指定对象发生截断错误。 任务 1:处理文件时出错 当管道引擎调用 PrimeOutput() 时,组件返回了失败代码。失败代码的含义由组件定义,但错误是致命的并且管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息
我不能要求客户重新导入数据并将其保存为 .csv 格式。
是否可以以 SQL 可接受的方式格式化 Excel 版本,例如源类型:LongText 和目标类型:nvarchar?(我不知道为什么varchar
对我不起作用)
我已经为 Excel 使用了简单的任务,例如将单元格更改为文本或将一列复制粘贴为文本格式。