2009-04-23 61 views
8

当您将Excel文件中的数据导入到MSSQL Server 2005时,如果某列中主要包含数字数据,是否有其他人有此相同问题,但即使您设置了列类型为varchar,向导将无法导入那些无法解析为数字的字段?导入数据向导不符合数据类型I为列选择

回答

15

试试这个(注:这些指令是基于Excel 2007中)...

下面的步骤应该强制Excel对待列文:

用Excel打开电子表格。

通过单击列标题来选择包含“主要是数字数据”的整个列。

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

选择文本到列。这会显示将文本转换为列向导。

-On步骤1:单击下一步

-On步骤2:单击下一步

-On第3步:选择文本,然后单击Finish

保存您的Excel工作表。

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

+0

不幸的是我有excel 2002.我不得不将我的工作表保存为制表符分隔txt文件来解决这个问题。这引入了其他的头痛,但经过一些按摩后。 – Haoest 2009-04-23 16:43:37

+0

我认为在Excel 2002中,“文本到列”选项位于“数据”菜单下。 – 2009-04-24 02:08:30

5

您需要编辑SSIS使用的连接字符串。将此添加到字符串“IMEX = 1;”的末尾(不含引号)这表明SSIS/jet不会尝试弄清楚数据类型是什么。只需导入它们。

0

创建一个新列,这是一个启动项+您要导入的列的内容。这将迫使它是一个字符串

=“'” & E2

4

您可以尝试导入Excel中的数据调整喷气机的设置。尝试在给定导入期间确定列类型时,您可以强制Jet引擎对整个工作表进行采样。修改以下注册表项(第一制作备份之后),看看有没有不做到这一点:

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

或者在x64

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

设定值TypeGuessRows等于零。这将强制Jet对所有行进行采样以确定列类型。

0

添加IMEX = 1 之前 HDR设置为我工作。

0

这是最好的解决办法:

  1. 单击功能区菜单上的文件,然后点击选项。

  2. 单击高级,然后在计算此工作簿时选择设置精度显示复选框,然后单击确定。

  3. 单击确定。

  4. 在工作表中,选择要格式化的单元格。

  5. 在主页选项卡上,单击 数字旁边的对话框启动器按钮图像。

  6. 在分类框中,单击数字。

  7. 在小数位数框中,输入您要显示的小数位数 。