首页 > 解决方案 > 将 Subprocess.Run 与 BigQuery 的 bq 负载一起使用时出现致命命令错误

问题描述

我是 python 新手,我正在尝试使用 subprocess.run 和 bq load util 在 Bigquery 中摄取 CSV 文件。

如果我在 shell(windows)中编写相同的命令,它就像一个 sharm。但是当我尝试在 python 中使用它时,我得到一个错误。

这是我正在使用的代码:


# run() returns a CompletedProcess object if it was successful
# errors in the created process are raised here too

command= r'load --project_id=the_projectid_goes_here --source_format=CSV --skip_leading_rows=1 DataSet.TestTable gs://bucket/folder1/folder2/File.csv C:\Users\Username\Folder\File.json'

process = subprocess.run(['bq', command], shell=True, stdout=subprocess.PIPE)

这是错误:

FATAL Command 'load --project_id=the_projectid_goes_here --source_format=CSV --skip_leading_rows=1 DataSet.TestTable gs://bucket/folder1/folder2/File.csv C:\Users\Username\Folder\File.json' unknown
Run 'bq.py help' to get help

知道有什么问题吗?

谢谢!

标签: pythongoogle-cloud-platformgoogle-bigquerysubprocess

解决方案


如果我传递相同的命令但作为列表,它可以工作:



comma3=[]
comma3.append(r'--project_id=the_projectid_goes_here ')
comma3.append(r'--source_format=CSV ')
comma3.append(r'--skip_leading_rows=1 )
comma3.append(r'DataSet.TestTable ')
comma3.append(r'gs://bucket/folder1/folder2/File.csv ')
comma3.append(r'C:\Users\Username\Folder\File.json')

process = subprocess.run(['bq','load',comma3], shell=True, stdout=subprocess.PIPE)

推荐阅读