Bon alors donne les premières lignes de résultat de cette requête STP :
PS : Et 9 pages ! 9 !Code:
1
2 SELECT i.ID, i.REFERENCE, i.NAME, i.PRICEBUY, i.PRICESELL FROM testbase.`table 2` i
Version imprimable
Bon alors donne les premières lignes de résultat de cette requête STP :
PS : Et 9 pages ! 9 !Code:
1
2 SELECT i.ID, i.REFERENCE, i.NAME, i.PRICEBUY, i.PRICESELL FROM testbase.`table 2` i
Eh bien c'est un peu bizarre parce que à l'affichage, les prix sont de la forme 4,50€...Citation:
Bon alors donne les premières lignes de résultat de cette requête STP :
Mais lors de l'exportation en .csv, j'ai ces résultats :
"1","100100","1000000000009","NULL","T'choupi joue aux cartes","0","4","e12e5419-0531-40ce-b2c0-e89c0f29dd1d","000","NULL","1","1","NULL","0","0","NULL"
"10","100109","1100000000006","NULL","Pantalon","5","14","c4f233a6-c63a-4d20-91ef-423c932c01f5","000","NULL","1","1","NULL","0","0","NULL"
"100","100199","1040000000005","NULL","Canapé225*105*100TrenOrlando","1","2","edb9eb93-fcaa-4521-a6cd-98b8a87804d4","000","NULL","-1","0","NULL","0","0","NULL"
"1000","101099","1105000000001","NULL","Cloche pm","1","8","7f705231-cf62-4753-8dea-1dc7cf5a9a94","000","NULL","4","4","NULL","0","0","NULL"
Euh... ce n'est pas le résultat de la requête que tu m'as donné !
Oh, pardon, 1000 excuses :s.Citation:
Euh... ce n'est pas le résultat de la requête que tu m'as donné !
Voici le résultat de la requête :
Affichage des lignes 0 - 29 ( 9 764 total, Traitement en 0.0008 sec)
Donne moi les quelques lignes de résultat qui sont affichées par la requête ! :roll:
Pièce jointe 98691Citation:
Donne moi les quelques lignes de résultat qui sont affichées par la requête !
Désolé pour la forme :s
Donc il y a bien le symbole monétaire dans les données et il faut l'éliminer dans les données à exporter vers la table products !
Donne maintenant le résultat de cette requête :
Code:
1
2
3
4
5 SELECT i.ID, i.REFERENCE, i.NAME, i.PRICEBUY, CAST(i.PRICEBUY AS DECIMAL(10,2)) AS PRICEBUY_DECIMAL, i.PRICESELL, CAST(i.PRICESELL AS DECIMAL(10,2)) AS PRICESELL_DECIMAL FROM testbase.`table 2` i LIMIT 5
VoilàCitation:
Donne maintenant le résultat de cette requête :
Pièce jointe 98692
OK J'ai compris, le séparateur décimal de tes prix est une virgule !
Essaie comme ça :
Code:
1
2
3
4
5 SELECT i.ID, i.REFERENCE, i.NAME, i.PRICEBUY, CAST(REPLACE(i.PRICEBUY, ',', '.') AS DECIMAL(10,2)) AS PRICEBUY_DECIMAL, i.PRICESELL, CAST(REPLACE(i.PRICESELL, ',', '.') AS DECIMAL(10,2)) AS PRICESELL_DECIMAL FROM testbase.`table 2` i LIMIT 5
Ah d'accord, et en fait il faut un .?Citation:
OK J'ai compris, le séparateur décimal de tes prix est une virgule !
En effet maintenant il y a bien le bon prix
Pièce jointe 98705
Donc maintenant, si tu as vidé la table dbname.products, tu peux recommencer l'importation avec cette requête :
Code:
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(REPLACE(i.PRICEBUY, ',', '.') AS DECIMAL(10,2)) AS PRICEBUY, CAST(REPLACE(i.PRICESELL, ',', '.') AS DECIMAL(10,2)) AS PRICESELL, c.ID AS CATEGORY, '000', 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
Pour vider la table, j'utilise TRUNCATE TABLE products?
parce que j'ai essayé mais c'est parce que j'ai encore des clés étrangères mises en jeu.
Du coup, j'ai copié la base dbname avec la table products sans les données.Citation:
#1701 - Cannot truncate a table referenced in a foreign key constraint (`dbname`.`products_cat`, CONSTRAINT `PRODUCTS_CAT_FK_1` FOREIGN KEY (`PRODUCT`) REFERENCES `dbname`.`products` (`ID`))
De ce fait, j'ai maintenant mes produits
j'ai 2 produits qui n'ont pas été inséré, mais ce n'est pas très gênant :).Citation:
Affichage des lignes 0 - 29 ( ~9 762 total , Traitement en 0.0007 sec)
J'ai juste un dernier petit souci, j'ai une table nommé products_cat avec PRODUCT et CATORDER.
Pour que mes articles apparaissent dans le logiciel, je dois remplir le champs PRODUCT avec les ID de mes produits de la table products.
RECTIFICATION : j'ai effectué la requête suivante qui a fonctionné :
J'attends la réponse de CinePhil car sans lui, impossible de faire tout ça :) :roll:Citation:
INSERT INTO products_cat( PRODUCT)
SELECT ID FROM products
Merciii 1000 fois :) :)
J'ai pas tout compris à tes dernières manips mais je crois comprendre que ton problème est :resolu: ?
Pour info, pour vider une table :
TRUNCATE détruit et recrée la table. Comme une colonne de la table était référencée comme clé étrangère ailleurs, on ne peut pas détruire (supprimer) la table, même si c'est pour la reconstruire directement après.Code:DELETE FROM la_table
DELETE par contre vide les lignes de données dans la table mais ne détruit pas sa structure qui reste intacte. Si les valeurs ne sont pas utilisées ailleurs dans des clés étrangères, pas de problème pour supprimer. Et si elles sont référencées mais que la contrainte d'intégrité ON DELETE CASCADE est activée, alors cela supprimera automatiquement les lignes des autres tables qui référencent cette valeur.
Nickel, parfait, impec :).
Merci pour cette aide :).
Merci CinePhil.
Résumé des opérations, qui auraient pu être effectuées en moins d'une journée, voire moins d'une demie-journée... au lieu de 3 semaines ! :?
1) Exporter les articles de l'ancien logiciel vers un fichier CSV.
2) Importer le fichier CSV dans MySQL à l'aide d'une requête LOAD DATA INFILE3) Comparer, avec une requête SELECT, les données importées à la structure des tables de la nouvelle BDD.
=> On remarque que les données importées comprennent les noms des catégories alors que la table products contient une clé étrangère qui référence l'ID de la table categories.
4) En conséquence, varifier si les catégories importées existent dans la table categories de la nouvelle BDD.
Créer celles qui n'existent pas ou résoudre les fautes éventuelles dans els noms de catégories.
5) Procéder de la même manière pour les autres clés étrangères de la table products.
6) Vérifier que toutes les lignes de la table d'import sont transférables dans la table products.
=> Vérifier qu'aucune clé étrangère ne sera pas rejetée ;
=> Vérifier qu'il n'y a pas de doublons dans les noms ;
=> Vérifier que les prix sont bien retranscris dans le bon format pour les colonens de prix de la table products.
7) Importer les données dans la table products avec une requête INSERT ... SELECT8) Vérifier les données importées
=> Comparer le nombre de lignes créées dans la table products avec le nombre de lignes de la table d'import par des requêtes SELECT COUNT(*)=> Vérifier par sondage dans le nouveau logiciel.
J'espère que tu auras appris des choses et que la prochaine fois tu sauras faire toute seule. Sinon, envisage sérieusement une journée de prestation de quelqu'un qui connaît mieux les BDD que toi. Surtout que là c'était simple avec une seule table (products) en association avec une seule autre table (cotegories) un tout petit peu embêtante !
Fin de la saison 1 !Citation:
Envoyé par Fred_34
Y aura t-il une saison 2 ? :P
Petit up pour un petit souci que je n'avais pas vu.
En fait, quand il y a un article assez onéreux (dans les 1000€), il me met 1€ en prix :s, alors que mes autres prix ont l'air correct :s
Pourtant, avec un DECIMAL(10,2), tu peux théoriquement avoir 8 chiffres avant la virgule et deux après, soit 99 999 999.99 € 8-)
Comment sont ces valeurs fautives dans la table d'import et dans le fichier CSV d'origine ?Citation:
Envoyé par Doc MySQL
Ces valeurs sont normales dans la table d'import et dans le fichier CSV d'origine. Mais n'ayant pas tellement de produit dans ce cas de figure, je les ai changé et tout est pafait maintenant :).Citation:
Comment sont ces valeurs fautives dans la table d'import et dans le fichier CSV d'origine ?
Merci merci.