Ошибка данных в двойных кавычках при загрузке BigQuery CSV - PullRequest
0 голосов
/ 26 сентября 2018

При загрузке данных из Google Sheets в BigQuery в поле «комментарии» содержатся следующие данные:

function pushToBQ(projectId, datasetId, tableId) {
  var fileId = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

  var jobSpec = { configuration: {
      load: {
        destinationTable: {
          projectId: projectId,
          datasetId: datasetId,
          tableId: tableId
        },
        allowJaggedRows: true,
        writeDisposition: 'WRITE_TRUNCATE',
        allowQuotedNewlines: true,
        schema: {
          fields: [ 
            {name: 'User_id', type: 'STRING'},
            {name: 'email', type: 'STRING'},
            {name: 'Comments', type: 'STRING'},
          ] 
        }
      }
    }
  };

  var spreadsheet = SpreadsheetApp.openById(fileId);
  var MAX_ROWS = 50000;
  var sheet = spreadsheet.getSheetByName("xyz");
  var data = sheet.getDataRange().getValues();
  var csvdata = "";
  for (var row = 1; row < data.length && row < MAX_ROWS + 1; row++) {
    for (var col = 0; col < data[row].length; col++) {
      var cell = data[row][col].toString();
      if (cell.indexOf(",") != -1) {
        csvdata += "\"" + cell + "\"";
      } else {
        csvdata += cell;
      }

      if (col < data[row].length - 1) {
         csvdata += ",";
      }
    }
    csvdata += "\r\n";

  }

  var data = Utilities.newBlob(csvdata, "application/octet-stream");
  BigQuery.Jobs.insert(jobSpec, projectId, data);
}

function daily_upload(){
  pushToBQ("dev", "sampledataset",'sampletable');
}

Пожалуйста, предоставьте мнеРешение, я хочу загрузить комментарии, как есть, без замены их пробелами.

1 Ответ

0 голосов
/ 27 сентября 2018

Параметры, отличные от создания CSV из вашего листа и последующего импорта этого CSV в BigQuery:

  1. Считывание из вашего листа в BigQuery путем создания «внешней таблицы» (требует, чтобы данные находились на первой вкладке листа).Затем вы можете скопировать из этой внешней таблицы в настоящую таблицу больших запросов.

  2. используйте BigQuery.Tabledata.insertAll() для вставки данных в таблицу в формате JSON, а не для форматирования CSV.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...