Google cloud platform 如何将谷歌扳手查询结果导出到.csv或谷歌工作表?

Google cloud platform 如何将谷歌扳手查询结果导出到.csv或谷歌工作表?,google-cloud-platform,export,resultset,google-cloud-spanner,Google Cloud Platform,Export,Resultset,Google Cloud Spanner,我是谷歌扳手的新手,我运行了一个查询,发现了大约5万行数据。我想将该结果集导出到本地计算机,如.csv或谷歌工作表。以前我用过蟾蜍,在那里我有一个导出按钮,但在这里我看不到这些选项中的任何一个。有什么建议吗 您可以使用JDBC驱动程序将许多标准数据库工具与googlecloud扳手配合使用 看看这篇文章: Toad并没有作为示例包括在内,我不知道Toad是否支持动态加载JDBC驱动程序并连接到任何通用JDBC数据库。如果没有,您可以尝试本文中列出的其他工具之一。其中大多数还包括导出功能。gclo

我是谷歌扳手的新手,我运行了一个查询,发现了大约5万行数据。我想将该结果集导出到本地计算机,如.csv或谷歌工作表。以前我用过蟾蜍,在那里我有一个导出按钮,但在这里我看不到这些选项中的任何一个。有什么建议吗

您可以使用JDBC驱动程序将许多标准数据库工具与googlecloud扳手配合使用

看看这篇文章:


Toad并没有作为示例包括在内,我不知道Toad是否支持动态加载JDBC驱动程序并连接到任何通用JDBC数据库。如果没有,您可以尝试本文中列出的其他工具之一。其中大多数还包括导出功能。

gcloud-panner-databases-execute-sql命令允许您在命令行上运行sql语句,并将输出重定向到文件。
--format=csv
全局参数应以csv格式输出


不幸的是,
gcloud-panner databases execute sql
--format=csv
不太兼容,因为数据在引擎盖下的布局方式(数组而不是地图)。虽然不太好看,但这是可行的:

SQL_STRING='select * from your_table'
gcloud spanner databases execute-sql [YOURDB] --instance [YOURINSTANCE] \
--sql=SQL_STRING --format json > data.json

jq '.metadata.rowType.fields[].name' data.json | tr '\n' ', ' > data.csv
echo "" >> data.csv
jq '.rows[] | @csv' data.json >> data.csv

这会将json形式的查询转储到data.json,然后将列名写入CSV,后面是换行符,最后是行内容。另外,默认情况下,jq安装在cloudshell上,因此不会带来任何额外的依赖关系。

正如@redpandacurios所述,您可以使用
gcloud-panner-databases-execute-sql
CLI命令来实现这一点,尽管没有
--format-csv
选项,因为它会导致
format[csv]需要非空投影。
gcloud v286.0.0上出现错误

这不会产生投影错误:

gcloud spanner databases execute-sql \
  [DATABASE] \
  --instance [INSTANCE] \
  --sql "<YOUR SQL>" \
  >output.csv
gcloud扳手数据库执行sql\
[数据库]\
--实例[实例]\
--sql“”\
>output.csv
但您得到的输出格式如下:

<column1> <column2>
<data1>   <data1>
<data2>   <data2>
...
<dataN>   <dataN>

...
所以不完全是csv,而是空格分隔的。如果需要JSON,请使用
--format JSON>output.JSON
代替最后一行


要获得CSV,您可能需要按照另一个答案中的说明将JSON转换为CSV。

I get
Format[CSV]需要一个非空投影。
@therealmitchconnors删除
--Format=CSV
修复了这一问题,因为它现在似乎是扳手的默认设置
gcloud panner databases[DATABASE]--instance[instance]--sql”“>output.csv
下面是一个脚本,它可以使这一过程更快一些,格式也更好: