2017-11-13 22 views
0

Amazon Redshift JDBCドライバを使用して、Redshift on SQL Workbench/Jに接続しています。redshiftでjdbcを使用して大きなデータセットをダウンロード

大きなデータセットのクエリ結果(数百万行)を手に入れたいと思っています。

一見したところ、WbExportは答えがあるようです()。

しかし、ファイルにエクスポートしようとする前に結果セット全体をメモリにロードし、メモリ警告を出し、出力ファイルを作成せずに私のクエリを中止するので、このアプローチはうまくいかない。

SQL WorkbenchとJDBC接続を削除するより良い方法はありますか?そうでない場合は、新しいツールやアクセスの必要性を最小限に抑えるための推奨可能な代替手段は何ですか?

+0

巨大なデータセットについては、データベース自体(この場合はAmazon Redshift)が解決策を提供できるかどうかを調べます。私はRedshiftそのものに精通していませんが、有用であるかもしれないデータをアンロードするリンクを発見しました。 – alaniane

+0

私はRedshiftドライバについてはわかりませんが、Postgresではカーソルベースの検索を設定する必要があります(リンクの "メモリ使用量とWbExport"セクションで説明しています):https://www.sql-workbench.net /manual/dbms-problems.html#pg-problems –

+0

タスクマネージャのメモリ使用量を見ると、タスクマネージャが実行されていることを確認することで、メモリ全体に負荷をかけようとしているということがわかります。 1つの回避策は 'sqlworkbench.cmd'をロードすることでした。最大メモリ使用量を2で割った使用可能メモリに割り当てているようです。私は1.2で割った値に変更しました。私のクエリはうまくいきました。解決策ではありませんが、私のマシンで十分に利用できるので、この特定のケースの回避策です。 –

答えて

0

をお薦めしません Redshiftから何百万もの行を検索結果として検索しようとします。これは非常に非効率的で、クラスタの実行中はクラスタの速度が低下します。

代わりにUNLOADクエリを使用して、データをS3に並列に抽出します。 UNLOADは100倍〜1000倍速くなります。 https://docs.aws.amazon.com/redshift/latest/dg/r_UNLOAD.html

関連する問題