Section courante

A propos

Section administrative du site

COPY

Copie
PostgreSQL

Syntaxe

COPY table_name [ ( column_name [, ...] ) ] FROM { 'filename' | PROGRAM 'command' | STDIN } [ [ WITH ] ( option [, ...] ) ]
COPY { table_name [ ( column_name [, ...] ) ] | ( query ) }
TO { 'filename' | PROGRAM 'command' | STDOUT }
[ [ WITH ] ( option [, ...] ) ]

où l'option peut être l'une des suivantes :

FORMAT format_name
OIDS [ boolean ]
FREEZE [ boolean ]
DELIMITER 'delimiter_character'
NULL 'null_string'
HEADER [ boolean ]
QUOTE 'quote_character'
ESCAPE 'escape_character'
FORCE_QUOTE { ( column_name [, ...] ) | * }
FORCE_NOT_NULL ( column_name [, ...] )
FORCE_NULL ( column_name [, ...] )
ENCODING 'encoding_name'

Paramètres

Nom Description
table_name Ce paramètre permet d'indiquer le nom (éventuellement qualifié par le schéma) d'une table existante.
column_name Ce paramètre permet d'indiquer une liste facultative de colonnes à copier. Si aucune liste de colonnes n'est spécifiée, toutes les colonnes du tableau seront copiées.
query Ce paramètre permet d'indiquer une commande SELECT, VALUES, INSERT, UPDATE ou DELETE dont les résultats sont à copier. Notez que les parenthèses sont obligatoires autour de la requête. Pour les requêtes INSERT, UPDATE et DELETE, une clause RETURNING doit être fournie et la relation cible ne doit pas avoir de règle conditionnelle, ni de règle ALSO, ni de règle INSTEAD s'étendant à plusieurs instructions.
filename Ce paramètre permet d'indiquer le nom de chemin du fichier d'entrée ou de sortie. Un nom de fichier d'entrée peut être un chemin absolu ou relatif, mais un nom de fichier de sortie doit être un chemin absolu. Les utilisateurs de Windows peuvent avoir besoin d'utiliser une chaîne E'' et de doubler les barres obliques inverses utilisées dans le nom de chemin.
PROGRAM Ce paramètre permet d'indiquer une commande à exécuter. Dans COPY FROM, l'entrée est lue à partir de la sortie standard de la commande, et dans COPY TO, la sortie est écrite sur l'entrée standard de la commande. Notez que la commande est invoquée par l'interpréteur de commande, donc si vous devez transmettre des paramètres à la commande de l'interpréteur de commande provenant d'une source non fiable, vous devez faire attention à supprimer ou à échapper tous les caractères spéciaux pouvant avoir une signification particulière pour l'interpréteur de commande. Pour des raisons de sécurité, il est préférable d'utiliser une chaîne de commande fixe, ou au moins d'éviter d'y transmettre toute entrée utilisateur.
STDIN Ce paramètre permet d'indiquer que l'entrée provient de l'application cliente.
STDOUT Ce paramètre permet d'indiquer que la sortie va à l'application cliente.
boolean Ce paramètre permet d'indiquer si l'option sélectionnée doit être activée ou désactivée. Vous pouvez écrire TRUE, ON ou 1 pour activer l'option, et FALSE, OFF ou 0 pour la désactiver. La valeur booléenne peut également être omise, auquel cas TRUE est supposé.
FORMAT Ce paramètre permet de sélectionner le format de données à lire ou à écrire : texte, csv (valeurs séparées par des virgules) ou binaire. La valeur par défaut est le texte.
OIDS Ce paramètre permet d'indiquer la copie de l'OID pour chaque ligne. (Une erreur est générée si OIDS est spécifié pour une table qui n'a pas d'OID, ou dans le cas de la copie d'une requête.)
FREEZE Ce paramètre permet de demander de copier les données avec des lignes déjà gelées, comme elles le seraient après avoir exécuté la commande VACUUM FREEZE. Ceci est conçu comme une option de performance pour le chargement initial des données. Les lignes ne seront gelées que si la table en cours de chargement a été créée ou tronquée dans la sous-transaction en cours, qu'aucun curseur n'est ouvert et qu'il n'y a pas d'anciens instantanés détenus par cette transaction. Il n'est actuellement pas possible d'effectuer un COPY FREEZE sur une table partitionnée. Notez que toutes les autres sessions pourront immédiatement voir les données une fois qu'elles auront été chargées avec succès. Cela viole les règles normales de visibilité MVCC et les utilisateurs les spécifiant doivent être conscients des problèmes potentiels que cela pourrait causer.
DELIMITER Ce paramètre permet d'indiquer le caractère séparant les colonnes dans chaque ligne (ligne) du fichier. La valeur par défaut est un caractère de tabulation au format texte, une virgule au format CSV. Il doit s'agir d'un seul caractère d'un octet. Cette option n'est pas autorisée lors de l'utilisation du format binaire.
NULL Ce paramètre permet d'indiquer la chaîne représentant une valeur nulle. La valeur par défaut est \N (barre oblique inverse-N) au format texte et une chaîne de caractères vide sans guillemets au format CSV. Vous préférerez peut-être une chaîne de caractères vide même au format texte pour les cas où vous ne souhaitez pas distinguer les valeurs NULL des chaînes de caractères vides. Cette option n'est pas autorisée lors de l'utilisation du format binaire. Lorsque vous utilisez COPY FROM, tout élément de données correspondant à cette chaîne sera entreposé en tant que valeur nulle, vous devez donc vous assurer que vous utilisez la même chaîne de caractères que celle que vous avez utilisée avec COPY TO.
HEADER Ce paramètre permet d'indiquer que le fichier contient une ligne d'entête avec les noms de chaque colonne du fichier. En sortie, la première ligne contient les noms de colonnes de la table, et en entrée, la première ligne est ignorée. Cette option est autorisée uniquement lors de l'utilisation du format CSV.
QUOTE Ce paramètre permet d'indiquer le caractère de guillemet à utiliser lorsqu'une valeur de données est entre guillemets. La valeur par défaut est le guillemet double. Il doit s'agir d'un seul caractère d'un octet. Cette option est autorisée uniquement lors de l'utilisation du format CSV.
ESCAPE Ce paramètre permet d'indiquer le caractère devant apparaître avant un caractère de données correspondant à la valeur QUOTE. La valeur par défaut est la même que la valeur QUOTE (afin que le caractère guillemet soit doublé s'il apparaît dans les données). Il doit s'agir d'un seul caractère d'un octet. Cette option est autorisée uniquement lors de l'utilisation du format CSV.
FORCE_QUOTE Ce paramètre permet de forcer l'utilisation des guillemets pour toutes les valeurs non NULL dans chaque colonne spécifiée. La sortie NULL n'est jamais entre guillemets. Si * est spécifié, les valeurs non NULL seront citées dans toutes les colonnes. Cette option n'est autorisée que dans COPY TO et uniquement lors de l'utilisation du format CSV.
FORCE_NOT_NULL Ce paramètre permet de ne pas correspondre aux valeurs des colonnes spécifiées avec la chaîne de caractères nulle. Dans le cas par défaut où la chaîne de caractères nulle est vide, cela signifie que les valeurs vides seront lues comme des chaînes de caractères de longueur nulle plutôt que des valeurs nulles, même lorsqu'elles ne sont pas entre guillemets. Cette option n'est autorisée que dans COPY FROM, et uniquement lors de l'utilisation du format CSV.
FORCE_NULL Ce paramètre permet de faire correspondre les valeurs des colonnes spécifiées à la chaîne de caractères nulle, même si elle a été entre guillemets, et si une correspondance est trouvée, définissez la valeur sur NULL. Dans le cas par défaut où la chaîne nulle est vide, cela convertit une chaîne de caractères vide entre guillemets en NULL. Cette option n'est autorisée que dans COPY FROM, et uniquement lors de l'utilisation du format CSV.
ENCODING Ce paramètre permet d'indiquer que le fichier est encodé dans encoding_name. Si cette option est omise, l'encodage client actuel est utilisé.

Description

Cette instruction permet de copier des données entre un fichier et une table.



Dernière mise à jour : Jeudi, le 14 Octobre 2021