提问人:Blesson Xavier 提问时间:11/16/2023 最后编辑:Mark RotteveelBlesson Xavier 更新时间:11/16/2023 访问量:14
无法解析大列数据
Unable to parse large column Data
问:
我正在尝试使用 Java 应用程序解析 CSV,并在解析后尝试在 MySQL 表中插入值。代码片段如下。
问题是,当我解析一个文件时,该文件在引号下有一个非常大的 JSON 列,应用程序会冻结在具有大 JSON 的特定行上,然后退出而不会出现任何错误(在 bach 脚本中,它只是在下一行移动)。
我也附上了带有大块的 CSV 图片(CSV 中的第 3 行)。
完成插入的MySQL表具有相同的列名、类型和编码column_name TEXT DEFAULT NULL
charset=utf8mb4
包含大数据区块的标头message_payload
try (
Connection connection = DriverManager.getConnection(jdbcUrl, username, password);
PreparedStatement preparedStatement = connection.prepareStatement(sqlInsertStatement);
CSVReader csvReader = new CSVReader(new FileReader(csvFilePath))
) {
connection.setAutoCommit(false); // Disable auto-commit for batch execution
String[] headers = csvReader.readNext(); // Assuming the first line is the header
String[] nextLine;
while ((nextLine = csvReader.readNext()) != null) {
j++;
System.out.println("Line-----" + j);
if (nextLine.length != headers.length) {
mismatchLines_count++;
continue; // Skip lines that do not have the same number of columns as the headers
}
for (int i = 0; i < headers.length; i++) {
if (nextLine[i].length() > MAX_SIZE) {
preparedStatement.setString(i + 1, nextLine[i].substring(0, MAX_SIZE));
} else {
preparedStatement.setString(i + 1, nextLine[i]);
}
}
preparedStatement.addBatch();
if (++count % batchSize == 0) {
preparedStatement.executeBatch();
connection.commit();
}
}
if (count % batchSize != 0) {
preparedStatement.executeBatch();
connection.commit();
System.out.println("Committing After Line :" + j);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
connection.setAutoCommit(true); // Re-enable auto-commit
} catch (Exception e) {
e.printStackTrace();
}
}
CSV 的图像(删除敏感数据)
答: 暂无答案
评论