Cela semble être une chose très facile à faire, mais je ne trouve nulle part où le faire.
J'ai un fichier .sql que je crée pour une mise à niveau de mon application qui modifie les tables, les insertions/mises à jour, etc.
Je veux écrire sur l'écran après la fin de chaque commande.
Donc, par exemple, si j'ai quelque chose comme:
insert into X...
Je veux voir quelque chose comme,
Commencer à insérer dans le tableau X
insertion terminée dans le tableau X
Est-ce possible à Postgres?
Si vous alimentez simplement un gros tas de SQL vers psql
alors vous avez quelques options.
Vous pouvez exécuter psql
avec --echo-all
:
-a
--echo-all
Imprimez toutes les lignes d'entrée sur la sortie standard au fur et à mesure de leur lecture. Ceci est plus utile pour le traitement de script qu'en mode interactif. Cela revient à définir la variableECHO
surall
.
Cela et les autres options "tout faire écho de ce type" (voir le manuel ) sont probablement trop bruyants. Si vous souhaitez simplement imprimer les choses manuellement, utilisez \echo
:
\echo
text
[...]
Imprime les arguments dans la sortie standard, séparés par un espace et suivis d'une nouvelle ligne. Cela peut être utile pour intercaler des informations dans la sortie des scripts.
Vous pouvez donc dire:
\echo 'Starting to insert into table X'
-- big pile of inserts go here...
\echo 'Finished inserting into table X'
Via: https://stackoverflow.com/a/18828523/2014857
DO language plpgsql $$
BEGIN
RAISE NOTICE 'hello, world!';
END
$$;
Selon ce que vous faites, je serais inquiet de faire un tas de blocs de code anonymes. Vous pouvez envisager de stocker ce qui précède en tant que fonction et de transmettre la valeur que vous souhaitez enregistrer.
Il y a probablement une meilleure façon de procéder. Mais si vous devez utiliser Vanilla SQL, essayez ceci:
SELECT NULL AS "Starting to insert into table X";
-- big pile of inserts go here...
SELECT NULL AS "Finished inserting into table X";