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

ApsaraDB RDS:ApsaraDB RDS for PostgreSQLがcopyコマンドを使用してデータをインポートしたときに発生するエラーを修正するにはどうすればよいですか?

最終更新日:Dec 12, 2024

現象

apsaradb RDS for PostgreSQLで、次のSQL文を実行してデータをインポートします。

copy mp3 (NAME,city,nation,lat,lng,url,mediatype,type) from '/home/alex/tmp/pos.csv' with csv;

次のエラーが表示されます。

ERROR: must be superuser to COPY to or from a file
HINT: Anyone can COPY to stdout or from stdin. psql's \copy command also works for anyone.

原因

デフォルトでは、コピーにはスーパーユーザー権限が必要です。 Apsaradb for RDS PostgreSQLはこの権限をサポートしていません。

解決策

説明

以下の点にご注意ください。

  • インスタンス設定やデータの変更など、リスクのある操作を実行する場合は、インスタンスのディザスタリカバリ機能とフォールトトレランス機能を確認して、データのセキュリティを確保します。

  • ECSおよびRDSインスタンスを含むがこれらに限定されないインスタンスの設定およびデータを変更する前に、スナップショットを作成するか、RDSログバックアップを有効にすることを推奨します。

  • Alibaba Cloud管理コンソールでログオンアカウントやパスワードなどのセキュリティ情報を承認または送信した場合は、そのような情報をタイムリーに変更することを推奨します。

ローカルホストにログインし、次のコマンドを実行して制限を回避します。

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] はログインユーザー名を示します。

関連ドキュメント

データを移行する方法の詳細については、「psplコマンドを使用してPostgreSQLデータを移行する」をご参照ください。

適用範囲

  • ApsaraDB RDS for PostgreSQL