Загрузка CSV в Bigquery с помощью bq - PullRequest
0 голосов
/ 31 августа 2018

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

Таблица:

-ColA строка -ColB строка -ColC строка -ColD integer

Файл:

«Данные ColA», «Данные ColB», «Данные ColC», Данные ColD

Команда

bq load --quote "" --format = csv dataset.TableName c: \ path \ filename.csv ColA: строка, ColB: строка, ColC: строка, ColD: целое число

Я получаю ошибку: «Ошибка при чтении данных, сообщение об ошибке: слишком много значений в строке, начиная с позиции: 164»

Любопытно, что позиция 164 является концом строки 1 в файле, который я пытаюсь импортировать. Если я удаляю все данные, он загружает эту первую строку, но если я помещаю другие строки обратно, то снова происходит сбой. Есть ли возможность установить, что файл является разделителем строк с CR / LF? Я думаю, что это просто по умолчанию, потому что это стандартная CSV, но только мысль.

1 Ответ

0 голосов
/ 14 сентября 2018

Быстрый тест с использованием вашей информации сработал:

$ cat file.csv
"ColA data","ColB data","ColC data",22

$ bq load --quote "" --format=csv test_dataset.table_import_csv file.csv
Upload complete.
Waiting on bqjob_1 ... (0s) Current status: DONE   

$ bq query --use_legacy_sql=false 'select * from test_dataset.table_import_csv'
Waiting on bqjob_2 ... (0s) Current status: DONE

+-------------+-------------+-------------+------+
|    cola     |    colb     |    colc     | cold |
+-------------+-------------+-------------+------+
| "ColA data" | "ColB data" | "ColC data" |   22 |
+-------------+-------------+-------------+------+

$

Затем я добавляю новую запятую в первый ряд и получаю ту же ошибку, что и вы: «Слишком много значений в строке, начиная с позиции: 40»

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

Возможность изменить разделитель столбцов: - field_delimiter , попробуйте:

Символ, обозначающий границу между столбцами в данных. И \ t, и tab разрешены для разделителей табуляции.

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