我正在尝试编写一个数据迁移脚本,使用 JDBC 游标将数据从一个数据库移动到另一个数据库(Teradata 到雪花)。
我正在处理的表有大约 1.7 亿条记录,我遇到了一个问题,当我执行批量插入时,列表中的最大表达式数超出,预计最多 16,384,得到 170,000,000。
我想知道是否有任何解决方法,或者是否有更好的方法来批量迁移记录,而无需将记录导出到文件并将其移动到 s3 以供雪花使用。
我正在尝试编写一个数据迁移脚本,使用 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 命令非常快速地加载文件。