Как загрузить несколько CSV-файлов (разные схемы) в BigQuery - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть 6500 CSV-файлов с ~ 250 различными схемами.т.е. эти файлы взяты из набора данных FDIC (регулятора банков США).Они были загружены в хранилище облачного хранилища Google: enter image description here

Каждый финансовый квартал имеет ~ 250 различных CSV.Каждый CSV в финансовом квартале имеет свою схему: enter image description here

Существует ~ 250 уникальных схем.Схемы повторяются каждый финансовый квартал.Файлы csv возвращаются на 100 финансовых кварталов к 1992 году: enter image description here

Несколько CSV с одной и той же схемой могут быть загружены с использованием группового символа.например, gs/path/*.csv.Однако каждое имя таблицы не генерируется автоматически из имени файла.Пользовательский интерфейс требует имя таблицы в качестве входных данных: enter image description here

Как загрузить в большой запрос несколько CSV-файлов с разными схемами?

1 Ответ

0 голосов
/ 12 февраля 2019

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

gsutil ls gs://mybucket/subfolder/*.csv | xargs -I{} echo {} | awk '{n=split($1,A,"/"); q=split(A[n],B,"."); print "mydataset."B[1]" "$0}' | xargs -I{} sh -c 'bq --location=US load --replace=false --autodetect --source_format=CSV {}'

Обязательно замените location, mydataset на нужные значения.Кроме того, обратите внимание на следующие предположения:

  • Первая строка каждого CSV считается заголовком и, следовательно, обрабатывается как имена столбцов.
  • Мы пишем с помощью --replace=false флаг, означающий, что данные будут добавляться при каждом запуске команды.Если вы хотите вместо этого перезаписать, просто установите его на true, и данные всех таблиц будут перезаписываться при каждом запуске.
  • CSV-имена файлов (часть до .csv используется в качестве имени таблицы. Вы можетеизмените скрипт awk, чтобы изменить его на любую другую альтернативу.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...