我想将数据库中的所有表导出到 Excel 文件。该过程应该是动态的,因为数据库中的表可能会有所不同。
当前进程使用SSIS如下:
- 生成一个
CREATE TABLE
字符串。 - 在带有 Excel CM的任务中使用该字符串
Execute Sql
,这将创建一个 Excel 文件。 - 生成
INSERT INTO OPENROWSET... SELECT FROM ...
命令字符串。 Execute Sql
在带有 SQL SERVER CM的任务中使用此字符串。
问题是创建的 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