【发布时间】:2012-12-11 18:22:28
【问题描述】:
我想将数据库中的所有表导出到 Excel 文件。该过程应该是动态的,因为数据库中的表可能会有所不同。
当前进程使用SSIS如下:
- 生成
CREATE TABLE字符串。 - 在带有 Excel CM 的
Execute Sql任务中使用该字符串,从而创建一个 Excel 文件。 - 生成
INSERT INTO OPENROWSET... SELECT FROM ...命令字符串。 - 在带有 SQL SERVER CM 的
Execute Sql任务中使用此字符串。
问题是创建的 excel 文件列类型都是“通用的”,即使我的脚本另有说明。
CREATE TABLE 脚本示例:
CREATE TABLE `CONTACT1`
(
[ACCOUNTNO] LongText,
[COMPANY] LongText,
[CREATEON] datetime,
[CREATEAT] LongText,
)
“玩”数据类型没有帮助。比如用VARCHAR(1000)代替LongText等
我尝试生成xlsx 和xls 文件。
这个问题使我无法稍后使用*INSERT INTO OPENROWSET(...) SELECT FROM ...* 命令插入数据。 INSERT INTO 脚本示例:
INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=c:\\junk \\accountnoWithNoApps.xlsx;HDR=YES;IMEX=1\"',
'SELECT [accountno], [COMPANY], [CREATEON], [CREATEAT] FROM [CONTACT1$]')
SELECT [accountno], [COMPANY], [CREATEON], [CREATEAT] FROM CONTACT1
【问题讨论】:
标签: sql-server-2008 excel ssis oledb openrowset