0

我正在尝试使用 BQ LOAD 命令将表从 Google Cloud Storage 加载到 Bigquery。为此,我使用了一个使用 subprocess 库的 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)

我怎样才能逃避或加载这个?谢谢!

4

1 回答 1

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('"')))
于 2021-03-25T03:02:52.023 回答