从vbs和访问导入csv文件到mysql的麻烦

时间:2009-04-28 10:25:31

标签: mysql ms-access vbscript csv

我使用以下代码,基于Remou和Anthony Jones以前的帖子和答案。

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 '\\'

我也尝试过没有ESCAPED BY子句。

问题是其中一个字段包含html数据,这意味着引号,斜杠等。这会导致数据导入错误,日期字段被插入用户名字段等。如何逃避阻止这种情况发生或正确导入?

我正在使用如下的scheme.ini:

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

仍然会导出列标题。是否不可能在不需要schema.ini的情况下执行此操作?即能够以便携方式使用脚本,schema.ini可能不存在吗?

1 个答案:

答案 0 :(得分:1)

  

我遇到的问题是,当我   导出文件,csv文件包含   标题,尽管HDR被设置为No。

我认为您需要在Schema.ini File中加入ColNameHeader=False

示例:

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;

请注意,schema.ini文件保存在SQL中连接字符串中由Database指定的同一目录中。

结果:没有标题。