Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 SQL数据库2005中Excel目标处的SSIS数据类型不正确_Sql Server 2005_Ssis_Types_Export To Excel - Fatal编程技术网

Sql server 2005 SQL数据库2005中Excel目标处的SSIS数据类型不正确

Sql server 2005 SQL数据库2005中Excel目标处的SSIS数据类型不正确,sql-server-2005,ssis,types,export-to-excel,Sql Server 2005,Ssis,Types,Export To Excel,我希望有人能帮助我,我已经探索谷歌到死,我只是找不到答案。我不熟悉使用SSIS,所以我不知道这是否可行……我正在将数据从SQL server数据库导出到Excel文件,该文件工作正常,但它将所有数字导出为字符串。然后我必须手动将其转换为数字。数据源肯定是数字的,但SSIS将目标单元格识别为UNICODE字符串。我已尝试更改excel模板中单元格的格式,并尝试使用导入导出向导,但没有效果。我有什么遗漏吗 诀窍是让SSI看到您希望Excel数据是数字。试试这个: 格式化工作表中的单元格并保存 编辑S

我希望有人能帮助我,我已经探索谷歌到死,我只是找不到答案。我不熟悉使用SSIS,所以我不知道这是否可行……我正在将数据从SQL server数据库导出到Excel文件,该文件工作正常,但它将所有数字导出为字符串。然后我必须手动将其转换为数字。数据源肯定是数字的,但SSIS将目标单元格识别为UNICODE字符串。我已尝试更改excel模板中单元格的格式,并尝试使用导入导出向导,但没有效果。我有什么遗漏吗

诀窍是让SSI看到您希望Excel数据是数字。试试这个:

  • 格式化工作表中的单元格并保存
  • 编辑SSIS Excel目标
  • 在“映射”选项卡中,将鼠标光标悬停在假定为数字的目标列上。查看工具提示,查看它是否显示数字数据类型

  • 我使用Excute SQl任务创建excel文件并定义列和数据类型。使用EXCEL连接类型,然后使用“创建表”语句在EXCEL文件中创建选项卡。见下例:

    CREATE TABLE `MyExcelFile` (
         `FIRST_NAME` NVARCHAR(100),
        `MIDDLE_NAME` NVARCHAR(50),
        `LAST_NAME` NVARCHAR(255),
        `BUSINESS_NAME` NVARCHAR(255),
        `ADDR1` NVARCHAR(200),
        `ADDR2` NVARCHAR(200),
        `ADDR3` NVARCHAR(200),
        `CITY` NVARCHAR(100),
        `STATE` NVARCHAR(50),
        `COUNTRY_CD` NVARCHAR(2),
        `ZIP` NVARCHAR(50) 
         `TOTAL_COUNT` INT,
        `TOTAL_AMOUNT` NUMERIC (10,2),
    ) 
    

    谢谢你。我确实尝试过,但当我在SSIS中的映射上悬停时,它仍然显示字符串。我确实找到了另一种方法,那就是在列标题下创建一行,其中包含(虚拟)数值(例如零)。这会欺骗SSI将这些列标识为数字,并将此行下面的数据导出到正确的数据类型中。可能不是最好的方法,但对我有效。澄清一下:这只适用于使用JET OLEDB提供程序(在连接管理器中将Excel版本设置为97-2003)的情况,不适用于我测试过的任何Microsoft.ACE.OLEDB提供程序(12,16)