|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Inscription : novembre 2005 Messages : 371 ![]() |
Bonjour le forum,
Je dispose de deux tables, une ancienne et une nouvelle. L'ancienne devait répondre a l'époque a une demande spéciale, je n'avais donc pas reflechi a organiser le positionnement des champs. L'evolution de mes fichiers PHP lisant ma table a reclamé la créatin d'une autre table, dont l'organistaion est différente de la premiere table. Exemple le champ nom se trouve 5eme dans la premiere table et 20eme dans la deuxieme table. Je voudrais savoir, s'il vous plait, comment faire pour adapter la premiere table a la seconde (déplacer les champs d'une table, je ne peux par les détruire pour les reconstruire a l'endroit ou je veux, cqr toutes mes infos seraient par la meme effécées.) faire en sorte que le champ nom de la premiere soit déplacé dans cette meme table a la 20eme place. Merci beaucoup de votre aide, et trés bonne journée le forum. |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : octobre 2003 Messages : 2 714 ![]() |
Salut,
Ce que tu cherches à faire dépend de ton SGBD. Et ce n'est utile que pour des requêtes qui récupèreraient tous les champs ( par exemple un SELECT * ou un INSERT sans liste des éléments à insérer ) Pour changer l'ordre des champs, il faut, en fonction de ton SGBD, aller voir les tables systèmes; Ce sont elles qui contiennent les définitions de tes tables, et donc la liste des colonnes. Il se peut que tu puisses changer l'ordre mais je ne sais pas si c'est toujours possible; Je ne suis même pas sûr que tu puisses avoir le droit de modifier ces tables systèmes a la mano. Quel SGBD utilises-tu ? A+
__________________
K |
|
|
00
|
|
|
#3 |
|
Membre régulier
![]() Inscription : novembre 2005 Messages : 371 ![]() |
phpMyAdmin 2.2.3
|
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() Inscription : septembre 2004 Messages : 5 421 ![]() |
Code :
ALTER TABLE tbl_name CHANGE col_name col_definition AFTER other_col_name |
|
|
00
|
|
|
#5 |
|
Membre régulier
![]() Inscription : novembre 2005 Messages : 371 ![]() |
Merci Mr N, je connaissais cette fonction, mais elle ne marche pas, j'ai regulierement une erreur., je pense que je vais laisser tomber, et modifier mes select * en select nom de colonne et le tour sera joué.
|
|
|
00
|
|
|
#6 |
|
Membre régulier
![]() Inscription : novembre 2005 Messages : 371 ![]() |
J'ai trouvé plus simplet plus rapide.
Je vais exporté en CSV, modifier l'ordre des colonne, recéer une table conforme et recoller le fichier CSV a la nouvelle table. Je teste de suite. Bonne journée |
|
|
00
|
|
|
#7 | |
|
Expert Confirmé Sénior
![]() Inscription : septembre 2004 Messages : 5 421 ![]() |
Citation:
|
|
|
|
00
|
|
|
#8 |
|
Membre régulier
![]() Inscription : novembre 2005 Messages : 371 ![]() |
PIRE QUE TOUT
j'utilise while($ligne = mysql_fetch_array($result, MYSQL_ASSOC) C'est pas grave, je me suis debrouillé autrement, par contre, je n'arrive pas a faire en sorte que phpmyadmin accepte de lire un fichier CSV pou rle traduire en table et données !!!! Trés embetant |
|
|
00
|
|
|
#9 |
|
Expert Confirmé Sénior
![]() Inscription : septembre 2004 Messages : 5 421 ![]() |
Ben je ne vois toujours pas pourquoi l'ordre de tes colonnes à de l'importance.
Suffit d'acceder à tes données via $ligne['nom_du_champ'] et de faire des requêtes d'insertion complêtes (comme ça devrait être fait normalement) : Code :
insert into table(champ1, champ2) values (val1, val2) |
|
|
00
|
|
|
#10 |
|
Membre régulier
![]() Inscription : novembre 2005 Messages : 371 ![]() |
Je suis d'accord mais quand on gére deux ou trois requetes avec 3 ou 4 colonne ca va, mais j'ai en gros une trentaire de requete pour 200 colonnes, donc un peu lourd quand meme.
Mais je suis passé a autre chose, j'ai telechargé ma BDD en CSV, modifié les colonne, et j'essaie en vain d'importer mon fihcier CSV dans ma bdd, mais marche pas, j'ai trouvé cette fonction sur le net : http://dev.mysql.com/doc/refman/5.0/fr/load-data.html mis je n'arrive pas trop a l'utiliser. Ma table est déja écrite, mon fihcier csv traduit en txt donne a peu prés ceci : var1;var2;var3;var4..... etc... comment puis je la traduire et l'importer dans mon SQL, car en SQL c'est plutot ca que je devrais avoir : INSERT INTO table VALUES ('var1', 'var2', 'var3', 'var4',...); Merci d'avance |
|
|
00
|
|
|
#11 |
|
Expert Confirmé Sénior
![]() Inscription : septembre 2004 Messages : 5 421 ![]() |
Pourquoi faire simple quand on peut faire compliqué ?
Utilise plutot les outils qui répondent à ton besoin : ALTER TABLE Je viens de le faire sur une table de test et tout roule... Colle nous la requête utilisée. |
|
|
00
|
|
|
#12 |
|
Membre régulier
![]() Inscription : novembre 2005 Messages : 371 ![]() |
Ok alors faisons un test pour que je comprennes ALTER TABLE.
Premiére table : CREATE TABLE NOUVELLE ( VARA text NOT NULL, VARB text NOT NULL, VARC text NOT NULL, VARD text NOT NULL, VARE text NOT NULL ) TYPE=MyISAM; CREATE TABLE ANCIENNE ( VARB text NOT NULL, VARD text NOT NULL, VARE text NOT NULL, VARC text NOT NULL, VARA text NOT NULL ) TYPE=MyISAM; Que dois je taper pour que la table ANCIENNE soit ordonnée comme la table nouvelle? ALTER TABLE ANCIENNE CHANGE VARB AFTER VARD ??? Merci de ton aide |
|
|
00
|
|
|
#13 | |
|
Expert Confirmé Sénior
![]() Inscription : septembre 2004 Messages : 5 421 ![]() |
Citation:
Code :
ALTER TABLE ANCIENNE CHANGE VARB VARB TEXT NOT NULL AFTER VARD |
|
|
|
00
|
|
|
#14 |
|
Membre régulier
![]() Inscription : novembre 2005 Messages : 371 ![]() |
Est il possible que ma version de PHPMYADMIN (2.2.3) ne permette pas cette fonction, car chez moi ce la ne fonctionne pas.
Erreur requête SQL : ALTER TABLE ANCIENNE CHANGE VARB VARB TEXT NOT NULL AFTER VARD MySQL a répondu: You have an error in your SQL syntax near 'AFTER VARD' at line 1 -------- J'ai meme essayé ça : Posted by Kevin Welch on March 18 2005 12:21am [Delete] [Edit] To reorder the columns of your table, you can use the ALTER TABLE syntax, since as of MySQL 4.0.1, the keywords FIRST and AFTER can be used in a CHANGE or MODIFY command. Example: mysql> describe example_table; +-------------+------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-------------+------------+------+-----+---------+----------------+| id | int(11) | | PRI | NULL | auto_increment || columnA | bigint(20) | | | 0 | || columnB | text | | | 0 | |+-------------+------------+------+-----+---------+----------------+ 3 rows in set (0.00 sec) mysql> ALTER TABLE example_table CHANGE COLUMN columnB columnB TEXT NOT NULL AFTER id; Query OK, 3 rows affected (0.01 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> describe example_table; +-------------+------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-------------+------------+------+-----+---------+----------------+| id | int(11) | | PRI | NULL | auto_increment || columnB | text | | | 0 | || columnA | bigint(20) | | | 0 | |+-------------+------------+------+-----+---------+----------------+ 3 rows in set (0.00 sec) ---- mais j'ai une erreur : ALTER TABLE ANCIENNE CHANGE COLUMN VARB VARB TEXT NOT NULL AFTER VARD MySQL a répondu: You have an error in your SQL syntax near 'AFTER VARD' at line 1 |
|
|
00
|
|
|
#15 |
|
Expert Confirmé Sénior
![]() Inscription : septembre 2004 Messages : 5 421 ![]() |
Ce n'est pas lié à phpMyAdmin mais à la version de MySQL. Chez moi ça marche (4.1)
Quelle est ta version ? |
|
|
00
|
|
|
#16 |
|
Membre régulier
![]() Inscription : novembre 2005 Messages : 371 ![]() |
MySQL 3.23.49-
|
|
|
00
|
|
|
#17 |
|
Expert Confirmé Sénior
![]() Inscription : septembre 2004 Messages : 5 421 ![]() |
Tu as les moyens de passer à une version plus récente ?
Sinon une solution est de faire un export : [X] Structure [X] Add drop table [X] Add AUTO_INCREMENT value [X] Enclose table and field names with backquotes [X] Data [X] Complete inserts Puis dans cet export il te suffit de modifier l'ordre des tables et de rebalancer la sauce à mysql. Un backup s'impose mais j'espere qu'il est déjà fait |
|
|
00
|
|
|
#18 |
|
Membre régulier
![]() Inscription : novembre 2005 Messages : 371 ![]() |
Merci pour toute ces suggestions, je me suis débrouillé autrement, mais les informations fournies en réponse a mon post me sont précieuse et je les testerai plutard.
Merci beaucoup et trés bonne journée a tous. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com