【问题标题】:Dynamic CREATE TABLE command creates only "general" column data type (Excel connection)动态 CREATE TABLE 命令仅创建“通用”列数据类型(Excel 连接)
【发布时间】:2012-12-11 18:22:28
【问题描述】:

我想将数据库中的所有表导出到 Excel 文件。该过程应该是动态的,因为数据库中的表可能会有所不同。

当前进程使用SSIS如下:

  1. 生成CREATE TABLE 字符串。
  2. 在带有 Excel CM 的 Execute Sql 任务中使用该字符串,从而创建一个 Excel 文件。
  3. 生成INSERT INTO OPENROWSET... SELECT FROM ... 命令字符串。
  4. 在带有 SQL SERVER CM 的 Execute Sql 任务中使用此字符串。

问题是创建的 excel 文件列类型都是“通用的”,即使我的脚本另有说明。

CREATE TABLE 脚本示例:

CREATE TABLE `CONTACT1`
(
    [ACCOUNTNO] LongText,
    [COMPANY]   LongText,
    [CREATEON]  datetime,
    [CREATEAT]  LongText,
)

“玩”数据类型没有帮助。比如用VARCHAR(1000)代替LongText

我尝试生成xlsxxls 文件。

这个问题使我无法稍后使用*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


    【解决方案1】:

    【讨论】:

    • 我会检查的。谢谢。
    • 好的。我使用了 EPPlus .NET 库并创建了一个包含格式正确的列的 Excel 文件。我尝试在正确的文件上再次使用 OPENROWSET 命令,似乎问题出在 OPENROWSET 命令上。我无法导出超过 255 个字符的文本字段。关于如何在不添加虚拟行的情况下克服这个问题的任何想法?
    • 我使用 VB.NET 创建 excel 文件。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 2013-03-08
    相关资源
    最近更新 更多