2016-12-19 17 views
0

とにかくコピーコマンドをにコピーして、1つのテーブルからデータをコピーし、別のテーブルにデータを取り込みます(いくつかの条件が良いでしょう)?テーブルからテーブルへのコピーコマンドの条件

私がコピーコマンドのパフォーマンスを観察しているのは、より良いことです。INSERT INTO in vertica。だから、INSERT INTOをcopyコマンドに置き換えようとしています。

ありがとうございます!

答えて

1

あなたがしたいのはINSERT /*+ DIRECT */ INTO table2 SELECT ... FROM table1 WHERE ...です。直接ヒントは、WOSの代わりにROSコンテナに直接ロードするようにします。大きなバルク負荷を行っている場合は、これが最も高速です。このように多くの小さな挿入/選択を行っている場合は、WOSを使用してDIRECTを省略することが最適です。

もう1つの可能性はCREATE TABLE table2 AS SELECT ... FROM table1 WHERE ...です。

最後に、フィルタリングではなくすべてのデータをコピーしている場合(これは私の知るところではありませんが、完全性のためにこれを含めています)、テーブルがパーティション化されていれば、 COPY_PARTITONS_TO_TABLEこれはソーステーブルのROSコンテナからターゲットテーブルへの参照を作成するだけです。新しいテーブルを変更すると、ROSコンテナが再編成されます(タプルムーバーなどを使用して時間が経つにつれて、コンテナは両方のテーブルを再構成しないとコンテナがクリーンアップされません)。

+0

ありがとう@woot !!、INSERT/* + DIRECT * /を使用していますが、そのパフォーマンスはcopyコマンドほど良くありません。 1百万レコードをロードするのに時間がかかります。 – Biswabid

+0

@Biswabidシーケンスを使用していますか?ソース表とターゲット表の間で投影がセグメント化されていますか? – woot

+0

はい、私はその場所に配列を持っています。ソースとターゲットの予測についてはわかりませんが。 – Biswabid

関連する問題