1

我正在尝试编写一个数据迁移脚本,使用 JDBC 游标将数据从一个数据库移动到另一个数据库(Teradata 到雪花)。

我正在处理的表有大约 1.7 亿条记录,我遇到了一个问题,当我执行批量插入时,列表中的最大表达式数超出,预计最多 16,384,得到 170,000,000。

我想知道是否有任何解决方法,或者是否有更好的方法来批量迁移记录,而无需将记录导出到文件并将其移动到 s3 以供雪花使用。

4

1 回答 1

1

如果你的表有 170M 的记录,那么使用 JDBC INSERT 到 Snowflake 是不可行的。它将对数据库执行数百万个单独的插入命令,每个命令都需要往返于云服务,这需要数百小时。

您最有效的策略是从 Teradata 导出到多个分隔文件 - 例如每个文件有 1 到 1000 万行。然后,您可以使用 Amazon 的客户端 API 使用并行性将文件移动到 S3,或者使用 Snowflake 自己的 PUT 命令将文件上传到目标表的 Snowflake 暂存区。无论哪种方式,一旦文件位于您的 S3 存储桶或 Snowflake 的暂存区域,您就可以使用 Snowflake 的 COPY 命令非常快速地加载文件。

于 2017-09-08T23:30:49.600 回答