PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 19/05/2018 06:01:58

big1
Membre

Créer une table à partir d'un fichier CVS

Bonjour,
en 9.6
Comment  Créer une table à partir d'un fichier CVS?
D'avance merci.

Hors ligne

#2 19/05/2018 10:44:17

gleu
Administrateur

Re : Créer une table à partir d'un fichier CVS

Merci de détailler votre question, elle n'a pas trop de sens comme ça. (ie, un fichier CSV, ce sont des données, pas la définition d'une table... donc on peut peupler une table à partir d'un fichier CSV mais pas deviner sa définition).


Guillaume.

Hors ligne

#3 19/05/2018 11:34:30

big1
Membre

Re : Créer une table à partir d'un fichier CVS

Bonjour Guillaume,
Il y a des scripts ou manières qui crée une table et importe les données à partir d'un fichier CSV.

Script:

https://stackoverflow.com/questions/424 … le_rich_qa

#!/bin/bash

# makes a CREATE TABLE statement out of the first line of a CSV file

# usage: mktab <tabname> <CSV file>

if [ -z "$2" -o -n "$3" ]; then
    echo "usage: mktab <tabname> <CSV file>" 1>&2
    exit 1
fi

IFS=,
first=1

echo -n "CREATE TABLE \"$1\" ("
for col in $(head -1 "$2"); do
    if [ $first -eq 1 ]; then
        first=0
    else
        echo -n ', '
    fi
    echo -n "\"$col\" numeric(10,2)"
done
echo ');'

exit 0

Outil:
pgfutter:
https://github.com/lukasmartinelli/pgfutter

Y a-t-il une méthode propre à Postgres autre que pgfutter?

D'avance merci.

Hors ligne

#4 19/05/2018 19:14:14

gleu
Administrateur

Re : Créer une table à partir d'un fichier CVS

Vous avez compris ce que fait ce script ? parce que ça peut fonctionner pour certains fichiers CSV mais clairement pas pour tous. En gros, ce script récupère la première ligne du fichier CSV en espérant y trouver les noms des colonnes. Il construit ensuite l'ordre SQL de création de table en supposant que toutes ces colonnes sont de type numeric(10,2), ce qui est possible dans certains cas et hautement improbable dans la majorité des cas.


Guillaume.

Hors ligne

Pied de page des forums