はじめに

Verticaでデータロードを実施する際、一般的にCOPYコマンドを利用します。COPYコマンドはスーパーユーザ(dbadmin)であれば事前準備なく実行できますが、データロード用ユーザ等、一般ユーザでデータロードを行いたい場合は、COPYコマンドを実行するために必要な権限を与える必要があります。

本記事では、一般ユーザへCOPYコマンドに必要な権限を与え、COPYコマンドによるデータロードが実行できるようになるまでの手順をご紹介します。

COPYコマンドを実行するのに必要な権限

一般ユーザがCOPYコマンドを実行するには、以下の権限が必要です。
・ファイルの読み込み権限
・スキーマに対するUSAGE権限
・表に対するINSERT権限

ファイルの読み込み権限の付与

一般ユーザ(データベースユーザ)でCOPYコマンドを実行する場合、Verticaサーバ上のファイルを参照する権限が必要になります。ユーザを作成しただけでは、データロード用のCSVファイルを読み込むことができません。そのため、以下の作業を実施する必要があります。

LOCATIONオブジェクトの作成

まずは、Verticaサーバ上でCSVファイルを配置するディレクトリを「USER」タイプ(※)のLOCATIONオブジェクトとして定義します。


※LOCATIONには複数のタイプがあります。

LOCATIONのタイプ内容
DATA永続データと一時テーブルの作成先
TEMP一時ファイルの作成先(ソート、結合、グループ化に使用)
DATA、TEMPDATAとTEMPの作成先
USERスーパーユーザ以外がファイルの読み書きに利用


LOCATIONオブジェクトに対する参照権限の付与

上記で作成したLOCATIONオブジェクトへの参照権限をCOPYコマンドを利用するユーザに付与します。



スキーマに対するUSAGE権限の付与


テーブルのINSERT権限の付与


COPYコマンドによるデータロードを実施

各権限が付与できたら、一般ユーザにてCOPYコマンドによるデータロードが可能になります。



参考情報

COPY
https://my.vertica.com/docs/9.0.x/HTML/index.htm#Authoring/SQLReferenceManual/Statements/COPY/COPY.htm

CREATE LOCATION
https://my.vertica.com/docs/9.0.x/HTML/index.htm#Authoring/SQLReferenceManual/Statements/CreateLocation.htm

GRANT (Storage Location)
https://my.vertica.com/docs/9.0.x/HTML/index.htm#Authoring/SQLReferenceManual/Statements/GRANT/GRANTStorageLocation.htm


検証バージョン

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