【发布时间】:2019-08-27 15:23:02
【问题描述】:
我正在尝试使用 bat 文件中的 bq 命令将表从 BigQuery 导出到 Google CLoud Storage (GCS)。该命令有一个要导出为管道分隔文件的参数。该命令按原样在 CLI 中运行,但是当我使用 call 命令从 bat 文件运行时,它会打开命令但不执行它。注意:相同的操作在没有管道分隔符参数的情况下运行。
知道为什么吗?
call bq extract -F^^^| my-project:my-dataset.mytable gs://myfolder/myfile.csv
这是我的 bat 文件中唯一的一行。当我从命令行运行时,它可以工作:
C:\bq extract -F^^^| my-project:my-dataset.mytable gs://myfolder/myfile.csv
输出:
等待 bqjob_r01419067_00000169eed1d868_1 ... (0s) 当前状态:完成
当我运行 bat 文件时,C:\test.bat
输出:
C:\bq 提取 -F^|我的项目:my-dataset.mytable gs://myfolder/myfile.csv C:\
【问题讨论】:
-
您为什么使用 CALL?为什么要三重转义管道分隔符?对于我使用的某些程序,它就像引用您要使用的分隔符一样简单。
-F "|"。使用 CALL 将使命令中的所有插入符号加倍。 -
我也会试试
-F"^|" -
嗨@Squashman,我正在使用CALL,因为我有更多命令要添加,如果我不使用它,在第一个命令之后处理停止。报价无效
-
你试过
-F"^|"吗?我发现另一个question on StackOverFlow 说确实有效。 -
是的,它可以从命令行运行,但不能从 bat 文件运行。C:\Users\myfolder>CALL bq extract -F"^|" my-project:mydataset.mytable gs://myfolder/Fact.csv 文件名、目录名或卷标语法不正确。
标签: windows batch-file google-bigquery command-line-arguments