2008-09-09 3 views

Antwort

15

Verwenden Sie einen verknüpften Server oder verwenden Sie OPENROWSET Beispiel

SELECT * into SomeTable 
FROM OPENROWSET('MSDASQL', 'Driver=Microsoft Visual FoxPro Driver; 
SourceDB=\\SomeServer\SomePath\; 
SourceType=DBF', 
'SELECT * FROM SomeDBF') 
+5

Ich habe es verwendet, aber dieser Fehler tritt auf ---- OLE DB-Provider "MSDASQL" für den Verbindungsserver "(null)" zurückgegebene Nachricht "[Microsoft] [ODBC Driver Manager] Treiber unterstützt diese Funktion nicht". Das Datenquellenobjekt des OLE DB-Providers "MSDASQL" für den Verbindungsserver "(null)" kann nicht initialisiert werden. – sqlchild

+1

@sqlchild: Ich musste das installieren, um die Dinge für mich arbeiten zu lassen. http://msdn.microsoft.com/en-us/vfoxpro/bb190233 – JoshBaltzell

+0

@JoshBalzell: Ich bekomme den folgenden Fehler, wenn ich versuche, diesen ODBC-Treiber zu installieren: "Fehler 1918: Fehler beim Installieren des ODBC-Treibers: Microsoft Visual FoxPro Diver, ODBC Fehler 13. Die Setup-Routinen für den Microsoft Visual FoxPro Diver-ODBC-Treiber konnten aufgrund des Systemfehlercodes 1114 nicht geladen werden: Eine Dynamic Link Library (DLL) -Initialisierungsroutine ist fehlgeschlagen. (C: \ Windows \ system32 \ vfpodbc.dll) .. Stellen Sie sicher, dass die Datei Microsoft Visual FoxPro Driver vorhanden ist und Sie darauf zugreifen können. " – Zach

2

Was schließlich für uns arbeitete, war die FoxPro OLEDB Driver und verwenden Sie die folgende Syntax zu verwenden. In unserem Fall sind wir mit SQL 2008.

select * from 
    openrowset('VFPOLEDB','\\VM-GIS\E\Projects\mymap.dbf';''; 
    '','SELECT * FROM mymap') 

Stellvertreter der \\VM-GIS... mit dem Speicherort Ihrer DBF-Datei, entweder UNC oder Laufwerk Pfad. Ersetzen Sie außerdem mymap nach dem FROM durch den Namen der DBF-Datei ohne die Erweiterung DBF.

+1

Ja, Sie wollen definitiv OLEDB über ODBC in diesem verwenden. –

4

konnte ich die Antwort von jnovation verwenden, aber da gibt es etwas falsch mit meinen Feldern war, habe ich einfach bestimmte Felder statt alle ausgewählt, wie:

select * into CERTDATA 
from openrowset('VFPOLEDB','C:\SomePath\CERTDATA.DBF';''; 
    '','SELECT ACTUAL, CERTID, FROM CERTDATA') 

Sehr aufregend, endlich eine praktikable Antwort zu haben, danke an alle hier!

+0

Das hat für mich funktioniert. Allerdings würde ich einen "Access denied" -Fehler bekommen, bis ich zu Server Objects -> Linked Servers -> Providers -> VFPOLEDB gegangen bin, auf Eigenschaften geklickt und "Allow inprocesses" angeklickt habe –