Vous êtes ici : Accueil Zaclys Pedia / Les rubriques / Informatique / Système d'exploitation / Linux

Voir un article

Passer un fichier excel dans une base de donnée postgreSQL

Avec linux , c'est tres facile de passer un fichier excel dans une base de donnée postgres

Voici comment faire sur postgres :

1/ exporter depuis excel votre fichier au format CSV (fichier / exporter et choisir format CSV)

sur linux maintenant :

1/ reconvertir si besoin le fichier csv en utf8 (moi je préfère bosser en utf8, et ouinedoz est encore en iso-8859-1 :
# iconv -f iso-8859-1 -t utf-8 fichier.csv > /tmp/fichierUTF8.csv


2/ nous allons utiliser la première ligne du fichier , qui contient les noms des têtes de colonnes :
# head -n 1 /tmp/fichierUTF8.csv
Nom;Prénom;Code postal;Ville;Téléphone;Fax;Email


Pour produire un code SQL capable de créer une table "import" portant ces mêmes colonnes, grâce à sed nous allons tout simplement reformatter la ligne pour en faire un ordre sql , comme ceci  :
#  head -n 1 /tmp/fichierUTF8.csv |sed -e 's/[^a-zA-Z0-9;]//g'  -e 's/;/" text,"/g' -e 's/^/create table import ("/' -e 's/$/" text);/'

create table import ("Nom" text,"Prénom text","Codepostal" text,"Ville" text,"Téléphone" text,"Fax" text,"Email" text);

c'est beau hein ? (bon ok faut être connaisseur pour apprécier)


3/ Bien maintenant passont sur postgres pour créer la table, il suffit de se connecter à votre base, ou bien d'en créer une nouvelle d'abord comme ceci (sous root avec sudo -i) : 
# su - postgres
$ createdb -E utf8  mabase
$ psql mabase
mabase=#



4/ maintenant que vous êtes connecté en psql sur la base, il suffit de copier/coller l'ordre SQL produit en 2 :
mabase=#  create table import ("Nom" text,"Prénom text","Codepostal" text,"Ville" text,"Téléphone" text,"Fax" text,"Email" text);
CREATE TABLE



5/ et il suffit de copier le contenu du fichier csv dans la table import fraichement créée :
mabase=#  copy import from '/tmp/fichierUTF8.csv' CSV HEADER  DELIMITER ';' ;
COPY



6/ on vérifie le contenu importé  ( x pour passer en affichage étendu ) :
mabase=#  [antislashe]x
Affichage étendu activé.

mabase=#  select * from import;
-[ RECORD 1]---+-------------------------
Nom            | Billout
Prénom         | raoul
Codepostal     | 90000
Ville          | Epinal
Téléphone      | 03 xx xx xx xx
Fax            |
Email          | xxxxxx@wanadoo.fr
-[ RECORD 2]---+-------------------------
Nom            | Machin
...


1680 clics - Article du 01/04/2010 15:47 par Tito - Maj le 04/07/2011 10:17



Réagissez, commentez, discutez ...

Info1 réaction.

  • oups, yavait 2 erreurs dans les lignes de commandes, corrigé dans l'article aujourd'hui 5/5/2011

    par tito (Zaclynaute) - 05/05/2011 15:48







Partager ?

facebook  twitter  Digg  Yahoo  Delicious  Technorati  myspace


Voir d'autres articles en rapport avec celui-ci ?



Stats des clics sur cet article : cliquez ici »



Vous voulez contribuer et publier un article dans cette rubrique ?

InfoMerci de vous identifier ou de vous créer un compte si ce n'est pas déjà fait.


icone user Me connecter :

InfoMerci de saisir vos identifiants.




Me reconnecter automatiquement à chaque visite avec ce navigateur :
               





retour




Faites vos achats sur Amazon et soutenez la mère Zacly :

Amazon Logo



Plan du site | Aide | Mentions légales | Réclames | © Zacly Multimédias   - Zaclys v1.17411