CLI «загрузка bq» — как использовать непечатаемый символ в качестве разделителя?

#bash #google-bigquery #command-line-interface

# #bash #google-bigquery #интерфейс командной строки

Вопрос:

У меня возникли проблемы с загрузкой данных в BigQuery в виде одной строки столбца. Я бы хотел, чтобы BigQuery предлагал возможность иметь «без разделителя» в качестве опции, но в то же время мне нужно выбрать самый неясный разделитель ASCII, который я могу найти, чтобы моя строка с одним столбцом не была разделена на столбцы.

При этом CLI не позволяет мне вводить странные символы, поэтому мне нужно использовать API через Python или другие каналы.

Как я могу использовать CLI вместо этого с непечатаемым символом?

Пример Python из BigQuery отложенная загрузка данных: DDL, DML, разделы и полтриллиона просмотров страниц Википедии:

 #!/bin/python
from google.cloud import bigquery
bq_client = bigquery.Client(project='fh-bigquery')
table_ref = bq_client.dataset('views').table('wikipedia_views_gcs')
table = bigquery.Table(table_ref, schema=SCHEMA)
extconfig = bigquery.ExternalConfig('CSV')
extconfig.schema = [bigquery.SchemaField('line', 'STRING')]
extconfig.options.field_delimiter = u'u00ff'
extconfig.options.quote_character = ''
 

Ответ №1:

Чтобы использовать непечатаемый символ с загрузкой BQ, вы можете использовать echo в bash:

 bq load 
 --source_format=CSV 
 --field_delimiter=$(echo -en "x01") 
 --noreplace --max_bad_records=100 
 <bq_dataset>.<bq_table> gs://<bucket_name>/<file_name>.csv
 

Комментарии:

1. Спасибо за совет, Адам Смайсны

2. Ура! Вы обещали 5-10 минут льготного периода: o)

3. вы использовали echo все это время?