Le langage procédural PL/pgSQL de PostgreSQL permet de puissantes extensions de bases de données. Ce guide détaille deux méthodes pour enregistrer les résultats des requêtes PL/pgSQL dans un fichier CSV.
Méthode 1 : Exportation côté serveur à l'aide de COPY
L'approche côté serveur la plus efficace utilise la commande COPY
de PostgreSQL. Une commande comme celle-ci :
<code class="language-sql">COPY (SELECT * FROM foo) TO '/tmp/test.csv' WITH CSV DELIMITER ',' HEADER;</code>
exporte les données de la table "foo" vers un fichier CSV sur le serveur. Surtout, cela nécessite des autorisations appropriées côté serveur. La meilleure pratique consiste à créer une fonction dédiée avec l'option SECURITY DEFINER
pour gérer ces autorisations en toute sécurité.
Méthode 2 : Exportation côté client à l'aide de COPY TO STDOUT
Vous pouvez également gérer l'exportation CSV côté client à l'aide de la commande COPY TO STDOUT
dans le client de ligne de commande psql
. La méta-commande copy
facilite cela :
<code class="language-sql">\copy (SELECT * FROM foo) TO '/tmp/test.csv' WITH CSV DELIMITER ',' HEADER</code>
Notez que copy
est une méta-commande, pas une commande SQL standard, donc un point-virgule final (;
) n'est pas nécessaire.
Considérations de sécurité (côté serveur) :
L'approche côté serveur nécessite une planification minutieuse de la sécurité :
Considérations relatives à l'approche côté client :
Lors de l'utilisation de la méthode côté client :
pg_copy_from
et pg_copy_to
de PHP peuvent être sous-optimales. Envisagez des méthodes alternatives et plus efficaces.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!