首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何批量插入mysql加载数据?

如何批量插入mysql加载数据?
EN

Stack Overflow用户
提问于 2018-05-24 13:55:50
回答 1查看 278关注 0票数 0

我有一个绝对文件名列表(csv文件)。我想使用LOAD DATA LOCAL INFILE批量插入它们。

问题:在作为批处理执行sql语句之前,我无法批量收集sql语句:

代码语言:javascript
运行
复制
PreparedStatement ps = con.prepareStatement("LOAD DATA LOCAL INFILE ? INTO TABLE mytable");

for (String filename : filenames) {
    ps.setString(1, filename);
    ps.addBatch();
}

ps.executeBatch();
ps.commit();

结果:

提交1个文件时出错:参数索引超出范围(1 >参数数,即0)

无法识别sql通配符参数。但是,如果不使用?通配符,那么如何才能获得绝对文件名--语句呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-24 14:04:15

我认为准备好的声明不像你想的那样支持LOAD DATA。据我所知,只有查询中的文字值可以用参数表示。但是,您可以在这里使用普通字符串连接:

代码语言:javascript
运行
复制
String sql1 = "LOAD DATA LOCAL INFILE '";
String sql2 = "' INTO TABLE mytable";

Statement s = con.createStatement();    // use a regular statement
for (String filename : filenames) {
    String query = sql1 + filename + sql2
    s.addBatch(query);
}

s.executeBatch();
s.commit();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50511198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档