以 Parquet 格式将 GCP Cloud SQL PostgreSQL 导出到 GCS

问题描述

我在GCP Cloud sql Postgresql中有数据,我想把这些数据以Parquet格式导出到GCS中,我看到不能直接做,只能用sql和CSV格式做,反正以Parquet格式导出数据.

解决方法

我建议您通过 BigQuery 实现这一点

  1. 连接BigQuery to Cloud SQL postgres instance with Federated queries功能
  2. 在 BigQuery 中使用 Cloud SQL postgres 数据创建一个新表
CREATE TABLE my_dataset.temp_table AS
SELECT * FROM EXTERNAL_QUERY("project_id.region.connection_name","SELECT * FROM .....;");
  1. 使用带有镶木地板选项的 BigQuery export table feature(处于预览阶段)
bq --location=region extract \
--destination_format parquet \
project_id:my_dataset.temp_table \
gs://bucket/filename.parquet
  1. 删除 BigQuery 中的临时表

这种方式保证你只有一个文件(或少量的分片文件。

但是您可以加快进程,但此解决方案会生成更多的文件

  1. 使用联合表功能将 BigQuery 连接到 Cloud SQL postgres 实例
  2. Export the data to GCS 仅用于一个查询
EXPORT DATA OPTIONS(
  uri='gs://bucket/filename.parquet*',format='PARQUET') AS
SELECT * FROM EXTERNAL_QUERY("project_id.region.connection_name","SELECT * FROM .....;");

https://cloud.google.com/bigquery/docs/reference/standard-sql/other-statements#export_data_statement