2009-04-28 33 views
1

我使用下面的代碼,由Remou和安東尼·瓊斯以前的職位和答案基礎上的。麻煩導入CSV文件從VBS MySQL和訪問

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 

我遇到的問題是,當我導出的文件,CSV文件包含標題,儘管HDR被設置爲否將實際的數據,這會導致之前有我的專欄中引用的名稱嘗試導入時出現問題。

我的第二個問題是,似乎特殊字符不進行轉義。

我將數據裝入MySQL的使用:

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

我自己也嘗試沒有逃脫BY子句。

的問題是,其中一個字段包含HTML數據,這意味着引號,斜線等,這將導致數據被錯誤地輸入,與日期字段被插入到用戶名字段和這樣。我怎樣才能避免這種情況發生,或導入正確?

我使用的是scheme.ini類似如下:

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

和列標題仍在出口。在不需要schema.ini的情況下以不可能的方式做到這一點?即能夠以可移植的方式使用腳本,而schema.ini可能不會一直存在?

+0

是否有您必須使用CSV理由嗎?如果您已經使用VBScript,爲什麼不連接到這兩個數據庫,只是傳輸數據?我不明白你爲什麼使用VBScript創建一個csv,是不是已經有了這個功能? – Tester101 2009-04-28 15:20:02

回答

1

我遇到的問題是,當我 導出文件,CSV文件包含 頭,儘管HDR被設置爲No.

我想你需要需要包括ColNameHeader=FalseSchema.ini File

實施例:

C:\ SCHEMA.INI

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

SQL代碼:

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

注意如由Database中指定的schema.ini文件被保存在相同的目錄SQL中的連接字符串。

結果:沒有標題。

+0

沒有schema.ini,只有vbscript和數據庫。 – 2009-04-28 12:55:24