JDBC 对列表的限制



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

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

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

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

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

最新更新