在SSIS中使用执行SQL任务-创建的Excel文件-包含多个列和不同的数据类型。这里的问题是即使Excel表是使用Int / Money数据类型创建的,INT / Money列仍在Excel中显示为文本列< / p>
我尝试使用双精度CY数据类型,但没有解决。
CREATE TABLE `Employer` (
`MEMBERSHIP NUMBER` VARCHAR(30),
`RETIREE #` VARCHAR(12),
`COPID` CHAR(6),
`PERSON LAST NAME` VARCHAR(150),
`FIRST NAME` VARCHAR(150),
`RETIREE PLAN` CHAR(15),
`PLAN NAME` CHAR(200),
`BILL GROUP` INT,
`BRANCH ID` CHAR(3),
`CONTRACT NUMBER` CHAR(5),
`PBP` CHAR(3),
`BRANCH NAME` VARCHAR(150),
`COVERAGE MONTH` DATE,
`DUE AMOUNT` INT
)
预期输出应为输入数据类型格式。
答案 0 :(得分:1)
即使您可以使用OLE DB命令在Excel中创建表,Excel文件也不是数据库,其中的列具有数据类型。 OLE DB提供程序仅读取表格数据,并且需要为每一列指定一种数据类型。因此,即使excel能够在同一列中存储多种数据类型,也必须在处理Excel时指定列数据类型。
使用OLE DB提供程序读取Excel的缺点之一是,如果列包含混合数据类型,则它仅读取主要数据类型并将所有剩余数据类型转换为NULL
。
另一方面,excel中有一个Cell属性,称为Number Format,用于更改值在Excel中的显示方式。您可以使用此属性将值显示为“货币”。
您可以使用两种方法来解决此问题:
您可以使用Interop.Excel.dll程序集添加脚本任务并更改整个列数字格式。
您可以创建一个Excel文件,并根据需要更改“数字格式”列,并将此文件用作模板。您可以将文件复制到目标目录,然后执行数据导入阶段。