Dynamic CREATE TABLE命令仅创建“常规”列数据类型(Excel连接)

时间:2012-12-11 18:22:28

标签: sql-server-2008 excel ssis oledb openrowset

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

目前的流程使用SSIS如下:

  1. 生成CREATE TABLE字符串。
  2. 在带有Excel CM的Execute Sql任务中使用该字符串,这将创建一个Excel文件。
  3. 生成INSERT INTO OPENROWSET... SELECT FROM ...命令字符串。
  4. 在带有SQL SERVER CM的Execute Sql任务中使用此字符串。
  5. 问题是创建的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
    

1 个答案:

答案 0 :(得分:1)