Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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
Excel到Sql Server表数据加载问题_Sql_Sql Server_Excel_Ssis - Fatal编程技术网

Excel到Sql Server表数据加载问题

Excel到Sql Server表数据加载问题,sql,sql-server,excel,ssis,Sql,Sql Server,Excel,Ssis,我正在使用SSIS将数据从Excel导入Sql表 我面临着一些字符串值被空值替换的问题(因为前8条记录只包含数值)。不用说,我尝试用IMEX=1附加连接字符串,但问题仍然存在,我不想像几篇文章中建议的那样篡改注册表 你们能为这个问题提出一个解决方案吗?Excel中前8条记录之后的列中可能有字符串值,但它应该与DB中的原始数据一致。 我正在寻找一个好的解决方法,因为我知道这似乎是一个标准问题。请参阅我对一个类似问题的回答,该问题涉及如何在事后修复excel源的元数据 还可以尝试以下方法: 查看[

我正在使用SSIS将数据从Excel导入Sql表

我面临着一些字符串值被空值替换的问题(因为前8条记录只包含数值)。不用说,我尝试用IMEX=1附加连接字符串,但问题仍然存在,我不想像几篇文章中建议的那样篡改注册表

你们能为这个问题提出一个解决方案吗?Excel中前8条记录之后的列中可能有字符串值,但它应该与DB中的原始数据一致。
我正在寻找一个好的解决方法,因为我知道这似乎是一个标准问题。

请参阅我对一个类似问题的回答,该问题涉及如何在事后修复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!它确实指引了我…我只是找到了一个解决办法,并发布了同样的内容。请查收。