private List transformInsertString()

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;
  }