A l'instar de France2 avec Inquisitio, le forum MySQL a également son feuilleton de l'été
A l'instar de France2 avec Inquisitio, le forum MySQL a également son feuilleton de l'été
Donc quand tu auras fini de corriger ton fichier CSV tout neuf, importe-le dans MySQL puis repasse les requêtes suivantes :
1) Y at-il des catégories inconnues de dbname.categories ?
2) Combien d'articles à importer ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT DISTINCT t.CATEGORY FROM testbase.`table 1` t WHERE NOT EXISTS ( SELECT 1 FROM dbname.categories c WHERE c.NAME = t.CATEGORY )
3) Y a t-il des références d'articles existant déjà dans dbname.products ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT COUNT(*) FROM testbase.`table 1`
4) Tous les articles sont-ils importables dans dbname.products ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT p.ID, p.REFERENCE, p.CODE, p.NAME, t1.ID AS ID_import, t1.REFERENCE AS REF_IMPORT, t1.CODE AS CODE_IMPORT, t1.NAME AS NAME_IMPORT FROM dbname.products p INNER JOIN testbase.`table 1` t1 ON t1.REFERENCE = p.REFERENCE
Il doit ici y avoir normalement le même nombre de lignes qu'indiqué par la requête 2 et tu peux vérifier si les informations te semblent correctes, notamment les prix car je ne sais pas si avec ton nouveau fichier CSV il y aura toujours besoin de faire une opération sur les colonnes de prix.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT i.ID, i.REFERENCE, i.CODE, i.CODETYPE, i.NAME, CAST(LEFT(i.PRICEBUY, LENGTH(i.PRICEBUY) - 2) AS DECIMAL(10,2)) AS PRICEBUY, CAST(LEFT(i.PRICESELL, LENGTH(i.PRICESELL) - 2) AS DECIMAL(10,2)) AS PRICESELL, c.ID AS CATEGORY, i.TAXCAT, i.ATTRIBUTESET_ID, i.STOCKCOST, i.STOCKVOLUME, i.IMAGE, i.ISCOM, i.ISSCALE, i.ATTRIBUTES FROM testbase.`table 1` i INNER JOIN dbname.categories c ON c.NAME = i.CATEGORY
PS : 7ème page...
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
Affichage des lignes 0 - 29 ( 41 total, Traitement en 0.0261 sec)1) Y at-il des catégories inconnues de dbname.categories ?
En fait, ça me refait comme la dernière fois, par exemple 'Cuillère' est coupé et il n'y a que 'Cuilli'. Dois-je retirer tous les accents et apostrophes dans le fichier d'importation?
--> problème d'encodage à l'enregistremetn du fichier apparement....Il est encodé en ANSI alors qu'il doit être en UTF-8
Effectivement, si ta BDD est en UTF8, il faudrait que le fichier csv le soit aussi sinon ça va être galère à importer.
Je suppose que tu es sous Windows, je ne sais pas si tu peux paramétrer ça avec un éditeur de texte fourni avec cette passoire à virus.
Un coup de peut-être ?
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
En effet, je recherche une solution mais je n'ai pas trouvé. J'ai Notepad++, bloc-notes, et Microsoft office et OpenOfficeJe suppose que tu es sous Windows, je ne sais pas si tu peux paramétrer ça avec un éditeur de texte fourni avec cette passoire à virus.
Un coup de google peut-être ?
mais problèmes :
- Notepad++ et Bloc-notes peuvent encoder en UTF-8 mais pas enregistrer en csv.
- Les 2 autres font l'inverse :s.
Et sous Mac, y'a-t-il une solution, un logiciel qui puisse tout faire?
Un fichier csv, c'est juste un fichier texte formaté d'une certaine manière. Tu dois pouvoir indiquer l'extension toi-même. Et à la limite, que ce soit l'extension csv, txt ou wxz pour importer dans MySQL, c'est pareil !
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
Ah beh dans ce cas là, j'ai un fichier txt encodé en UTF-8Et à la limite, que ce soit l'extension csv, txt ou wxz pour importer dans MySQL, c'est pareil !
En effet, j'ai 9 résultats. :s1) Y at-il des catégories inconnues de dbname.categories ?
Tu l'as refait avec l'outil qui te permet d'encoder en UTF-8 ?Ah beh dans ce cas là, j'ai un fichier txt encodé en UTF-8
Si oui, réimporte-le et vérifie s'il y a toujours les problèmes d'accents.
Identifie ces catégories manquantes, vérifie s'il s'agit encore de problème d'accent ou autre mauvaise orthographe et corrige les noms.En effet, j'ai 9 résultats. :sEnvoyé par CinéPhil
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
Je peux dans le doute les ajouter dans dbname.categories, non? Où ces résultats viennent déjà de cette table?Identifie ces catégories manquantes, vérifie s'il s'agit encore de problème d'accent ou autre mauvaise orthographe et corrige les noms.
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
MySQL a retourné un résultat vide (aucune ligne). ( Traitement en 0.0440 sec )1) Y at-il des catégories inconnues de dbname.categories ?
97642) Combien d'articles à importer ?
MySQL a retourné un résultat vide (aucune ligne). ( Traitement en 0.0335 sec )3) Y a t-il des références d'articles existant déjà dans dbname.products ?
Affichage des lignes 0 - 29 ( 9 764 total, Traitement en 0.0012 sec)4) Tous les articles sont-ils importables dans dbname.products ?
Voilà voilà les résultats des requêtes, je pense que c'est correct, non?:$
Et une petite question s'il te plait? Pour la colonne CATEGORY de la table products, il faut les ID.categories et non les NAME.categories, ce n'est pas grave?:$
J'étais en réunion ce matin.
Apparemment, tu as corrigé correctement les données.
Puisque avec la requête 4 on a vérifié que tous les articles sont importables, on peut tenter l'importation.
Au préalable, une dernière vérification, peut-ere suivie d'une précaution.
La table dbname.products est-elle vide ?
Question complémentaire pour gagner du temps sur la suite : ta table d'importation s'appelle toujours bien testbase.`table 1` ?
Avec les données correctes dedans ?
Non puisque par jointure avec la table categories on va récupérer l'ID qui doit être inséré en clé étrangère dans la table products.Et une petite question s'il te plait? Pour la colonne CATEGORY de la table products, il faut les ID.categories et non les NAME.categories, ce n'est pas grave?:$
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
Oui elle l'est.La table dbname.products est-elle vide ?
Non elle se nomme testbase.'table 2'Question complémentaire pour gagner du temps sur la suite : ta table d'importation s'appelle toujours bien testbase.`table 1` ?
Eh bien il y a juste dans le champs CATEGORY où j'ai les intitulés comme 'Jeu', 'Boite',... et non pas les ID de la table categories.dbname qui leur correponde :s.Avec les données correctes dedans ?
Ça c'est normal et ce n'est pas du tout gênant, comme je l'ai expliqué dans mon précédent message :Eh bien il y a juste dans le champs CATEGORY où j'ai les intitulés comme 'Jeu', 'Boite',... et non pas les ID de la table categories.dbname qui leur correponde :s.
C'est d'ailleurs ce que j'ai fait dans la requête 4.Envoyé par CinéPhil
Une dernière vérification :
J'avais dû faire des opérations un peu bizarres parce que les prix de ton fichier CSV semblaient suivi du symbole monétaire. Est-ce toujours le cas et est-ce que les prix te semblent corrects dans le résultat de la requête 4 ?
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
Oui oui tout à fait, ils sont corrects mais par contre le signe € est présent et dans le logiciel quand on saisit un prix, dans la table, il ne met pas le signe € :s.J'avais dû faire des opérations un peu bizarres parce que les prix de ton fichier CSV semblaient suivi du symbole monétaire. Est-ce toujours le cas et est-ce que les prix te semblent corrects dans le résultat de la requête 4 ?
Il est possible que ça cause un souci du coup, non?:s
Non c'est normal. Le prix est un nombre, de type DOUBLE dans la table (ce qui n'est d'ailleurs pas un très bon choix !). Ce n'est pas une chaîne de caractères composée de chiffres, d'un point et d'un symbole monétaire.
Que le logiciel affiche le symbole monétaire, c'est normal. Qu'il soit enregistré dans la même colonne que le prix, non.
On tente l'importation ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 INSERT INTO dbname.products ( ID, REFERENCE, CODE, CODETYPE, NAME, PRICEBUY, PRICESELL, CATEGORY, TAXCAT, ATTRIBUTESET_ID, STOCKCOST, STOCKVOLUME, IMAGE, ISCOM, ISSCALE, ATTRIBUTES ) SELECT i.ID, i.REFERENCE, i.CODE, i.CODETYPE, i.NAME, CAST(LEFT(i.PRICEBUY, LENGTH(i.PRICEBUY) - 2) AS DECIMAL(10,2)) AS PRICEBUY, CAST(LEFT(i.PRICESELL, LENGTH(i.PRICESELL) - 2) AS DECIMAL(10,2)) AS PRICESELL, c.ID AS CATEGORY, i.TAXCAT, i.ATTRIBUTESET_ID, i.STOCKCOST, i.STOCKVOLUME, i.IMAGE, i.ISCOM, i.ISSCALE, i.ATTRIBUTES FROM testbase.`table 2` i INNER JOIN dbname.categories c ON c.NAME = i.CATEGORY ORDER BY ID
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
#1452 - Cannot add or update a child row: a foreign key constraint fails (`dbname`.`products`, CONSTRAINT `PRODUCTS_TAXCAT_FK` FOREIGN KEY (`TAXCAT`) REFERENCES `taxcategories` (`ID`))
Car je pense que c'est par rapport avec TAXCAT où moi j'ai un 0 et dans la table taxcategories, l'ID est 000 :s
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager