使用VFPOLEDB和Microsoft.ACE.OLEDB.12.0将DBF文件导入SQL Server 2008

时间:2015-01-14 18:13:17

标签: sql-server-2008 import wizard dbf

我使用的是32位SQL Server 2008, FoxPro OLE DB驱动程序是32位。

我有一个很大的.DBF文件,我想将其导入SQL Server表。我已经做了很多研究,我已经尝试了很多建议,但没有一个完全有效。

到目前为止,对我来说效果更好的代码是:

select DCOM 
from openrowset('VFPOLEDB','D:\x09150614.DBF';'';'','SELECT * FROM x09150614')

但是当我想选择另一栏时:

select vfobserdol 
from openrowset('VFPOLEDB','D:\x09150614.DBF';'';'','SELECT * FROM    x09150614')

我收到此错误:

  

Msg 7341,Level 16,State 2,Line 1
  无法从OLE DB提供程序“VFPOLEDB”获取链接服务器“(null)”的列“[VFPOLEDB] .vfobserdol”的当前行值。提供者无法确定此列的值。

无法检索的值是一个很大的实数:73798812.010。我试着去DECIMAL(11,3),但它对我不起作用。

当我使用向导和 Microsoft.ACE.OLEDB.12.0 提供程序导入表时,所有值都正确导入,并且没有任何问题。 (我所做的是here)。我需要这个过程是自动的,所以我想我需要在这个提供程序中使用OPENROWSET。我试过这个:

sp_configure 'show advanced options', 1
reconfigure
GO

sp_configure 'Ad Hoc Distributed Queries', 1 
reconfigure
GO

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1;
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1;

SELECT * 
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','dBASE IV;Database=D:\','SELECT * FROM x09150614.dbf')

返回此错误:

  

无法为链接服务器“(null)”创建OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”的实例。

我是这个论坛的新手,我非常感谢您对此主题的任何帮助。如果我的英语在某些时候不清楚,请询问任何问题。在此先感谢这个社区。

3 个答案:

答案 0 :(得分:0)

由于没有任何解决方案,我建议您使用DBF Commander Pro导入您的DBF。这在试用期内是完全免费的(没有限制),因此您可以免费完成任务。

  1. 点击'文件 - >导出到DBMS '。在出现的窗口中,指定SQL Server的连接字符串,或使用“ Build ”按钮创建它。
  2. 选择要加载数据的现有数据库表,或选择“创建新表”项以将数据加载到新表中。从 DBMS 下拉列表中,选择“ MS SQL Server ”项。
  3. 点击“导出”按钮运行加载。
  4. enter image description here

    如果需要自动执行此导出过程,请从“导出到服务器”对话框底部的文本字段中复制命令行。您可以使用 Windows Scheduler 定期(每天一次,每周一次)在.BAT文件中使用此命令行。

    如果您需要其他信息,请参阅this help topic

答案 1 :(得分:0)

echo off
-edb "E:\1PROGRAMMING\1Work\WIP\STRETTO\Mahad\data\BCC.dbf" "Table_1" "Provider=SQLOLEDB.1;Password=1234567;Persist Security Info=True;User ID=sa;Initial Catalog=stretto" -sb -edt 

我已经创建了上面的批处理文件,但是没有以SQL导入数据

答案 2 :(得分:0)

在探索对象中向下钻取

                                     Server Objects

                                             Linked Servers

                                                             Providers

                                                                       VFPOLEDB

右键单击“选择属性”

选中“允许进行中”

点击确定

使用此:

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE
GO

SELECT
 * into
 MyNewProducts
    FROM
 OPENROWSET ('vfpoledb', 
'c:\DBfFolder'; ' '; ' ',
'select * from fielDbf')