列表

时间:2017-07-10 12:25:46

标签: python jdbc teradata snowflake

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

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

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

1 个答案:

答案 0 :(得分:1)

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

您最有效的策略是从Teradata导出到多个分隔文件 - 比如说每行1000万行。然后,您可以使用Amazon的客户端API使用并行性将文件移动到S3,或使用Snowflake自己的PUT命令将文件上载到Snowflake的目标表的临时区域。无论哪种方式,您都可以使用Snowflake的COPY命令在S3桶或Snowflake的临时区域中非常快速地加载文件。