Вставьте данные в BigQuery из Google Script: Encountered "" - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь импортировать данные из электронной таблицы Google в BigQuery через Google App Script.Я могу загрузить данные, но у меня возникает ошибка при попытке сделать INSERT INTO.Сообщение об ошибке:

Обнаружено "" в строке 1, столбец 31. [Попробуйте использовать стандартный SQL (https://cloud.google.com/bigquery/docs/reference/standard-sql/enabling-standard-sql)]

Вот мой код:

function insertRowsInBigQuery(){
var projectId = 'xxx';
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getSheetByName("EPC");

var data = sheet.getRange(2, 1, sheet.getLastRow() - 1, 2).getValues();
var sqlData = "INSERT INTO ean.eanToAnalyze (EPC, EAN) VALUES (";

for (i = 0; i < data.length; i++){
  if (i > 0) {
    sqlData += ",(";
  }
  for (j = 0; j < data[0].length; j++){
    sqlData += "'" + data[i][j] + "'";
    if (j < data[0].length -1){
      sqlData += ",";
    } else {
      sqlData +=")";
    }
  }     
}

var request = {
  query: sqlData,
  writeDisposition: 'WRITE_TRUNCATE'
};

var queryResults = BigQuery.Jobs.query(request, projectId);
var jobId = queryResults.jobReference.jobId;

// Check on status of the Query Job.
var sleepTimeMs = 500;
while (!queryResults.jobComplete) {
  Utilities.sleep(sleepTimeMs);
  sleepTimeMs *= 2;
  queryResults = BigQuery.Jobs.getQueryResults(projectId, jobId);
}

Logger.log(queryResults);

}

Почти с той же функцией, меняя только INSERT INTO с помощью SELECT, я получаю данные.

1 Ответ

1 голос
/ 18 июня 2019

Как говорится в сообщении об ошибке, вам необходимо включить standardSQL для использования DML . Кажется, самый простой способ - добавить префикс к вашему запросу:

var sqlData = "#standardSQL\nINSERT INTO ean.eanToAnalyze (EPC, EAN) VALUES (";
...