过去,我经常使用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
答案 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