使用加载本地数据上传
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
我正在尝试使用 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