sql >> データベース >  >> RDS >> PostgreSQL

コマンドラインからのPostgreSQLCSVインポート

    承認された回答の解決策はサーバー上でのみ機能し、クエリを実行するユーザーには、このSO回答で説明されているようにファイルを読み取る権限があります。

    それ以外の場合、より柔軟なアプローチは、SQLのCOPYを置き換えることです。 psqlを使用したコマンド \copyと呼ばれるの「メタコマンド」 これは「実際の」COPYとすべて同じオプションを取りますが、クライアント内で実行されます(;は必要ありません)。 最後に):

    psql -c "\copy tbname FROM '/tmp/the_file.csv' delimiter '|' csv"
    

    ドキュメントによると、\copy コマンド:

    フロントエンド(クライアント)コピーを実行します。これはSQLCOPYコマンドを実行する操作ですが、サーバーが指定されたファイルを読み書きする代わりに、psqlはファイルを読み書きし、サーバーとローカルファイルシステム間でデータをルーティングします。つまり、ファイルのアクセス可能性と権限はサーバーではなくローカルユーザーのものであり、SQLスーパーユーザーの権限は必要ありません。

    さらに、the_file.csv 最初の行にヘッダーが含まれています。headerを追加することで認識できます。 上記のコマンドの最後に:

    psql -c "\copy tbname FROM '/tmp/the_file.csv' delimiter '|' csv header"
    


    1. PostgreSQLを使用してデータベース間でデータを転送する

    2. .NET 4:Web.Configの他のアセンブリでEDMXファイルを構成する方法

    3. OracleDatabaseからMariaDBへの移行-知っておくべきこと

    4. ALTERTABLEステートメントがSQLServerのFOREIGNKEY制約と競合していました-SQLサーバー/TSQLチュートリアルパート69