我使用的是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”的实例。
我是这个论坛的新手,我非常感谢您对此主题的任何帮助。如果我的英语在某些时候不清楚,请询问任何问题。在此先感谢这个社区。 p>
答案 0 :(得分:0)
由于没有任何解决方案,我建议您使用DBF Commander Pro导入您的DBF。这在试用期内是完全免费的(没有限制),因此您可以免费完成任务。
如果需要自动执行此导出过程,请从“导出到服务器”对话框底部的文本字段中复制命令行。您可以使用 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')