Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在redshift上使用jdbc下载大型数据集_Jdbc_Amazon Redshift_Sql Workbench J - Fatal编程技术网

在redshift上使用jdbc下载大型数据集

在redshift上使用jdbc下载大型数据集,jdbc,amazon-redshift,sql-workbench-j,Jdbc,Amazon Redshift,Sql Workbench J,我正在使用Amazon Redshift JDBC驱动程序连接到SQL Workbench/J上的Redshift 我想得到一个大型数据集查询结果(几百万行) WbExport乍一看似乎有答案() 但是,它似乎希望在尝试将整个结果集导出到文件之前将其加载到内存中,给我一个内存警告,并在不创建输出文件的情况下中止对我的查询,因此这种方法似乎不起作用 有没有更好的方法不涉及放弃SQL Workbench和JDBC连接?如果没有,建议的可行替代方案是什么,可以最大限度地减少所需的新工具或访问量?强烈建

我正在使用Amazon Redshift JDBC驱动程序连接到SQL Workbench/J上的Redshift

我想得到一个大型数据集查询结果(几百万行)

WbExport乍一看似乎有答案()

但是,它似乎希望在尝试将整个结果集导出到文件之前将其加载到内存中,给我一个内存警告,并在不创建输出文件的情况下中止对我的查询,因此这种方法似乎不起作用


有没有更好的方法不涉及放弃SQL Workbench和JDBC连接?如果没有,建议的可行替代方案是什么,可以最大限度地减少所需的新工具或访问量?

强烈建议您不要尝试从Redshift中检索数百万行作为查询结果。这是非常低效的,它会在集群运行时降低集群的速度


相反,使用
UNLOAD
查询将数据并行提取到S3<代码>卸载速度将加快100-1000倍

虽然对于红移不是很有效,但如果您确实需要它,您应该能够为workbench-设置fetchsize


Aws红移文档关于相同的-

您可以使用最快的方法。 1.将数据卸载到S3。
2.然后从S3下载数据

对于一个庞大的数据集,我将研究数据库本身(本例为Amazon Redshift)是否能够提供解决方案。我不熟悉红移本身,但我发现了一个关于卸载数据的链接,这可能会证明很有用。我不知道红移驱动程序,但对于Postgres,您需要配置基于光标的检索(如链接“内存使用和WbExport”部分所述):我可以看出,问题在于它试图将整个内容加载到内存中——在Task Manager中观察工作台进程运行时的内存使用情况就是明证。一种解决方法是加载“sqlworkbench.cmd”,它似乎将可用内存的最大内存使用量除以2。我改为除以1.2,我的查询成功了。。但这不是一个解决方案,只是针对这种特定情况的一种解决方法,因为我的计算机中正好有足够的可用空间。您是否尝试设置
BlockingRowsMode
选项: