Как импортировать данные из DBF в SQL с помощью сценария SQL? - PullRequest
2 голосов
/ 16 февраля 2010

Я пытаюсь импортировать данные из файла DBF в таблицу SQL с помощью следующей команды -

select *
from openrowset('MSDASQL', 
'Driver={Microsoft dBase Driver (*.dbf)};DBQ=E:\data\;',
'select * from E:\data\a.dbf')

Но он не может сказать,

    OLE DB provider "MSDASQL" for linked server "(null)" returned message "[Microsoft][ODBC dBase Driver]General Warning Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x120 Thread 0x3084 DBC 0x303dfbc Xbase'.".    
OLE DB provider "MSDASQL" for linked server "(null)" returned message "[Microsoft][ODBC dBase Driver] Disk or network error.".    
Msg 7303, Level 16, State 1, Line 1    
Cannot initialize the data source object of OLE DB provider "MSDASQL" for linked server "(null)".

Любая подсказка, почему он дает ошибку? Для второй ошибки я дал полный доступ к временной папке как предложено некоторым блогом. Тем не менее он показывает обе ошибки.

Ответы [ 4 ]

3 голосов
/ 15 октября 2012

Если имя файла .dbf Попробуйте это:

select * from
openrowset('MSDASQL',
'Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=E:\Data;',
'SELECT * FROM a')
1 голос
/ 18 февраля 2013

Вы используете 64-битный SQL Server, который ищет 64-битные источники ODBC, когда драйверы 32-битные. Для FoxPro (также DBF) существует обходной путь, который также должен работать и для dBASE:

Откройте новый SqlDataSource в Visual Studio, используя поставщик .NET Framework для OLE DB, затем MS OLE DB Provider для VFP. Строка подключения должна выглядеть так (или с UNC)

Provider=VFPOLEDB.1;Data Source=h:\Programs\Data;Persist Security Info=True;User    ID=Your_user;Password=your_password 

Мастер настройки включает в себя часть для проверки вашего SQL. Вы можете использовать этот специальный прогон SQL.

1 голос
/ 16 февраля 2010

В дополнение к CodeByMoonlight информация о драйвере указывает на путь, по которому находится файл данных, поэтому последующим запросом должно быть только «Выбрать * должен из», поскольку должны подразумеваться как путь, так и расширение .dbf

1 голос
/ 16 февраля 2010

В вашем SELECT указывается путь к файлу - вместо этого вы должны указать имя таблицы, которое предположительно является «a».

...