【发布时间】:2025-11-23 12:25:01
【问题描述】:
我有一个包含十几个项目的 SSIS 控制流,运行此包的目标是在 SQL 中运行一些更新语句,然后运行查询以获取输出数据并将其写入 Excel 文件。所以我所做的是在我想要写入 Excel 的处理结束时创建一个“数据流任务”。转到“数据流”选项卡后,我添加了一个 OLE DB 源并设置连接并添加了一个 SQL 命令。这个 SQL 命令是生成我想要写入 Excel 的输出的原因。输出只有 1 列,我也在 OLE DB 源中映射。
之后,我添加了一个“Excel 目标”对象。然后,我在我们的网络上创建了一个与 Excel 文件的新连接,我希望在该文件中写入数据。我可以在文件中选择 Excel 工作表的名称,然后单击“映射”项。问题是“映射”页面上的“输入列”不允许我选择一个字段,它只有“忽略”。
我尝试使用 SSIS 创建 Excel 表(不起作用),并且我还在 SSIS 之外创建了 Excel 文件(不起作用),我不知道如何解决这个问题.
编辑:1)这确实创建了 excel 表,我能够在 Excel 目标对象上将两个字段映射在一起,但是我在对象上有一个红色的“X”,上面写着:XXX 列无法在 unicode 和非-unicode 数据类型。只要它有一个红色的“X”,我就不能使用这个对象。此外,在我正在使用的另一个 Excel 目标对象上,我在 SSIS 中以完全相同的方式创建表,但收到一条警告,说明将发生截断
2) 我正在使用带有 SP1 的 VS2008 进行开发。数据库是 SQL 2008r2。 excel 文件是 XLSX 文件,我的 Excel 连接管理器设置为使用 Office 2007。
3) 我与红色“X”的连接的列的数据类型是 DT_STR,长度为 50。我与 WARNING 的连接的列的数据类型是 DT_WSTR,长度 = 306。这些是只读的。
【问题讨论】:
-
(1) 当您说“我尝试使用 SSIS 创建 Excel 表(不起作用)...”时,发生了什么?如果有错误消息,您何时收到错误消息,消息是什么? (2) 另外,SQL Server 和 MS Office 的版本是什么? (3) 当您 dbl-click 数据流中的绿色箭头时(始终记住要 dbl-click 它——这不仅仅是显示元数据——它还 UPDATES 元数据)......该列的数据类型? ((参见表“将集成服务数据类型映射到数据库数据类型”,msdn.microsoft.com/en-us/library/ms141036%28v=sql.100%29.aspx))
-
我在 OP 中回答了这些问题。答案太长,无法放入 cmets