【发布时间】:2018-04-10 07:09:10
【问题描述】:
我对应该将数据从 csv 文件加载到 MariaDB 表的部分 excel VBA 宏有疑问。在 HeidiSQL 中工作的 SQL 命令在 VBA 中使用时会返回错误。错误信息是:
[ma-3.0.3][10.2.13-MariaDB]prepared statement 协议尚不支持此命令。
这是 VBA 代码。
DBConn = "DSN=Fundusze;UID=login;PWD=pass;"
Command = "Load data low_priority local infile '" + Replace(Plik, "\", "/") + "' replace into table _kurs_" + ID + " fields terminated by ';' lines terminated by '\r\n' ignore 0 lines (`Data`, `Notowanie`);"
Call ZapisDB(Command, DBConn)
Sub ZapisDB(SQL_Com As String, Connection As String)
Dim DBConn As ADODB.Connection
Set DBConn = New ADODB.Connection
DBConn.ConnectionString = Connection
DBConn.Open
DBConn.Execute (SQL_Com)
DBConn.Close
Set DBConn = Nothing
End Sub
我知道这是数据库服务器端的问题,但是如果我需要将大量数据加载到很多 od 表中该怎么办?为什么不能通过 ODBC 发送在 HeidiSQL 中正常工作的 SQL 命令?
编辑 - 通过解决方法解决问题
我已经制定了一个不使用“加载数据文件”的解决方法,因为通过 ODBC 访问的数据库引擎似乎不支持它。我正在使用“插入”查询准备从 csv 中插入的值字符串。
【问题讨论】:
-
哪一行给你错误?你想做什么?
-
认为这很清楚。 DBConn.Execute (SQL_Com) 给出错误,但它是 dbengine 错误。我只是不知道为什么正确的 SQL 命令不能通过 VBA 和 ODBC 执行。
-
为什么你认为 SQL 查询是正确的?我不相信它是。自从您开始收到此错误以来,您是否直接对其进行了测试?什么是 SQL 查询?它应该在
SQL_Com中吗? -
你读过我的第一篇文章吗?我已经写过 SQL 命令已经过测试并且可以使用 HeidiSQL 图形界面工作。在 VBA 中通过 ODBC 发送的相同命令返回 DB 引擎错误。查询在我提供的源代码中 - 第二行代码,然后提供给我编写的 Sub ZapisDB。是的,它应该在 SQL_Com 中,当我调试它时它就在那里。
-
好吧,别费心听我的建议,祝你好运。