К сожалению, gcloud spanner 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 по умолчанию устанавливается на облачную оболочку, поэтому здесь не должно быть никаких дополнительных зависимостей.