我已成功generated and excel from SSIS package
。
但是every column
有额外的'
(引用)标记为什么会这样?
我的源sql表如下所示
Name price address
ashu 123 pune
jkl 34 UK
在我的sql table
中,我将all column
作为varchar(50)
数据类型。
在Excel Manager
时要创建表格
Excel Destination
将所有列视为相同的varchar(50)
数据类型。
在Data Flow
我已使用Data Conversion transformation
来阻止unicode
转换错误。
请告知我需要更改的位置以获取excel文件中的清晰列。
答案 0 :(得分:2)
单引号或撇号是一种输入任何数据的方式(在Excel中)并确保将其视为文本,因此带有前导零或分数的数字不会被Excel解释为数字或日期。
例如07456的NJ邮政编码将被解释为7456,但输入为'07456则保持其前导零(请注意,示例中的数字是左对齐的,就像文本一样)
我猜SSIS正在添加引号,因为您的数据是VARCHAR类型
答案 1 :(得分:2)
您可以创建一个模板 Excel文件,在该文件中指定了所有列类型(更改为常规文本)和所需的标题。将其存储在/Template
目录中,并将其从SSIS包中复制到您需要的位置。
在您的SSIS包中:
答案 2 :(得分:1)
首先,在SSIS中为您的Excel目标定义字段类型,任何非文本字段都将正确格式化而不使用'。然后,在源和目标之间添加派生列转换,并对任何文本列使用replace语句。 应该是:
(REPLACE(Column1, "'","")
答案 3 :(得分:0)
这给我带来了重大问题!所以我完成了以下内容: 您可以将Excel版本更改为' Microsoft Excel 4.0'在SSIS包中的excel连接管理器中。 然后在excel中按照选项>信托中心>信任中心设置>文件块设置>解开' Open' “Excel 4工作簿”复选框'和'表'。
答案 4 :(得分:0)
使用 Excel 目标时,这是一个特殊问题,至少对于旧版本的 SSIS。为了回答为什么的问题,微软文档中有这个:
<块引用>将数据保存到 Excel 目标位置时,包含在 Excel 驱动程序中的 Jet 提供程序的以下行为可能会导致意外结果。
<块引用>保存文本数据。当 Excel 驱动程序将文本数据值保存到 Excel 目标位置时,驱动程序在每个单元格中的文本前面加上单引号字符 (') 以确保保存的值将被解释为文本值。如果您拥有或开发其他读取或处理保存数据的应用程序,您可能需要对每个文本值前面的单引号字符进行特殊处理。
取自https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008-r2/ms137643(v=sql.105)