【问题标题】:Import a csv.gzip from Google Storage to CloudSQL将 csv.gzip 从 Google Storage 导入 CloudSQL
【发布时间】:2019-07-11 13:12:46
【问题描述】:

我想将每天 10 Go 的数据从 Google Storage 导入 PostgreSQL,并将一列定义为主键。

我有 19 个压缩的 csv 文件,每个文件重 135 个月。导入一个文件大约需要 35 秒(总共 11 分钟)。导入文件的命令:

gcloud sql import csv instance-name gs://bucket/file.csv.gzip --database=database --table=table --quiet

当我在命令末尾直接在cloudsql中添加主键时,需要30分钟。添加主键的命令:

ALTER TABLE table ADD PRIMARY KEY (id);

是否可以加快这两个操作?

【问题讨论】:

    标签: postgresql google-cloud-platform google-cloud-storage google-cloud-sql csv-import


    【解决方案1】:

    我按照文档建议的最佳实践 [1] 和将 CSV 导入 CloudSQL 数据库的指南 [2] 在我的 GCP 实例上复制了您的案例。

    总之,最佳实践和步骤提到:

    1. 将您的 CSV 文件上传到 GCP 中的存储桶中
    2. 将 CSV 文件压缩为 .gz
    3. 导入前创建数据库和表结构

    如指南中所述,我生成了一个大小为 35Mb~ 的压缩 CSV 文件并将其上传到存储桶中。然后,我使用 Postgresql 在 CloudSQL 中创建了我的数据库和表结构。从那里我按照指南运行了与您相同的命令:

    gcloud sql import csv instance-name gs://bucket/file.csv.gzip --database=database --table=table --quiet
    

    我得到的计时结果几乎和你一样,这意味着我们正在尽最大努力为这个命令计时。

    下一个,

    ALTER TABLE table ADD PRIMARY KEY (id);
    

    我尝试在导入 CSV 之前添加约束(当我运行表定义的命令时),它工作正常,命令在我的实例上运行了 1 秒。然后我导入了 CSV,它没有问题。 请记住,如果在创建表后运行命令,则必须处理所有行以查看它们是否符合约束条件,如果有数百万行,这可能会导致一些延迟。更多信息请参考

    “添加 table_constraint [无效]”

    来自 postgresql 文档:https://www.postgresql.org/docs/current/sql-altertable.html#AEN64781

    请告诉我你的想法。

    [1]https://cloud.google.com/sql/docs/postgres/import-export/#best_practices_for_importing_and_exporting

    [2]https://cloud.google.com/sql/docs/postgres/import-export/importing#csv

    【讨论】:

    • 我已经尝试在导入文件之前添加主键,但导入所有文件的时间保持不变(大约 50 分钟)。对于我导入的每个文件,都会处理所有行以检查约束,并且每个文件的导入时间变得越来越长(第一个文件需要 50 秒,第二个文件需要 2 分钟,...)。我也试过“ADD table_constraint NOT VALID”,但它只是检查约束或外键。
    • 我明白了。看起来这是 GCP 中的预期行为,并且看起来更像是 Postgresql 如何处理数据。我发现了一些关于 MySQL [1] 长期运行导入的提示,这些提示可能会有所帮助。请让我知道你的想法 [1] cloud.google.com/sql/docs/mysql/import-export/…
    猜你喜欢
    • 2016-07-27
    • 2013-07-15
    • 2023-04-08
    • 1970-01-01
    • 2019-02-13
    • 2017-11-13
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多