web-dev-qa-db-fra.com

ERREUR: données manquantes pour la colonne lors de l'utilisation de \ copy dans psql

J'essaie d'importer un fichier .txt dans PostgreSQL. Le fichier txt comporte 6 colonnes:

Laboratory_Name Laboratory_ID   Facility    Zip_Code     City   State

Et 213 rangées.

J'essaie d'utiliser \copy pour mettre le contenu de ce fichier dans une table appelée doe2 dans PostgreSQL en utilisant cette commande:

\copy DOE2 FROM '/users/nathangroom/desktop/DOE_inventory5.txt' (DELIMITER(' '))

Cela me donne cette erreur:

missing data for column "facility"

J'ai cherché tout ce qu'il fallait faire en rencontrant cette erreur et rien n'a aidé. Quelqu'un d'autre a-t-il rencontré cela?

16
nathanmgroom

Trois causes possibles:

  1. Une ou plusieurs lignes de votre fichier ne contiennent que 4 caractères d'espace ou moins (votre délimiteur).

  2. Un ou plusieurs espaces ont été échappés (par inadvertance). Peut-être avec une barre oblique inversée à la fin d'une valeur non cotée. Pour le format (par défaut) text que vous utilisez, le manuel explique:

    Caractères barre oblique inverse (\) peut être utilisé dans les données COPY pour citer des caractères de données qui pourraient autrement être pris comme délimiteurs de ligne ou de colonne.

Sortie de COPY TO ou pg_dump ne présenterait aucun de ces défauts lors de la lecture à partir d'un tableau avec une disposition correspondante. Mais peut-être que votre fichier a été modifié ou provient d'une source différente et défectueuse?

  1. Vous n'utilisez pas le fichier que vous pensez vous utilisez. Le \copy la méta-commande de l'interface de ligne de commande psql est un wrapper pour COPY et lit les fichiers locaux au client . Si votre fichier réside sur le serveur, utilisez plutôt la commande SQL COPY .
6