我试图将数据从 .dbf 文件移动到 SQL Server 2008 中的表,但在多个数字列上收到以下错误:
链接服务器“(null)”的 OLE DB 提供程序“MSDASQL”返回消息“多步 OLE DB 操作生成错误。检查每个 OLE DB 状态值(如果可用)。未完成任何工作。”。
消息 7341,16 级,状态 2,第 1 行
无法从链接服务器“(null)”的 OLE DB 提供程序“MSDASQL”获取列“[MSDASQL].apryr”的当前行值。转换失败,因为数据值溢出了提供程序使用的数据类型。
它仅发生在数字列上,而不是每个数字列上。字符数据很好,并且没有可能出现任何问题的日期/时间数据。
这是我正在使用的代码示例:
插入 [表] select * from OPENROWSET('MSDASQL',
'DRIVER=Microsoft Visual FoxPro 驱动程序;
SourceDB=[文件路径];
源类型=DBF',
'选择 *
来自[文件].dbf)
由于 dbf 文件中的数据是客户数据,因此我被告知无法手动修复文件中的垃圾数据(假设有),一切都必须通过 SQL 代码完成。我在互联网上搜索过并没有真正找到解决这个问题的方法。我将不胜感激任何帮助。
谢谢。
在不了解更多细节的情况下,情况听起来很简单:dbf 文件中的数据与 SQL Server 表中的数据类型不匹配。如果是这种情况,那么您有两个选择:
更改 SQL Server 表以容纳 dbf 文件中的数据。
不要从导致问题的 dbf 文件导入数据。
在选项 #1 中,您可以将限制性数字或日期类型字段修改为 varchar 或 nvarchar 字段。然后,您可能需要修改可能采用 dbf 文件中的某些数据类型的任何程序,以适应 varchar 或 nvarchar 数据。例如,您可以使用某种 try-catch 语言来测试数据的转换,然后再让程序访问数据。
如果您决定使用选项#2,则可以更改选择查询以过滤掉不满足 SQL Server 表字段要求的数据。
祝你好运!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)