Обновление / замена табличных данных в Google BigQuery с помощью Java-кодирования - PullRequest
0 голосов
/ 23 октября 2019

Я пытаюсь обновить bigquery tabledata, используя Java. WriteDisposition - это вариант, согласно моим исследованиям. Я немного новичок, не мог пройти. любезно помогите.

Говорят, что я пытался вставить, используя WriteChannelConfiguration, которая работала нормально. Необходимо внести изменения в этот код, чтобы обновить таблицу.

public class BigQryAPI {

public static void explicit() {
      // Load credentials from JSON key file. If you can't set the GOOGLE_APPLICATION_CREDENTIALS
      // environment variable, you can explicitly load the credentials file to construct the
      // credentials.
    try {
      GoogleCredentials credentials;
      File credentialsPath = new File(BigQryAPI.class.getResource("/firstprojectkey.json").getPath());  // TODO: update to your key path.
          FileInputStream serviceAccountStream = new FileInputStream(credentialsPath);

        credentials = ServiceAccountCredentials.fromStream(serviceAccountStream);

      // Instantiate a client

      BigQuery bigquery =
          BigQueryOptions.newBuilder().setCredentials(credentials).build().getService();

      System.out.println("Datasets:");
        for (Dataset dataset : bigquery.listDatasets().iterateAll()) {
          System.out.printf("%s%n", dataset.getDatasetId().getDataset());
        }


      //load into table


       TableId tableId = TableId.of("firstdataset","firsttable");


        WriteChannelConfiguration writeChannelConfiguration =
           WriteChannelConfiguration.newBuilder(tableId).setFormatOptions(FormatOptions.csv()).build();

                   TableDataWriteChannel writer = bigquery.writer(writeChannelConfiguration);

                    String csvdata="zzzxyz,zzzxyz";

        // Write data to writer
        try {
          writer.write(ByteBuffer.wrap(csvdata.getBytes(Charsets.UTF_8)));
        } finally {
          writer.close();
        }
        // Get load job

        Job job = writer.getJob();
        job = job.waitFor();
        LoadStatistics stats = job.getStatistics();
        System.out.printf("these are my stats"+stats);

      String query = "SELECT Name,Phone FROM `firstproject-256319.firstdataset.firsttable`;";

      QueryJobConfiguration queryConfig = QueryJobConfiguration.newBuilder(query).build();

      // Print the results.
      for (FieldValueList row : bigquery.query(queryConfig).iterateAll()) {
        for (FieldValue val :  row) {

          System.out.printf("%s,", val.toString());
        }
        System.out.printf("\n");
      }
      }catch(Exception e) {System.out.println(e.getMessage());}
    }
}
...