从 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 导入数据