Загрузка нескольких CSV из локального источника в GBQ с помощью командной строки - PullRequest
0 голосов
/ 19 апреля 2020

Я собираю значение для l oop в Google Cloud SDK Shell, которое будет загружать каждый CSV из текущего каталога (на моем локальном компьютере) в отдельную таблицу Google BigQuery, все в одном наборе данных. Кроме того, я хочу, чтобы созданные таблицы в GBQ имели одинаковые имена соответствующих CSV-файлов (кроме части .csv).

Я действительно смог сделать все это с помощью следующей командной строки, ожидая, что она добавляет все CSV в одну таблицу, а не в отдельные таблицы.

for %d in (*.csv); do set var1=%d & bq load --autodetect --source_format=CSV "DatasetName.%var1:~0,-5%" %d

Подсказка: мне кажется, что переменная "var1" обновляется в каждом l oop, но Функция загрузки bq не использует обновленные значения, она сохраняет прежнее исходное значение до тех пор, пока l oop не закончится независимо.

Токовый выход: enter image description here

1 Ответ

0 голосов
/ 21 апреля 2020

Несмотря на то, что мне не удалось воспроизвести загрузку BigQuery из моей локальной среды в BigQuery. Я смог воспроизвести этот случай, загружая файлы .csv из Google Shell в BigQuery.

Я попытался запустить ваш код, но мои попытки не увенчались успехом. Таким образом, я создал следующий скрипт bash для сопоставления и загрузки всех файлов .csv в BigQuery с помощью команды bq load, описанной здесь .

#!/bin/bash
echo "Starting the script"
for i in *.csv;
do
        echo ${i%.csv} " loading";
        bq load --autodetect --source_format=CSV project_id:dataset.Table_${i%.csv} ./$i;
        echo ${i%.csv} " was loaded"
done

Обратите внимание, что скрипт отображает только файлы .csv в каталоге, в котором он находится. Кроме того, $ {i% .csv} возвращает только имя файла без расширения, которое используется для именования таблицы назначения. С другой стороны, $ i возвращает все имя файла, включая .csv , поэтому оно используется для указания на исходный файл в bq команда загрузки .

О команде bq , флаг - автоопределение использовался в порядке для автоматического определения схемы каждой таблицы.

Кроме того, поскольку это задание загрузки происходит из локального источника данных, необходимо указать идентификатор проекта в пути к таблице назначения, здесь: project_id: dataset.Table _ $ {i% .csv} .

В качестве дополнительной информации вы также можете загрузить свои данные в Google Cloud Bucket и загрузить все файлы в BigQuery, используя подстановочные знаки , Python скрипт с al oop или поток данных (потоковое или пакетное) в зависимости от ваших потребностей.

...