我们需要设计一个流程,能够有效地将上游流程定期创建的大型 CSV 文件导入 AlloyDB。我们想使用 python 来完成这项任务。这种情况下的最佳做法是什么?
一些注意事项:
我们对 CloudSQL postgres 实例有类似的设置。与 AlloyDB 相比,CloudSQL 提供了一个很好的API,充当抽象层并处理文件的整个导入。这样,就减轻了开发者的很多负担。
首先,AlloyDB(目前)没有与 CloudSQL 类似的抽象层来从云存储导入文件。
当然,您可以将 CSV 文件从存储桶导入 AlloyDB,但这可能不太方便。根据您的需要,您可以
对于小文件:创建一个读取 CSV 文件、连接到数据库并从文件内容发出 SQL 插入语句的脚本。使用 [postgre 的多值语法](https://www.postgresqltutorial.com/postgresql-tutorial/postgresql-insert-multiple-rows/。与下面的选项相比,预计性能会明显较差
对于使用 python 的中型到大型文件:一些 python postgres 驱动程序支持 postgre 的 COPY 命令。这比发出 SQL 命令要快得多。示例:pyscopg3、asyncpg。后者还可以与 [Google AlloyDB python 连接器] (https://cloud.google.com/alloydb/docs/connect-language-connectors) 结合使用,以实现轻松且安全的连接。两者都与 SQL 炼金术有关。
对于非常大的文件,如果您需要边缘性能,您可能需要先将文件复制到数据库服务器,然后在服务器上使用 psql direclty 执行 postgres COPY 命令。