in backup-core/src/main/java/org/apache/iotdb/backup/core/parse/CsvFileTransParser.java [61:143]
private List<String> transformInsertString(List<CSVRecord> recordList, boolean aligned) {
List<String> lst = new ArrayList<>();
Iterator<CSVRecord> it = recordList.iterator();
// 组织measurement
List<String> headerNames = csvParser.getHeaderNames();
HashMap<String, TSDataType> headerTypeMap = new HashMap<>();
HashMap<String, String> headerNameMap = new HashMap<>();
parseHeaders(headerNames, headerTypeMap, headerNameMap);
String timeSerie = null;
if (!headerNames.contains("Device")) {
String s = headerNameMap.get(headerNames.get(1));
timeSerie = s.substring(0, s.lastIndexOf("."));
}
while (it.hasNext()) {
CSVRecord record = it.next();
StringBuilder bf1 = new StringBuilder();
StringBuilder bf2 = new StringBuilder();
StringBuilder bf3 = new StringBuilder();
if (headerNames.contains("Device")) {
timeSerie = record.get("Device");
}
bf1.append("insert into ").append(timeSerie).append("(");
bf3.append(" values(");
for (String headerNameFull : headerNames) {
String headerName = headerNameMap.get(headerNameFull);
TSDataType type = headerTypeMap.get(headerName);
if (headerNameFull.equals("Device")) {
continue;
}
if (headerNameFull.equals("Time")) {
bf2.append(headerName);
// Time字段处理
String timeStr = record.get(headerNameFull);
bf3.append(formatToTimestamp(timeStr));
} else {
if (TEXT.equals(type)) {
if (!"".equals(record.get(headerNameFull))) {
if (!record.get(headerNameFull).startsWith("\"")
|| !record.get(headerNameFull).endsWith("\"")) {
bf2.append(",")
.append(
headerName.substring(headerName.lastIndexOf(".") + 1, headerName.length()));
bf3.append(",\"").append(record.get(headerNameFull)).append("\"");
} else {
bf2.append(",")
.append(
headerName.substring(headerName.lastIndexOf(".") + 1, headerName.length()));
bf3.append(",").append(record.get(headerNameFull));
}
}
} else if (BOOLEAN.equals(type)) {
if (record.get(headerNameFull).equals("true")
|| record.get(headerNameFull).equals("false")) {
bf2.append(",")
.append(
headerName.substring(headerName.lastIndexOf(".") + 1, headerName.length()));
bf3.append(",").append(record.get(headerNameFull));
}
} else {
if (!"".equals(record.get(headerNameFull))) {
bf2.append(",")
.append(
headerName.substring(headerName.lastIndexOf(".") + 1, headerName.length()));
bf3.append(",").append(record.get(headerNameFull));
}
}
}
}
bf2.append(") ");
if (aligned) {
bf2.append(" aligned ");
}
bf3.append(");\n");
lst.add(bf1.append(bf2).append(bf3).toString());
}
return lst;
}