在 SSIS 中使用执行 SQL 任务 - 创建的 Excel 文件 - 包含多个列和不同的数据类型。这里的问题是 INT/Money 列在 Excel 中显示为文本列,即使 Excel 表是使用 Int/Money 数据类型创建的
我尝试过使用 double 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
)
预期输出应采用输入数据类型格式。
最佳答案
OLE DB 数据类型和 Excel
即使您可以使用 OLE DB 命令在 Excel 中创建表,Excel 文件也不是数据库,其中的列具有数据类型。 OLE DB 提供程序只读取表格数据,并且需要为每一列指定数据类型。因此,处理 Excel 时必须指定列数据类型,即使 Excel 能够在同一列中存储多种数据类型。
使用 OLE DB 提供程序读取 Excel 的缺点之一是,如果列包含混合数据类型,它只会读取主导数据类型并将所有剩余数据类型转换为 NULL
.
- Importing data from Excel having Mixed Data Types in a column (SSIS)
- Mixed data types in Excel column
Excel 数字格式属性
另一方面,Excel 中有一个名为“数字格式”的单元格属性,用于更改值在 Excel 中的显示方式。您可以使用此属性将值显示为货币。
<小时/>解决方案
您可以使用两种方法来解决该问题:
(1) 使用脚本任务更改列号格式
您可以添加脚本任务并使用 Interop.Excel.dll 程序集更改整个列的数字格式。
(2)创建Excel模板文件
您可以创建一个 Excel 文件并根据需要更改列数字格式,并使用该文件作为模板。您可以将文件复制到目标目录,然后执行数据导入阶段。
关于excel - 通过SSIS动态创建Excel表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56279923/