微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

上传加载本地数据

如何解决上传加载本地数据

我正在尝试使用带有 mybatis 的 MysqL 将 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。