2009-04-28 7 views
1

Ich verwende den folgenden Code, basierend auf früheren Posts und Antworten von Remou und Anthony Jones. Es wird über die Namen meiner Spalten in Anführungszeichen vor den eigentlichen DatenProblem beim Importieren von CSV-Dateien in mysql von VBS und Zugriff

Dim db: db = "C:\Dokumente und Einstellungen\hom\Anwendungsdaten\BayWotch4\baywotch.db5" 
Dim exportDir: exportDir = "C:\Dokumente und Einstellungen\hom\Desktop" 
Dim exportFile: exportFile=NewFileName(exportDir) 


Dim cn: Set cn = CreateObject("ADODB.Connection") 

cn.Open _ 
    "Provider = Microsoft.Jet.OLEDB.4.0; " & _ 
    "Data Source =" & db 

cn.Execute "SELECT * INTO [text;HDR=No;Database=" & exportDir & _ 
    ";CharacterSet=65001]." & exportFile & " FROM tblAuction" 

'Export file 

'Support functions 

Function NewFileName(ExportPath) 
Dim fs 
Dim NewFileTemp 

Set fs = CreateObject("Scripting.FileSystemObject") 

NewFileTemp = "CSV" & Year(Date) _ 
    & Month(Date) & Day(Date) & ".csv" 

NewFileName = NewFileTemp 
End Function 

Das Problem, das ich bin, ist, wenn ich die Datei zu exportieren, die CSV-Datei-Header enthält, trotz HDR auf Nein festgelegt wird, was bewirkt, Probleme beim Importversuch.

Mein zweites Problem ist, dass Sonderzeichen nicht zu entkommen scheinen.

Ich bin Laden der Daten in MySQL mit:

LOAD DATA LOCAL INFILE 'file' INTO TABLE MYTABLE FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\\' 

Ich habe auch ohne die ESCAPED BY-Klausel versucht.

Das Problem ist, dass eines der Felder HTML-Daten enthält, was Anführungszeichen, Schrägstriche usw. bedeutet. Dies führt dazu, dass die Daten falsch importiert werden, wobei Datumsfelder in die Felder für Benutzernamen usw. eingefügt werden. Wie kann ich entkommen, um dies zu verhindern oder richtig zu importieren?

Ich verwende einen scheme.ini wie folgt aus:

[CSV2009427.csv] 
ColNameHeader=No 
CharacterSet=65001 
Format=Delimited(;) 
Col1=article_no Char Width 19 

und Spaltenüberschriften sind noch exportiert. Ist dies nicht möglich, ohne dass schema.ini erforderlich ist? I.e. in der Lage sein, das Skript auf eine tragbare Weise zu verwenden, wo eine schema.ini möglicherweise nicht immer existiert?

+0

Gibt es einen Grund, dass Sie eine CSV verwenden müssen? Wenn Sie bereits VBScript dafür verwenden, warum verbinden Sie sich nicht mit beiden Datenbanken und übertragen nur die Daten? Ich verstehe nicht, warum Sie VBScript verwenden, um eine csv zu erstellen, hat Access nicht bereits diese Funktion? – Tester101

Antwort

1

Das Problem, das ich bin, ist, wenn ich die Datei exportieren enthält die CSV-Datei Header trotz HDR

müssen Sie denke ich ColNameHeader=False enthalten müssen auf Nein gesetzt wird, in die Schema.ini File.

Beispiel:

C: \ schema.ini

[blah.csv] 
ColNameHeader=False 
CharacterSet=1252 
Format=CSVDelimited 
Col1=pence_amount Integer 

SQL-Code:

SELECT * INTO [text;Database=C:\].blah#csv FROM Coins; 

Notiere die schema.ini-Datei im selben Verzeichnis von Database wie angegeben gespeichert in die Verbindungszeichenfolge in SQL.

Ergebnis: keine Header.

+0

Es gibt keine schema.ini, nur das VBScript und die Datenbank. –

+0

Tatsächlich wird eine schema.ini-Datei generiert und ColNameHeader = True festgelegt. –

+0

Nun, versuchen, es auf false :) – onedaywhen