Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/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 Server 2005_Ssis_Import From Excel - Fatal编程技术网

Sql server 2005 导入数据向导不喜欢我为列选择的数据类型

Sql server 2005 导入数据向导不喜欢我为列选择的数据类型,sql-server-2005,ssis,import-from-excel,Sql Server 2005,Ssis,Import From Excel,当您将数据从Excel文件导入MSSQL Server 2005时,如果某些列主要包含数字数据,但即使将列类型设置为varchar,向导也无法导入无法解析为数字的字段,其他人是否也会遇到同样的问题?尝试此操作(注意:这些说明基于Excel 2007) 以下步骤应强制Excel将列视为文本: 用Excel打开电子表格 单击列标题,选择包含“大部分数字数据”的整个列 单击功能区菜单上的“数据”选项卡 选择文本到列。这将打开“将文本转换为列”向导 -在步骤1:单击下一步 -在步骤2:单击下一步 -在步

当您将数据从Excel文件导入MSSQL Server 2005时,如果某些列主要包含数字数据,但即使将列类型设置为varchar,向导也无法导入无法解析为数字的字段,其他人是否也会遇到同样的问题?

尝试此操作(注意:这些说明基于Excel 2007)

以下步骤应强制Excel将列视为文本:

用Excel打开电子表格

单击列标题,选择包含“大部分数字数据”的整个列

单击功能区菜单上的“数据”选项卡

选择文本到列。这将打开“将文本转换为列”向导

-在步骤1:单击下一步

-在步骤2:单击下一步

-在步骤3:选择文本并单击Finish

保存您的Excel工作表


使用SQL Server 2005导入数据向导重试导入。

您需要编辑SSIS使用的连接字符串。将其添加到字符串“IMEX=1;”(无引号)的末尾,该字符串告诉SSIS/jet不要尝试找出数据类型。只需导入它们。

创建一个新列,该列是撇号+要导入的列的内容。这将迫使它成为一个字符串


=“'”&E2

您可以尝试调整Jet设置以导入Excel数据。在给定导入期间,尝试确定列类型时,可以强制Jet引擎对整个图纸进行采样。更改以下注册表项(在首先进行备份之后),然后查看是否这样做:

HKLM\Software\Microsoft\Jet\4.0\Engines\Excel
或者在x64上

HKLM\Software\Wow6432Node\Microsoft\Jet\4.0\Engines\Excel

将值TypeGuessRows设置为零。这将迫使Jet对所有行进行采样以确定列类型。

在HDR设置生效之前添加IMEX=1

这是最好的解决方案:

  • 单击功能区菜单上的“文件”,然后单击“选项”

  • 单击“高级”,然后在“计算此工作簿时”下,选中“将精度设置为显示的精度”复选框,然后单击“确定”

  • 单击“确定”

  • 在工作表中,选择要格式化的单元格

  • 在“主页”选项卡上,单击旁边的对话框启动器按钮图像 号码

  • 在“类别”框中,单击“编号”

  • 在“小数位数”框中,输入所需的小数位数 您想要显示


  • 不幸的是,我有excel 2002。为了解决这个问题,我不得不将我的工作表保存为以制表符分隔的txt文件。这带来了其他的麻烦,但经过一些推敲后还是奏效了。我认为在Excel2002中,文本到列选项位于“数据”菜单下。这似乎对我也适用。(使用Excel 2007)。然而,逗号正从47100这样的值剥离为47100,这是不可接受的。(值不是数字!它是用逗号分隔的47和100)。真的很难相信这是一个多么大的问题,这么多人对此表示失望,但没有真正简单的答案。一个小小的变化。。。我选择了整个列,右键单击,格式化单元格->并在第一个选项卡上选择了“文本”。这似乎可以读取每列的每一行。对于多行的大张纸,这可能需要很长时间。然而,另一种选择是,系统猜测给定的列应该是基于前100行左右的数字或日期,然后在第748456行,它失败并终止整个过程,您可以重新开始。