Хобрук: Ваш путь к мастерству в программировании

Загрузить канал с разделителями, используя bq load и подпроцесс python в Windows

Я пытаюсь загрузить таблицу командой BQ LOAD из Google Cloud Storage в Bigquery. Для этого я использую скрипт Python, который использует библиотеку подпроцессов. Он работает нормально, за исключением таблицы, в которой в качестве разделителя используется вертикальная черта (|).

Я пробовал много способов избежать этого, но без какого-либо хорошего результата.

Если я попробую это в CMD (Windows), это сработает:

bq load --source_format=CSV --field_delimiter="|" Dataset.TableName gs://sourcefile.CSV C:\schemafile.json

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

BigQuery error in load operation: Field delimiter must be a single character,
found:""|"".

Это код, который я использую (в Windows):

params.append(str("bq"))
params.append(str("load"))
params.append(str("--source_format=CSV"))
params.append(str("--field_delimiter="+field_delimiter))
params.append(str(dest_dataset_table))
params.append(str(source_path))
params.append(str(schema_path))
process = subprocess.run(params, shell=True, capture_output=True)

Как я могу скрыть или загрузить это? Спасибо!


Ответы:


1

У вас есть два варианта:

  1. Передайте значение --field-delimiter скрипта Python без кавычек.
bq load --source_format=CSV --field_delimiter=| Dataset.TableName gs://sourcefile.CSV C:\schemafile.json
  1. Удалите лишние кавычки из разделителя полей перед отправкой задания:
params.append(str("--field_delimiter="+field_delimiter.strip('"')))
25.03.2021
Новые материалы

Учебные заметки JavaScript Object Oriented Labs
Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

Разбор строк запроса в vue.js
Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
«Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

Как настроить Selenium в проекте Angular
Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..