Nou*_*uny 58 excel ssis codepages import-from-excel sql-server-2008
我有一个包含四个文本列的excel文件:其中一个名为ShortDescription,具有最长的值.我在SQL Server 2008数据库中创建了一个表,其中包含四列,ShortDescription列类型设置为NvarChar(Max).
但是当使用SSIS导入和导出对话框时,即使我将OnTruncation选项设置为Ignore,我仍会在标题中收到上述错误.
我试图清除列数据,并且它成功了(所以我确保问题出在ShortDescription列中).我试图将整个数据复制到另一本excel工作簿,但仍然没有运气.
有任何想法吗 ???
Tet*_*Sig 69
我假设你在SSIS对话框中尝试使用Excel Source导入它?
如果是这样,问题可能是SSIS在创建Excel源时在电子表格的开头采样了一些行.如果在[ShortDescription]列上它没有注意到任何太大的内容,它将默认为255个字符的文本列.
因此,要从包含具有大量数据的行而不截断的列导入数据,有两个选项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel
(如果您的系统是x64,然后在HKEY_LOCAL_MACHINE\SOFTWARE\wow6432node\Microsoft\Jet\4.0\Engines\Excel
)注册表项下增加TypeGuessRows的值来增加采样的行数.您可以在以下两个链接中查看更多信息:
为了进一步说明,SSIS在向导的幕后创建了3个对象,一个Excel数据源对象,一个SQL表目标对象,以及它们之间的数据流运算符.Excel源对象定义源数据,并且独立于其他两个对象而存在.因此,当它被创建时,我描述的采样完成并且设置了源列大小.因此,当数据流操作符执行并尝试将数据从excel中提取到表中时,它已经在查看一个限制为255个字符的数据源.
Dea*_*ean 33
从平面分隔文件导入SQL Server时出现此问题.解决方案是更新违规列的"OutputColumnWidth"值(来自错误消息).在导入向导中的"选择数据源"表单中,我的源是平面文件.在最左侧的窗格中,选择"高级".然后,您可以设置各列的属性.在我的例子中,我的大多数列的'OutputColumnWidth'默认为'50'.我只是将其更新为更大的值,不会截断平面文件中的值.
让它工作的一种简单方法是编辑要导入的文件,并在第一个位置创建一个新行.这样它将始终被采样.然后对于可能具有> 255个字符的任何列,只需向单元格添加255个字符即可.导入后,只需删除您添加的垃圾行.
当我尝试导入包含一些中文字符的大文件时,我收到此错误,还有一些无效(大)字符串.
文本文件以UTF8格式保存.
我的设置:
关于一般选项(没有改变任何东西):
- Locale: English (United States)
- Unicode: Unchecked
- Code Page: 65001 (UTF-8)
Run Code Online (Sandbox Code Playgroud)
左侧有一个高级选项
- DataType (for column): Unicode String [DT_WSTR] (changed)
- OutputColumnWidth: 4000 (that's the maximum) (changed)
Run Code Online (Sandbox Code Playgroud)
关于审阅数据类型映射
- On Error: Ignore
- On Truncation: Ignore
Run Code Online (Sandbox Code Playgroud)
我的目标列的宽度= 50.
这些设置没有错误.