как обработать MySQL запрос результатов, чтобы отправить их по большой таблице запросов - PullRequest
0 голосов
/ 14 июня 2019

Я пишу скрипт Google Apps для отправки данных из базы данных Mysql в таблицу больших запросов.

Я знаю, как запросить базу данных mysql. Я знаю, как записать данные из CSV-файла или листов Google в большой запрос. Тем не менее, я хотел бы иметь возможность отправлять результаты запроса MySQL непосредственно в BigQuery. как я могу это сделать?

В основном мои результаты SQL хранятся в переменной:

var results = stmt.executeQuery('select * from table');

Таблица довольно проста:

Col1        Col2     Col3
String 1    foo1     1
String 2    foo2     2
String 3    foo3     3
etc...      etc...   etc...

Из скрипта стороны Big Query у меня есть это:

var data = results.getBlob().setContentType('application/octet-stream');

очевидно, что при запуске моего скрипта у меня возникает следующая ошибка:

Cannot find function getBlob in object

Я не совсем понимаю, как я могу получить доступ к своим данным в переменной results, и я не знаю, как отформатировать их в удобочитаемом формате для выполнения следующего .getBlob().setContentType('application/octet-stream')

До сих пор я пытался передать значения results в новую переменную с именем rawdata методом push, используя следующий цикл:

  while (results.next()) {
    var rowString = '';
    for (var col = 0; col < numCols; col++) {
      rowString += results.getString(col + 1) + '\t';
    }

    Logger.log(rowString);
    rawdata.push(rowString)
  }

Однако rawdata.getBlob().setContentType('application/octet-stream'); верните мне ту же ошибку.

Понятия не имею, как отформатировать мои необработанные данные или переменную результатов.

1 Ответ

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

Проблема:

  • Попытка получить BLOB-объект из строки / массива с помощью getBlob, когда такой метод недоступен ни для одного типа.
  • Использование \t для создания csv.

Решение:

  • csv, по умолчанию использует запятую , в качестве разделителя полей и символ новой строки\n в качестве разделителя строк
  • Вам необходимо создать новый BLOB-объект с помощью утилит.

Фрагмент:

  var rawdata = [];
  while (results.next()) {
    var rowString = '';
    for (var col = 0; col < numCols; col++) {
      rowString += '"' + results.getString(col + 1) + '",';//quotes " if present in results data, must be replaced with double quotes ""
    }
    rawdata.push(rowString.slice(0, -1))
  }
 var data = Utilities.newBlob(rawdata.join('\n'),'application/octet-stream');

Ссылки:

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