【问题标题】:SQL command in ecel VBA gives db server error - MariaDBexcel VBA中的SQL命令给出数据库服务器错误 - MariaDB
【发布时间】: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 中,当我调试它时它就在那里。
  • 好吧,别费心听我的建议,祝你好运。

标签: mysql vba excel mariadb


【解决方案1】:

我可能会在这里冒险并打赌您会通过在本模块的最顶部添加此行来找到问题:

Option Explicit

(并且在未来,总是将其添加到每个模块中。)

这“迫使”您正确声明和引用变量、对象、属性等。

【讨论】:

  • 我的所有模块都有它。问题不在于 VBA 本身。
【解决方案2】:

我认为最好使用 ExecuteNonQuery(),因为它用于插入/删除/更新:

 Dim con As MySqlConnection = New MySqlConnection("DataSource=dev;Database=mydb;User ID=myUser;Password=mypass;")
    Try
        con.Open()
        Dim sql As MySqlCommand = New MySqlCommand(Command, con)
        sql.ExecuteNonQuery()
    Catch ex As Exception
        con.Close()
        MsgBox("Record is not Inserted" + ex.Message)
    End Try

您需要验证的另一件事是/,您可能需要在\ 中进行转换

【讨论】:

  • 嗯,是的,我忘了写这是 excel VBA(已经编辑)。因此,很遗憾,您的提议将无法奏效。实际上我目前正在研究解决方法,因为 DBEngine 似乎只是不支持通过 DBConnector (ODBC) 的那些命令(加载数据文件)。或者我错过了什么?
  • 好的,我已经做了一个工作正常的解决方法,我想要实现的事情。我只是使用插入 SQL 查询,从 csv 文件文件中准备一串值。
猜你喜欢
  • 1970-01-01
  • 2023-03-30
  • 2018-12-02
  • 1970-01-01
  • 1970-01-01
  • 2021-04-06
  • 2020-08-27
  • 1970-01-01
  • 2017-05-04
相关资源
最近更新 更多