过去我用的是v5 mysql-connector-java
很多。期间 LOAD DATA LOCAL INFILE
,我通常将连接设置为允许从inmemory加载数据,如下所示:
com.mysql.jdbc.Connection con;
con.setAllowLoadLocalInfile(true);
然后,将文件直接设置为数据库语句的inputstream:
((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条答案
按热度按时间fnvucqvd1#
首选方法是设置连接属性
allowLoadLocalInfile=true
然后调用方法setLocalInfileInputStream(InputStream stream)
从语句对象强制转换到接口com.mysql.cj.jdbc.JdbcStatement
.nzk0hqpo2#
万一有人来看这个班就得搬走。它现在在里面
com.mysql.cj.jdbc.StatementImpl
至少在8.0.15中mitkmikd3#
这就是我的工作原理:
它适用于mysql8.0.18
mu0hgdu04#
最后我换成了
mariadb
连接器,用于替换mysql
,但仍然有localinfile方法。