从 vbs 导入 csv 文件到 mysql 和访问时遇到问题

Posted

技术标签:

【中文标题】从 vbs 导入 csv 文件到 mysql 和访问时遇到问题【英文标题】:trouble importing csv files to mysql from vbs and access 【发布时间】:2009-04-28 10:25:30 【问题描述】:

我正在使用以下代码,基于 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就可以做到这一点吗? IE。能够以可移植的方式使用脚本,其中 schema.ini 可能并不总是存在?

【问题讨论】:

您是否有理由必须使用 csv?如果您已经为此使用 VBScript,为什么不连接到两个数据库并只传输数据呢?我不明白您为什么要使用 VBScript 创建 csv,Access 不是已经具备该功能吗? 【参考方案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 指定的同一目录中。

结果:没有标题。

【讨论】:

没有schema.ini,只有vbscript和数据库。 其实是生成了一个schema.ini文件,并且设置了ColNameHeader=True。 好吧,尝试将其设置为 false :) 为我工作(我的答案中添加了经过测试的示例)。 请检查我修改后的问题

以上是关于从 vbs 导入 csv 文件到 mysql 和访问时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

如何正确地将数据从 *.csv 文件导入 mysql 数据库中的给定表

将数据从 CSV 文件导入 Amazon Web Services RDS MySQL 数据库

MYSQL 使用 LOAD DATA INFILE 从 csv 导入数据

MYSQL 使用 LOAD DATA INFILE 从 csv 导入数据

如何把csv文件批量导入到mysql数据库

从 CSV 提供错误的数组关联以导入 mysql