はじめに

catコマンドやgrepコマンドなどの標準出力の結果を、Verticaのテーブルにロードする方法をご紹介します。

用途

この方法は以下の様な場面で役に立ちます。
・一時テーブルや中間テーブル、集計テーブルを作成する場合
・テーブルを再構築したい場合
・他のデータソースからデータを取り込みたい場合

構文と実行例

下記構文の「SELECT文」内に元テーブルを指定し、「テーブル名」に別テーブルを指定します。
<標準出力のコマンド> | vsql -w <パスワード> -c “copy <テーブル名> from STDIN <各種オプション>”

サンプルデータの確認

テスト用テーブルの作成

標準出力の結果をテーブルにロード

作成したテーブルにテスト用のデータが正常にロードされました。

応用例

このやり方を応用すると、特定列のデータを任意の列にロードすることもできます。

特定列のデータを標準出力させてロード

1列目のデータと3列目のデータがそれぞれ1列目と3列目に正常にロードされました。

特定行+特定列のデータを標準出力させてロード

「5」のデータが含まれる行を抽出し、1列目と3列目のデータが正常にロードされました。

補足

今回はCSVファイルの標準出力結果をロードする例でしたが、さらに応用すると、他のノードで稼働している他社製データベースの標準出力の結果をVerticaに取り込むといったことも可能です。
コマンド例<他社データベースからの標準出力の結果> | vsql -h <Vertica稼働ノード> -U <ユーザ名> -w <パスワード> -c “COPY <テーブル名> FROM STDIN <各種オプション>”

ちょっとしたテストなどを行う際にも利用できますので、是非お試しください。

参考情報

データロードに関するTipsはこちらの記事に纏めています。

データロードのまとめ
http://vertica-tech.ashisuto.co.jp/load-summary/

検証バージョンについて

この記事の内容はVertica 9.1で確認しています。