gpt4 book ai didi

ssis - 为什么 Excel 源认为我的查询有参数?

转载 作者:行者123 更新时间:2023-12-01 16:03:32 24 4
gpt4 key购买 nike

我当前项目的一部分涉及使用 SSIS 包将具有多个选项卡的 Excel 2007 电子表格转换为相同数量的竖线分隔的平面文件。我有一个数据流任务,它打开 excel 文件并选择所有选项卡的名称和对象变量。 for each 循环中的第二个数据流任务尝试从每个选项卡读取前 32 列。第二个数据流任务中的 excel 源被设置为使用来自变量的 sql 命令,变量是一个表达式,它将选项卡名称替换为其他常量 sql 语句,如下所示:

SELECT F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, F16, F17,
F18, F19, F20, F21, F22, F23, F24, F25, F26, F27, F28, F29, F30, F31, F32
FROM [Securities Portfolio$]

Excel 连接管理器中的“第一行有列名”框未标记。

事情是这样的:这适用于大多数选项卡。上面的一个有效。但是,其中三个导致以下错误:

The SQL command requires 2 parameters, but the parameter mapping only has 0 parameters.

我修改了包以打印日志文件中使用的所有 SQL 语句。唯一的区别在于选项卡名称。没有一个有任何问号,我认为这是 SSIS 用来标记参数的。我不知道是什么原因导致的,甚至不知道失败的 SQL 查询与有效的 SQL 查询有何不同:

SELECT F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, F16, F17,
F18, F19, F20, F21, F22, F23, F24, F25, F26, F27, F28, F29, F30, F31, F32
FROM [Capital - Part1$]
SELECT F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, F16, F17,
F18, F19, F20, F21, F22, F23, F24, F25, F26, F27, F28, F29, F30, F31, F32
FROM [Capital - Part2$]
SELECT F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, F16, F17,
F18, F19, F20, F21, F22, F23, F24, F25, F26, F27, F28, F29, F30, F31, F32
FROM [Securities Sources$]

如有任何帮助,我们将不胜感激。

最佳答案

好的,我已经弄明白了,我会把它写在这里以防其他人有类似的问题,因为我在谷歌上花了几个小时试图弄清楚发生了什么。

事实证明,并非所有工作表实际上都有 32 列。起初我没有想到这可能是个问题,因为当您在 Excel 中打开 Excel 文件时,如果您滚动更多,总会有更多的列。然而,Microsoft Jet 读取 Excel 文件的方式是,每个工作表都有固定数量的列。

导致该问题的工作表是列数少于 32 的工作表。如果只有 30 列并且我尝试选择 F32,Microsoft Jet 假定 F32 应该是参数的名称。据我所知,SSIS 2008 不允许您设置与 Jet 一起使用的参数值,但 Jet 仍会解析您的查询,并在找不到某些列名称时确定是否需要参数。

为了解决这个问题,我更改了获取工作表名称的步骤以同时返回每个工作表中的列数,然后更改查询以对任何不存在的列返回 NULL。因此,对于只有 30 列的工作表,我现在运行:

SELECT F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, F16, F17, F18,
F19, F20, F21, F22, F23, F24, F25, F26, F27, F28, F29, F30, NULL AS F31, NULL AS F32
FROM [Capital - Part1$]

然后修复它。

关于ssis - 为什么 Excel 源认为我的查询有参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27001774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com