【发布时间】:2020-05-14 23:38:11
【问题描述】:
我使用 GoogleCloudStorageToBigQueryOperator 的目的是将一系列类似结构的文件带入大查询中。
因为我知道由于摄取的限制,需要在 bigquery 中解析文件,所以我想将每一行数据作为单个数据元素(一个字段)引入。以下是我的代码:
GCS_to_GBQ_Raw = GoogleCloudStorageToBigQueryOperator(
task_id='GCS_to_GBQ_Raw',
bucket='files',
source_objects=['To_Process/*.csv'],
source_format='CSV',
destination_project_dataset_table='DS.RAW',
schema_fields=[
{'name': 'datarow', 'type': 'STRING', 'mode': 'NULLABLE'}
],
field_delimiter='\t',
autodetect=False,
skip_leading_rows=1,
write_disposition='WRITE_TRUNCATE',
quote_character='µ',
google_cloud_storage_conn_id='GCP_Staging',
bigquery_conn_id='GCP_Staging',
dag=dag)
我尝试了以下方法:
- field_delimiter - 我尝试过模糊的 ascii 字符,例如节字符、管道和制表符。我知道文件中的数据没有这些。
- autodetect=真假。
- quote_character=''、'""'、当前字符 mu,以及我知道的其他字符不在文件中。
我每次运行时都会收到一组随机错误:
- 列太多
- 引用和字段结尾之间的数据
- 正在尝试追加
我该如何进行这项工作?如何引入完整的行,以便在 bq 中解析它们?
谢谢!
【问题讨论】:
-
那么,您的 BQ 表将只有一列,该列将包含文件中一行中的所有数据?
-
你能提供一个输入数据的例子吗?