Vous n'êtes pas identifié(e).
[TABLE]om_utilisateur
Colonnes :
om_utilisateur [qui est le numéro]
nom
email
Login
Pwd
om_profil
om_collectivite
om_type
service
Hors ligne
ragardez ce massage d'erreur bizard (les apostrophes)
:
COPY public.om_utilisateur FROM 'C:\\Users\\[nom_util]\\Desktop\\opencourrier2.csv\\opencourrier_table_om_utilisateur.csv'
:
ERREUR: syntaxe en entrée invalide pour l'entier : « "1,""ADMINISTRATEUR"",""hotline@live.fr"",""admin"",""mdp"",""5"",""1"",""db"",""*""" »
CONTEXT: COPY om_utilisateur, ligne 1, colonne om_utilisateur : « "1,""ADMINISTRATEUR"",""hotline@live.fr"",""admin"",""mdp"",""5... »
Hors ligne
je voulais le type de donnée de chaque colonne (integer, varchar, etc...)
Cordialement,
Sébastien.
Hors ligne
[TABLE]om_utilisateur
:
Colonnes :
:
om_utilisateur [qui est le numéro] --> int(8)
nom --> varchar(30)
email --> varchar(40)
Login --> varchar(30)
Pwd --> varchar(100)
om_profil --> varchar(2)
om_collectivite --> int(11)
om_type --> varchar(20)
service -->varchar(15)
Hors ligne
ma base pg sql :
:
om_utilisateur integer
nom character varying(30)
email character varying(40)
Login character varying(30)
Pwd character varying(100)
om_profil character varying(2)
om_collectivite integer
om_type character varying(20)
service character varying(15)
Hors ligne
et dans votre fichier csv, on peut avoir 2 ou 3 lignes complètes ?
Cordialement,
Sébastien.
Hors ligne
4 [NOM_EN_MAJUSCULE] [pseudo]@hotmail.fr [pseudo] 891173d5aea407175fb014efa32a9796 5 1 db *
5 [NOÉ_EN_MAJUSCULE] [pseudo]@hotmail.fr [pseudo] a9a876172168839dcac429eb0edfa189 4 1 db SG
6 [NOM_EN_MAJUSCULE] [pseudo]@hotmail.fr [pseudo] acdf11f13df3520b2accef73bc97476e 4 1 db SG
:
:
(désoler je ne peu pas divulguer de noms ou d'adresses mail)
Hors ligne
COPY essaie d'insérer dans la colonne om_utilisateur "1,".
la virgule est donc en trop.
Il faudrait nettoyer le csv avant de l'importer.
Cordialement,
Sébastien.
Hors ligne
ma base Mysql est en latin1, j'exporte les fichiers CSV en utf-8 la base pgadmin est en utf-8 j'ai aussi tenter une base en latin1
Hors ligne
comment ça nettoyer le CSV ?
Hors ligne
je ne suis pas trop windows mais en cherchant bien dans google vous devriez pouvoir trouver votre bonheur.
L'idée est de parcourir les lignes du fichier et de supprimer les virgules.
Cordialement,
Sébastien.
Hors ligne
il faudra donc remplacer les virgules par quoi ?
et si il n'y as pas de virgules, comment postgre peut reconnaître les champs ?
Hors ligne
lorsque j'exporte ma bases depuis mysql j'ai ces options :
:
Colonnes séparées par :
Colonnes entourées par :
Caractère d'échappement :
Lignes terminées par :
Remplacer NULL par :
:
cependant j'ai déjà tester plein de trucs mais je ne connaît pas les carractères souhaitez par postgre, j'ai beau chercher mais il n'y à pas beaucoup de docs là dessus
Hors ligne
j'ai vu quelque part dans la doc de postgre que le caractère d’échappement serait \ mais je ne suis pas sur
Hors ligne
il faut supprimer la virgule tout cours.
Ensuite pour votre export depuis mysql le mieux est de choisir : "Colonnes séparées par :" et lui indiquer ";"
pour l'import dans postgresql il faut choisir le séparateur de colonne ";" avec l'option DELIMITER de COPY.
voir la doc : http://docs.postgresql.fr/9.6/sql-copy.html
Cordialement,
Sébastien.
Hors ligne
et les autres options je met quoi ? car à lorigine les options de bases sont :
:
Colonnes séparées par : ,
Colonnes entourées par : "
Caractère d'échappement : "
Lignes terminées par : AUTO
Remplacer NULL par : NULL
Hors ligne
Erreur SQL :
ERREUR: syntaxe en entrée invalide pour l'entier : « 4"[NOM_EN_MAJ]"[pseudo]@hotmail.fr"[pseudo]"891173d5aea407175fb014efa32a9796"5"1"db"* »
CONTEXT: COPY om_utilisateur, ligne 2, colonne om_utilisateur : « 4"[NOM_EN_MAJ]"[pseudo]@hotmail.fr"[pseudo]"891173d5aea407175fb014efa32a9796"5"1"db"* »
Dans l'instruction :
COPY public.om_utilisateur FROM 'C:\\Users\\[nom_util]\\Desktop\\test\\opencourrier_table_om_utilisateur.csv' DELIMITER ';' CSV header
Dernière modification par rygegor (09/06/2017 11:44:29)
Hors ligne
cette fois-ci l'erreur est à la ligne 2 mais j'ai toujours pas compris MDR (désoler d'^tre chiant comme ça mais j'ai beau essayer un peut tou tje me renseigne etc... mais cette migration n'est pas simple pour moi.... ^^")
Hors ligne
j'ai réussi à lancer ma commande, j'ai exporter les fichiers au forma "CSV for MS Excel" (donc pour Microsoft, je vai retourner à l'école primaire pour réapprendre à lire MDR) puis à la fin de ma commande COPY, j'ai rajouter la ligne :
DELIMITER ';' CSV header
comme vous me l'aviez-dit, résultat toutes les commandes ont étaient exécutées
Hors ligne
par contre juste une dernière petite chose, il m'arrive que certains champs d'une table mysql et pgsql ne soient pas placer de la même manière ou alors que l'un des champ mysql n'existe pas, comment faire pour le preciser ? (pourriez-vous me donner une exemple par rapport à ça s'il vous plaît ?)
:
:
MySQL
:
om_utilisateur --> int(8)
nom --> varchar(30)
email --> varchar(40)
Login --> varchar(30)
Pwd --> varchar(100)
om_profil --> varchar(2)
om_collectivite --> int(11)
om_type --> varchar(20)
service -->varchar(15)
:
PostgreSQL
:
om_utilisateur --> int(8)
nom --> varchar(30)
email --> varchar(40)
Login --> varchar(30)
Pwd --> varchar(100)
om_collectivite --> int(11)
om_type --> varchar(20)
om_profil --> varchar(2)
service -->varchar(15)
:
:
merci
Hors ligne
Il n'y a pas de solution magique. Soit vous exportez les données comme attendu sur la table cible du côté mysql, soit vous intégrer les données dans une autre table côté postgres et vous insérer ensuite les bonnes colonnes sur la table finale. Ou vous passez par un etl.
edit: J'ai répondu un peu vite.
Vous devriez vous en sortir en spécifiant les champs contenus dans le fichier csv au moment de l'import.
Sur un exemple comme
table mysql: id, val1, val2
table postgres: id, val2, val3, val1
Vous pouvez importer les données qui existaient sur mysql avec la commande COPY suivante :
COPY nom_table(id, val1, val2) FROM...
Par contre, on ne peut pas exclure un champ du fichier CSV, il faut donc que la table sur postgres ait au moins autant de champs que la table mysql, sinon il faut utiliser les autres solutions données en début de message.
Julien.
https://rjuju.github.io/
En ligne
je te remercie c'est bon mon problème est régler
je remercie tout ceux qui m'ont aidaient, je passe ce post en résolu ^^
Hors ligne