このページでは、CSV ファイルを AlloyDB データベースにインポートする方法について説明します。
インポートを実行する手順は次のとおりです。
Cloud Storage バケットに CSV ファイルをアップロードします。
インポート オペレーションを実行するクライアント ホストを準備します。
データベースに CSV ファイルをインポートします。
手順を実行するために作成したリソースをクリーンアップします。
始める前に
- 使用している Google Cloud プロジェクトで、オーナー(
roles/owner
)または編集者(roles/editor
)の基本 IAM ロールが必要です。または、次の事前定義された IAM ロールが必要です。- AlloyDB 管理者(
roles/alloydb.admin
)または AlloyDB 閲覧者(roles/alloydb.viewer
) - Storage 管理者(
roles/storage.admin
) - Compute インスタンス管理者(v1)(
roles/compute.instanceAdmin.v1
)
- AlloyDB 管理者(
CSV ファイルをアップロードする
CSV ファイルをアップロードするには、Cloud Storage バケットを作成し、CSV ファイルをそのバケットにアップロードします。
AlloyDB データベースが存在するプロジェクトとリージョンに Standard Storage のリージョン ストレージ バケットを作成します。
作成したストレージ バケットに CSV ファイルをアップロードします。
クライアント ホストを準備する
インポート オペレーションを実行するクライアントホストを準備するには、データベースが配置されている AlloyDB プライマリ インスタンスに接続できる Compute Engine VM を作成し、その VM に psql
ツールと Google Cloud CLI をインストールします。
psql クライアントをインスタンスに接続するの手順に沿って、適切な接続と
psql
ツールがインストールされた Compute Engine VM を作成します。次の手順を行う場合は、インポートする CSV ファイルに対応できる十分なローカル ストレージを Compute Engine VM に割り当ててください。gcloud CLI をインストールして、Cloud Storage バケット内の CSV ファイルにコマンドラインからアクセスできるようにします。
CSV ファイルをインポートする
CSV ファイルをインポートするには、データベースが存在する AlloyDB プライマリ インスタンスの IP アドレスを取得し、psql
ツールを使用して CSV データを格納するテーブルを作成し、インポートします。
- 詳細を表示して、データベースが存在する AlloyDB プライマリ インスタンスの IP アドレスを取得します。
- Compute Engine VM に SSH 接続します。
コンソール
- Google Cloud コンソールで、[VM インスタンス] ページに移動します。
- 仮想マシン インスタンスのリストで、作成したインスタンスの行にある [SSH] をクリックします。
gcloud
gcloud compute ssh
コマンドを使用して、作成したインスタンスに接続します。gcloud compute ssh --project=PROJECT_ID --zone=ZONE VM_NAME
次のように置き換えます。
PROJECT_ID
: インスタンスが含まれているプロジェクトの ID。ZONE
: インスタンスが存在するゾーンの名前。VM_NAME
: インスタンスの名前。
- CSV ファイルをクライアント ホストのローカル ファイル システムにコピーします。
gcloud storage cp gs://BUCKET_NAME/CSV_FILE_NAME .
- CSV ファイルをインポートします。
psql
クライアント ツールを実行し、psql プロンプトでデータベースに接続します。psql -h IP_ADDRESS -U postgres \c DB_NAME
postgres
ユーザーのパスワードを入力するよう求められます。IP_ADDRESS
: プライマリ インスタンスの IP アドレス。DB_NAME
: CSV データを保存するデータベースの名前。
- CSV データを格納するテーブルを作成します。次に例を示します。
CREATE TABLE weather ( city varchar(80), temp_lo int, temp_hi int, prcp real, date date );
上記の
CREATE TABLE
ステートメントは説明のみを目的としています。列が CSV データと一致するテーブルを作成します。 - CSV ファイルからデータをインポートします。
\copy TABLE_NAME(COLUMN_LIST) FROM 'CSV_FILE_NAME' DELIMITER ',' CSV HEADER ;
TABLE_NAME
: 前の手順で作成したテーブルの名前。(COLUMN_LIST)
: データをインポートするテーブル列の名前をカンマ区切りで指定します。順序は CSV ファイル内のデータの順序に従います。CSV_FILE_NAME
: CSV ファイル。HEADER
: CSV ファイルに無視するヘッダー行が含まれていることを示します。そうでない場合は、このパラメータを省略します。
psql
の\copy
コマンドは、データ インポート オペレーションを制御する PostgreSQL のCOPY
コマンドと同じオプションと引数を使用します。
リソースのクリーンアップ
CSV ファイルが正常にインポートされたら、Cloud Storage バケットを削除し、インポート手順で使用した Compute Engine VM を削除できます。