【发布时间】:2010-10-21 06:05:53
【问题描述】:
是否有其他人有同样的问题,当您将数据从 Excel 文件导入 MSSQL Server 2005 时,如果某些列主要包含数字数据,但即使您将列类型设置为 varchar,向导也无法导入那些解析为数字失败?
【问题讨论】:
标签: sql-server-2005 ssis import-from-excel
是否有其他人有同样的问题,当您将数据从 Excel 文件导入 MSSQL Server 2005 时,如果某些列主要包含数字数据,但即使您将列类型设置为 varchar,向导也无法导入那些解析为数字失败?
【问题讨论】:
标签: sql-server-2005 ssis import-from-excel
试试这个(注意:这些说明基于 Excel 2007)...
以下步骤应强制 Excel 将列视为文本:
使用 Excel 打开您的电子表格。
通过单击列标题选择包含“主要是数字数据”的整个列。
单击功能区菜单上的“数据”选项卡。
选择文本到列。这将打开将文本转换为列向导。
-在第 1 步:点击下一步
-在第2步:点击下一步
-在第三步:选择文本并点击完成
保存您的 Excel 工作表。
使用 SQL Server 2005 导入数据向导重试导入。
【讨论】:
您需要编辑 SSIS 使用的连接字符串。将此添加到字符串“IMEX=1;”的末尾(无引号)这告诉 SSIS/jet 不要试图弄清楚数据类型是什么。只需导入它们。
【讨论】:
您可以尝试调整 Jet 设置以导入 Excel 数据。在给定导入期间尝试确定列类型时,您可以强制 Jet 引擎对整个工作表进行采样。更改以下注册表项(先备份后),看看是否不这样做:
HKLM\Software\Microsoft\Jet\4.0\Engines\Excel
或者在 x64 上
HKLM\Software\Wow6432Node\Microsoft\Jet\4.0\Engines\Excel
将值 TypeGuessRows 设置为零。这将强制 Jet 对所有行进行采样以确定列类型。
【讨论】:
创建一个新列,该列是一个撇号 + 要导入的列的内容。这将强制它成为一个字符串
="'"&E2
【讨论】:
添加 IMEX=1 BEFORE HDR 设置对我有用。
【讨论】:
这是最好的解决方案:
单击功能区菜单上的文件,然后单击选项。
单击高级,然后在计算此工作簿时,选中将精度设置为显示复选框,然后单击确定。
点击确定。
在工作表中,选择要设置格式的单元格。
在主页选项卡上,单击旁边的对话框启动器按钮图像 编号。
在“类别”框中,单击“编号”。
在小数位数框中,输入小数位数 你想显示。
【讨论】: