如何在mysql-connector-java上允许LOAD DATA LOCAL INFILE?

时间:2018-11-05 14:13:57

标签: java mysql mysql-connector

过去,我经常使用mysql-connector-java的v5。在LOAD DATA LOCAL INFILE期间,我通常将连接设置为允许从内存中加载数据,如下所示:

com.mysql.jdbc.Connection con;
con.setAllowLoadLocalInfile(true);

Lateron然后将文件直接设置为数据库语句的输入流:

((com.mysql.jdbc.Statement) ps).setLocalInfileInputStream(new ByteArrayInputStream(...))

现在,我要迁移到连接器的版本8.0.13,该方法不再存在。而且,现在必须使用java.sql.Connection

我现在如何设置属性以允许在显式连接上加载数据?

特别是因为java.sql.Statement没有.setLocalInfileInputStream()方法?

开发人员指南甚至提到了该方法,但没有说明如何访问它: https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-implementation-notes.html

4 个答案:

答案 0 :(得分:1)

最后,我切换到mariadb连接器,它是mysql的直接替代品,但仍然具有localinfile方法。

答案 1 :(得分:1)

万一有人来看这个,需要上课。现在至少在com.mysql.cj.jdbc.StatementImpl中位于8.0.15

答案 2 :(得分:0)

首选方法是在连接字符串中设置连接属性allowLoadLocalInfile=true,然后从转换为接口setLocalInfileInputStream(InputStream stream)的Statement对象中调用方法com.mysql.cj.jdbc.JdbcStatement

答案 3 :(得分:0)

这是为我工作的方式:

jdbc:mysql://localhost:3306/tempDB?allowLoadLocalInfile=true

它适用于Mysql8.0.18