[résolu] Export Excel -> MySql

WRInaute accro
Salut les WRistes,
Je vous soumet un petit problème qui commence à m'énerver depuis ce matin. Voila, j'ai réalisé un extranet qui doit se charger de faire des stats sur des demandes de documentations passer sur 3 sites différents. Tout allait bien jusque ici puisque je récupérais automatiquement les données des 3 sites en XML pour les importer dans la base de données de l'extranet.

Et voila qu'on me demande d'importer toutes les demandes passées par couponning, téléphone et fax depuis 2002. J'ai donc tout récupérer sous Excel (plus de 25000 enregistrements en tout).

Je souhaite donc récupérer les données Excel pour les importer dans ma base de données :

1- J'ai pensé à enregistrer mon fichier en CSV pour analyser chaque ligne, faire un explode() sur les caractères de séparation et le tour était jouer : NON, ya plein de retour de ligne dans les formats des adresses donc pas trop envisageable à moins que je retouche tout le fichier à la main (faut pas rêver)

2- J'ai pensé à enregistrer mon fichier en XML : vu ce que ça donne, j'imagine même pas comment je vais pouvoir faire une moulinette pour l'intégrer dans ma base de données (trop naze l'export en XML d'Excel)

Connaissez-vous une autre méthode qui pourrait marcher ?
Savez-vous comment je pourrais enlever ces put**** de retour de ligne dans le fichier Excel ?
Une des pistes serait d'enregistrer mon fichier en SYLK, est-ce que quelqu'un a une adresse d'un script PHP qui pourrait lire du SYLK (je sais exporter une base vers SYLK mais pas l'inverse, snifff) ?
 
WRInaute occasionnel
c'est quoi le format de ton fichier excel ?

si tu as un truc du style:
A1 B1 C1
nom prenom tel

dans excel, a la fin de toute les colonnes (ici en D1), tu fais
= A1 & ";" & B1 & ";" & C1 & "\n"

Cela aura pour effet de concatener tes colonnes avec un point virgule entre chaque, et un caractere d'echappement "\n" a la fin.

Tu recopies la formule sur toutes les lignes.

Ensuite tu copies la colonne obtenue dans une nouvelles feuille (fais copier / Edition > Collage Special... > Valeurs)

Enfin tu fais enregistrer sous > fichier texte tu dis oui a chaque message d'avertissement et normalement tu auras un fichier importable directement dans phpmyadmin (selectionne ta table puis 'inserer un fichier texte dans la table')

J'espere que ca marchera ?
 
WRInaute accro
Sophie, ta solution revient en fait à enregistrer sous un fichier CSV avec des séparateurs ;
Le problème, c'est que j'ai des retours de lignes à l'intérieur même des colonnes. J'ai tout essayer pour les virer mais je n'y arrive pas.

Voila un exemple d'une ligne qui me fait chi** en CSV :
92;VRAI;03/06/2002;VRAI;VRAI;BON****;patri**;;"le Glaizil bat a2
39,rue *******";05000;Gap;France;049253*****;;*****@wanadoo.fr;Employé de commerce;35 - 44 ans;;non;- - -;;Amis;;Français;Internet;- - -;;FAUX;;;

Vous voyez, sur l'adresse, il y a un retour de ligne qui s'est insérer puisqu'à l'époque, le champ était un textarea. Aujourd'hui, j'ai mis 2 champs adresses de type text pour éviter ce phénomène (en plus je génère des étiquettes pour l'envoie des documentations, donc le textarea n'est plus du tout valable car souvent le texte débordais de l'étiquette : il a donc fallu que je limite la taille de chaque champs).
 
WRInaute accro
aladdin, les liens qu'ils ont mis sur la page ne fonctionne pas...
Gaëtan R., j'ai regardé ton lien, pas mal. J'espère que je vais trouvé quelquechose avec les macros (que je ne connais pas, encore du triturage de cerveau en vue)
 
WRInaute impliqué
MySQL est capable d'importer un fichier MySQL tout seul comme un grand
Code:
LOAD DATA LOCAL INFILE '/importfile.csv'
INTO TABLE test_table
FIELDS TERMINATED BY ';'
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(field1, filed2, field3);

En oubliantpas lors de l'export CVS d'ajouter des doubles quotes autour des champs texte
 
WRInaute accro
Shroom, J'ai pas trouvé comment faire pour rajouter des " pour encadrer mes valeurs lors de l'export en CSV.

Par contre, le lien fourni par Gaëtan R m'a permis de trouver une solution pour virer les retours de ligne. Pour ceux que ça interresse, la voici :

- je sélectionne toutes mes cellules où il y a des retours de ligne
- je vais dans édition / rechercher / remplacer
- pour rechercher, j'inscris 0010 (ou 0013) en tenant la touche ALT enfoncée
- je remplace par " - " ou un autre caractère, peu importe
- je clique sur "Remplacer" et là, c'est un gros YES de soulagement car je n'est plus un seul retour de ligne. VICTORY !!!

Merci encore à tous de vous être donné la peine de m'aider. C'est à charge de revanche comme d'habitude...
 
Discussions similaires
Haut