作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将数据从 CSV 文件上传到 mysql 数据库表中,但在加载数据查询中使用 INSERT/REPLACE 选项时出现错误“java.sql.SQLException:无效的 utf8 字符串:''”。但是相同的查询在没有 INSERT/REPLACE 选项的情况下工作正常。
查询:
Statement stmt = conn.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String query = "LOAD DATA INFILE 'D:\\"+flnm+"' REPLACE INTO TABLE prfl_hntr "
+ "FIELDS TERMINATED by ',' LINES TERMINATED BY '\n' IGNORE 1 LINES"
+ " (candidate, phone, mailid, skill, texp, rexp, pctc,np);";
stmt.executeUpdate(query);
我已经验证了 mysql 文档中的语法- https://dev.mysql.com/doc/refman/8.0/en/load-data.html .
请注意,我需要在查询中使用 REPLACE/IGNORE 选项来消除重复条目。
最佳答案
你是对的,问题不在于语法。问题可能在于 Mysql 表和 CSV 文件之间的字符集不同。我有一个类似的问题,并通过在查询中提及字符集来解决它。尝试下面给出的查询应该有效,并确保您的 CSV 文件包含 Mysql 表支持的数据。
查询:
String query = "LOAD DATA INFILE 'D:\\"+flnm+"' REPLACE INTO TABLE prfl_hntr "
+"character set latin1 "
+ "FIELDS TERMINATED by ',' LINES TERMINATED BY '\n' IGNORE 1 LINES"
+ " (candidate, phone, mailid, skill, texp, rexp, pctc,np);";
stmt.executeUpdate(query);
此外,您可以按照@RolandoMySQLDBA 对这个问题的回答:Trying to do LOAD DATA INFILE with REPLACE and AUTO_INCREMENT它对我产生了奇迹。
关于java - 加载数据查询不适用于 INSERT/REPLACE 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53410959/
我是一名优秀的程序员,十分优秀!