Vous n'êtes pas identifié(e).
Bonjour,
J'aimerais savoir s'il est possible d'importer un fichier .csv pour remplir une table?
Merci d'avance
Hors ligne
Oui, c'est même très facile (si le CSV est bien formaté bien sûr), c'est l'ordre COPY qui sait faire ça.
Marc.
Hors ligne
merci bcp.
Je suis débutante dans le domaine, alors je voudrais, la commande est à exécuter où exactement?
Es dans le shell sql ou ..?
merci encore.
Hors ligne
Dans le shell psql, oui.
En fait, ce que vous voudrez, c'est certainement la commande \copy, qui est une commande de psql lui même, et non pas l'ordre SQL COPY. Elle a exactement la même syntaxe, mais vous permettra de charger un fichier qui se trouve sur votre poste et non pas sur le serveur.
Marc.
Hors ligne
ok si je comprend bien j'ai mis mon fichier sur le bureau et j'ai écris la commande COPY stock FROM 'c:\...\....nom fichier';
le souci est qu'il me répond "echapement unicode invalide
ligne1: COPY stock FROM 'c:\...\....nom fichier';
astuce:les echapement unicode doivent être de la forme \uXXX ou \UXXXX
si j’exécute la même commande avec \copy il me répond "no such file or directory"
si je rajoute .csv après le nom de mon fichier réponse:"la relation stock n'existe pas"
?? en plus j'avais pas su faire le changement du fichier de configuration pour l'encodage de la console??
merci d'avance.
Hors ligne
Si c'est un fichier CSV il vous manque certainement l'option CSV de copy. Peut être aussi l'option delimiter (pour lui préciser que le séparateur c'est et l'option header si il y a une ligne d'en-tête.
Ensuite, si votre fichier n'est pas en UTF8 (ça m'étonnerait si vous êtes sous windows), il faudra préciser à psql dans quel format se trouve le fichier. On verra ça dans un second temps
Marc.
Hors ligne
donc ma commande n'est pas complète? je vais potasser ça et je reviens vers vous, merci
Hors ligne
Bonjour,
Au secours, j'ai noté ma commande pour l'importation de mon fichier j'ai fais deux essais:
1- COPY stock FROM 'c:\..\..\..\sim' |STDIN [[WITH] [csv (comme je n'ai pas de HEADER) réponse= rien
2- \COPY stock FROM 'c:\..\..\..\sim' [[WITH] [csv (réponse = no such file or directory)
merci de m'aider
Hors ligne
Ah, oui, petite subtilité: remplacez vos \ par des /. PostgreSQL utilise le séparateur / pour les répertoires. Je pense que votre spécification de chemin n'est pas bonne. Où se trouve le fichier exactement ?
Marc.
Hors ligne
le fichier se trouve sur mon bureau
merci
Hors ligne
l'astuce /. ne marche pas.
précision je suis sur windows vista pro
Hors ligne
Désolé, je n'utilise presque jamais windows. Pourquoi, s'il se trouve sur votre bureau, avez vous mis comme chemin ..\..\..\sim ?
Le chemin, ça devrait être quelque chose comme 'c:/documents and settings/nom_de_votre_utilisateur/Bureau/sim' ?
Marc.
Hors ligne
l'astuce /. ne marche pas.
précision je suis sur windows vista pro
il me répond erreur d'analyse sur 'c:/users/standard/desktop/sim'
on fait on doit spécifié '.csv ou .txt' dans le chemin ou non exemple ('c:/users/standard/desktop/sim.txt'
Hors ligne
je ne sais pas le documents and settings n'existe pas peut être parce que c'est vista? le chemin je l'obtiens on faisant clique droit sur le fichier propriétés et voilà!
Hors ligne
Dans ce cas, déjà, pour commencer, mettez le fichier à la racine de votre C:, et tentez de le charger avec 'c:/mon_fichier_csv'. Nous trouverons le bon chemin après…
Marc.
Hors ligne
je suis vraiment désolé je débute vraiment
es ce qu'on doit mettre un ';' en fin de commande COPY stock FROM 'c:\sim' cela me donne rien
par contre avec ';' à la fin cela me donne:
ATTENTION utilisation non standard d'un échappement dans une chaîne littérale
LIGNE1: il réécrit la commande et pointe sur '
précision:je n'es pas réglé le comment de l'encodage console(850); es ce que cela ne pose pas de problème? (comment faire modifier le fichier car j'avais essayé mais il me dit que je ne peux le sauvegarder)
je sais c'est trop mais bon vaut mieux avancer en posant des question que de rester nullllll... j'espère que je vais y arriver!
merci encore de votre aide.
Hors ligne
COPY est un ordre SQL, il a donc besoin d'un ; à la fin, contrairement à \copy. C'est vrai que j'ai oublié de le préciser. Utilisez \copy, vu que le fichier est sur votre poste.
Ensuite, utilisez / et pas \
L'encodage de la console n'a aucune importance pour cette commande.
Marc.
Hors ligne
et pour l'encodage console ?
Hors ligne
Il n'a aucune importance pour copy. Il n'a d'influence que si vous essayez de saisir des caractères accentués dans la console. Et je n'ai aucune idée de comment on règle ce problème sous windows.
Marc.
Hors ligne
Comme a dit Marc (vos messages se sont peut-être croisés), cela n'a pas d'importance pour votre cas.
Par contre, si votre fichier s'appelle sim.csv, donnez bien le nom avec l'extension (par exemple C:/sim.csv). Ce sera le cas pour toute commande, même sous Windows.
Hors ligne
commande \copy stock FROM 'c:/sim' réponse : no such file or directory.
j'ai fais l'essai avec [[WHITH] [csv]] même réponse: no such file or directory
avec l'extension csv en fin du nom de fichier rien
question débile: es ce que le pgAdminIII doit être allumé ou éteind?
Hors ligne
Comme a dit Marc (vos messages se sont peut-être croisés), cela n'a pas d'importance pour votre cas.
Par contre, si votre fichier s'appelle sim.csv, donnez bien le nom avec l'extension (par exemple C:/sim.csv). Ce sera le cas pour toute commande, même sous Windows.
J'ai bien fais l'essai (\copy stock FROM 'c:/sim.csv' ) et aussi (\copy stock FROM 'c:\sim.csv') mais la réponse :Erreur la relation stock n'existe pas?
Hors ligne
Ok, donc c'est différent: quand vous mettez l'extension, il trouve le fichier.
Vous avez une table stock ?
Marc.
Hors ligne
oui la table stock existe et même qu'il y a des lignes, j'ai fais l'essai ave pgAdmin allumé et une autre fois éteins mais rien à faire
Hors ligne
«Erreur, la relation stock n'existe pas». Vous n'auriez pas mis des majuscules dans son nom ?
Marc.
Hors ligne