Excel到Sql Server表数据加载问题
我正在使用SSIS将数据从Excel导入Sql表 我面临着一些字符串值被空值替换的问题(因为前8条记录只包含数值)。不用说,我尝试用IMEX=1附加连接字符串,但问题仍然存在,我不想像几篇文章中建议的那样篡改注册表 你们能为这个问题提出一个解决方案吗?Excel中前8条记录之后的列中可能有字符串值,但它应该与DB中的原始数据一致。Excel到Sql Server表数据加载问题,sql,sql-server,excel,ssis,Sql,Sql Server,Excel,Ssis,我正在使用SSIS将数据从Excel导入Sql表 我面临着一些字符串值被空值替换的问题(因为前8条记录只包含数值)。不用说,我尝试用IMEX=1附加连接字符串,但问题仍然存在,我不想像几篇文章中建议的那样篡改注册表 你们能为这个问题提出一个解决方案吗?Excel中前8条记录之后的列中可能有字符串值,但它应该与DB中的原始数据一致。 我正在寻找一个好的解决方法,因为我知道这似乎是一个标准问题。请参阅我对一个类似问题的回答,该问题涉及如何在事后修复excel源的元数据 还可以尝试以下方法: 查看[
我正在寻找一个好的解决方法,因为我知道这似乎是一个标准问题。请参阅我对一个类似问题的回答,该问题涉及如何在事后修复excel源的元数据 还可以尝试以下方法: 查看[HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel]中的注册表注册表项“TypeGuessRows”。这是避免Excel仅使用前8行猜测列数据类型的关键。将此值设置为0以扫描所有行这可能会影响性能。还请注意,添加IMEX=1选项可能会导致仅在8行之后设置IMEX功能。改为使用IMEX=0以确保强制注册表TypeGuessRows=0(扫描所有行)工作 从本页: 在windows 7中,此密钥位于: [HKEY\U LOCAL\U MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Excel]
TypeGuessRows的范围为0表示全部,或1-16表示要扫描的行数。根据您的应用程序进行设置 我找到了解决这个问题的临时方法。如果有人某天发现它有用,请检查是否在此处发布…
解决方案: 1) 在连接字符串中使用了IMEX=1
2) 将第一行保留为Header=FALSE
3) 现在,使用数据流任务将数据从Excel导入Sql数据,但仅在使用条件拆分消除第一行(即标题行)之后 此解决方案确保,即使前8个数据行中没有字母数字值,头是字母数字,JET/ACE连接器也会将数据类型检测为STRING-DT_STR。这解决了中间插入空值的问题 有关以Excel作为源的问题以及使用IMEX=1的可能解决方案的详细信息,请参阅:
URL 1: 网址2: 谢谢
贾斯汀·塞缪尔。这不是metdata的问题。这是ACE Excel Connector的一个问题,它根据前8行值检测列的数据类型。我的前8行有数字值,后面是字母数字值。所以这不是元数据崩溃的情况…非常感谢Williams!它确实指引了我…我只是找到了一个解决办法,并发布了同样的内容。请查收。