mysql - 从 vbs 和 Access 中将 csv 文件导入 mysql 时遇到问题

标签 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 就不能以某种方式执行此操作吗? IE。能够以可移植的方式使用脚本,其中 schema.ini 可能并不总是存在?

最佳答案

The problem I am having, is when I export the file, the csv file contains headers, despite HDR being set to 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 指定的同一目录中。

结果:没有标题。

关于mysql - 从 vbs 和 Access 中将 csv 文件导入 mysql 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/797239/

相关文章:

java - 以编程方式导出 VBA 模块

sql - 每个派生表都必须有自己的别名错误

php - WAMP 和 XAMPP 显示 PHP 而不是运行它

c# - 如何找到导致 EntityCommandExecutionException 出现的原因

MySql:如何在列中使用相同文本的 "list"记录

java - 将 accessdb 表导出到 csv

excel - 如何修复这个有 8 年历史的 VBA 64 位编译器错误?

ms-access - 在代码中设置值而不是 AfterUpdate() 后更新 VBA 表单

excel - 如何在 vba Excel 中自动上传文件 "Choose File To Upload"

vbscript - wshell.run 的返回值