Я попробовал несколько csv -F ormats (разные escape-символы, кавычки и другие настройки), чтобы экспортировать данные из MySQL и импортировать их в BigQuery, но я не смог найти решение, которое работает в каждом случае.
Google SQL требует следующий код для импорта/экспорта из/в MySQL. Хотя Cloud SQL не BigQuery, это хорошая отправная точка:
SELECT * INTO OUTFILE 'filename.csv' CHARACTER SET 'utf8'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '' FROM table
В настоящий момент я использую следующую команду для импорта сжатого csv в BigQuery: bq --nosync load -F "," --null_marker "NULL" --Format=csv PROJECT:DATASET.tableName gs://bucket/data.csv.gz table_schema.json
С одной стороны, команда bq не позволяет установить escape-символ ("
экранируется другим "
, который, как представляется, является четко определенным CSV -F ormat). С другой стороны, \"
как escape-символ для MySQL-экспорта приведет к "N
как Null-value ", который тоже не работает:
CSV table references column position 34, but line starting at position:0 contains only 34 columns. (error code: invalid)
Поэтому мой вопрос: как написать (таблицу) независимую команду экспорта для MySQL в SQL, чтобы сгенерированный файл можно было загрузить в BigQuery. Какой escape-символ следует использовать и как обрабатывать/устанавливать нулевые значения?