すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:COPYステートメントを使用してApsaraDB RDS for PostgreSQLインスタンスにデータをインポートするときにエラーが発生した場合はどうすればよいですか。

最終更新日:Jan 10, 2024

問題の説明

次の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