我正在尝试将csv文件中的数据上载到mysql数据库表中,但在load data query中使用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选项来消除重复条目。
2条答案
按热度按时间9avjhtql1#
你说得对,问题不在语法上。问题可能是mysql表和csv文件之间的字符集不同。我遇到了一个类似的问题,通过在查询中提到characterset解决了这个问题。尝试下面给出的查询,它应该可以工作,并确保您的csv文件有mysql表支持的数据。
查询:
此外,您还可以按照@rolandomysqldba的答案来回答这个问题-:尝试用replace和auto\u increment进行加载数据填充,这对我来说是个奇迹。
yvt65v4c2#
将数据本地infile“/home/xx/conf.csv”加载到以“,”结尾的表配置字段中,行以“\n”结尾,忽略1行;
试试这个。