問題の説明
次のSQL文を実行して、ApsaraDB RDS for PostgreSQLインスタンスにデータをインポートします。
コピーmp3 (NAME、city、nation、lat、lng、url、mediatype、type) から '/home/alex/tmp/pos.csv' with csv;
次のエラーメッセージが表示されます。
ERROR: ファイルとの間でコピーするスーパーユーザーである必要があります
ヒント: 誰でもstdoutまたはstdinからコピーできます。 psqlの \copyコマンドは誰に対しても機能します。
原因
デフォルトでは、COPYステートメントを実行するにはスーパーユーザーの権限が必要です。 ただし、スーパーユーザーの権限はApsaraDB RDS for PostgreSQLではサポートされていません。
解決策
コンピューターにログインし、次のコマンドを実行して制限を回避します。
cat [$Table_Name ].csv | ~/workspace/pg94/bin/psql -h [$Host] -p [$Port] -U [$User] -c "copy [$Table_Name] from stdin"
説明
[$Table_Name] は、データベース内のテーブルの名前を指定します。
[$Host] は、RDSインスタンスが存在するホストの名前またはIPアドレスを指定します。
[$Port] はポート番号を指定します。
[$User] は、RDSインスタンスへのログインに使用されるユーザー名を指定します。
参考資料
ApsaraDB RDS For PostgreSQLインスタンスにデータを移行する方法の詳細については、「pg_dumpおよびpg_restoreを使用してセルフマネージドPostgreSQLインスタンスからApsaraDB RDS for PostgreSQLインスタンスにデータを移行する方法」をご参照ください。
適用範囲
ApsaraDB RDS for PostgreSQL