static void writeToSpanner()

in spanner/jdbc/src/main/java/com/example/spanner/jdbc/LoadCsvExample.java [223:279]


  static void writeToSpanner(Iterable<CSVRecord> records, String tableName)
      throws SQLException {
    System.out.println("Writing data into table...");
    List<Mutation> mutations = new ArrayList<>();
    for (CSVRecord record : records) {
      int index = 0;
      WriteBuilder builder = Mutation.newInsertOrUpdateBuilder(tableName);
      for (String columnName : tableColumns.keySet()) {
        // Iterates through columns in order. Assumes in order columns when no headers provided.
        TypeCode columnType = tableColumns.get(columnName);
        String recordValue = null;
        if (validHeaderField(record, columnName)) {
          recordValue = record.get(columnName).trim();
        } else if (validNonHeaderField(record, index)) {
          recordValue = record.get(index).trim();
          index++;
        }
        if (recordValue != null) {
          switch (columnType) {
            case STRING:
              builder.set(columnName).to(recordValue);
              break;
            case BYTES:
              builder.set(columnName).to(Byte.parseByte(recordValue));
              break;
            case INT64:
              builder.set(columnName).to(Integer.parseInt(recordValue));
              break;
            case FLOAT64:
              builder.set(columnName).to(Float.parseFloat(recordValue));
              break;
            case BOOL:
              builder.set(columnName).to(Boolean.parseBoolean(recordValue));
              break;
            case NUMERIC:
              builder.set(columnName).to(Value.numeric(BigDecimal.valueOf(
                  Double.parseDouble(recordValue))));
              break;
            case DATE:
              builder.set(columnName).to(com.google.cloud.Date.parseDate(recordValue));
              break;
            case TIMESTAMP:
              builder.set(columnName).to(com.google.cloud.Timestamp.parseTimestamp(recordValue));
              break;
            default:
              System.out.print("Invalid Type. This type is not supported.");
          }
        }
      }
      mutations.add(builder.build());
    }
    CloudSpannerJdbcConnection spannerConnection = connection
        .unwrap(CloudSpannerJdbcConnection.class);
    spannerConnection.write(mutations);
    spannerConnection.close();
    System.out.println("Data successfully written into table.");
  }