使用加载本地数据上传

Uploading with load local data

我正在尝试使用 MySQL 和 mybatis 将 csv 文件上传到本地数据库。我创建了一个 mysql 容器作为服务器并使用 datagrip 来访问数据。我想使用:

<insert id="batchInsertCsv" parameterType="string">
    LOAD DATA LOCAL INFILE #{filePath}
        INTO TABLE DATA
        COLUMNS TERMINATED BY ','
        IGNORE 1 LINES
</insert>

上传数据但我当前的错误是:加载本地数据被禁用;这必须在客户端和服务器端都启用。使用:

SET GLOBAL local_infile = true;

我在服务器端设置了 local_infile 并检查了它:

SHOW GLOBAL VARIABLES LIKE 'local_infile';

任何人都可以提供帮助或建议吗?谢谢

LOAD DATA LOCAL INFILE 必须在服务器和客户端中都被允许并且您已经完成了服务器部分。

由于 MyBatis 是建立在 JDBC API 之上的,你应该添加一个连接 属性 到 JDBC URL 以启用客户。例如

jdbc:mysql://127.0.0.1:3309/test?allowLoadLocalInfile=true

请注意,有几个属性与此功能相关。

  • allowLoadLocalInfile
  • allowLoadLocalInfileInPath
  • allowUrlInLocalInfile

第一个是简单的 TRUE/FALSE 开关。
后两者允许您对正在上传的文件设置一些限制。

详情请看文档
https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-connp-props-security.html