python - 将 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
知道有什么问题吗?
谢谢!
解决方案
如果我传递相同的命令但作为列表,它可以工作:
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)
推荐阅读
- android - OutlineTextField , TextField 在 Jetpack Compose 1.0.0-alpha02 中不起作用
- node.js - error connecting mongodb to nodeapp but works fine on index page
- laravel - 如何通过 Laravel 中的第一个模型从第二个模型中获取搜索数据?
- firebase - firebase实时数据库需要很长时间才能加载数据
- r - Is there a method to using shinyFiles with shinymaterial via custom HTML?
- javascript - 切换css动画的按钮暂停| 运行播放状态
- python - Apply if condition on a Dataframe
- python - Deep learning model not giving predictions as input layer is incompatible
- node.js - 护照本地猫鼬中缺少密码错误
- spring-boot - SpringBoot Mongo 配置被 application.yaml 忽略