2010-01-28 4 views
0

Fondamentalement, j'ai une exportation à partir d'un ancien système avec des feuilles de temps en elle.fractionnement des données Excel dans plusieurs tables MySQL

Chaque ligne pour le simplifier a un nom d'employé, une description et une heure.

J'ai des milliers de ceux-ci dans d'excellentes lignes de timesheets en Excel. Je veux pop ces deux tables dans

employés et Timesheet

Bien entendu, le nom de l'employé répéterait à plusieurs reprises, mais je veux avoir des employés uniques que dans la table des employés par exemple 30 employés mais 10 000 feuilles de temps

Ceci est une tâche unique, j'ai PHP à ma disposition si besoin, mais je reconnais qu'il ya probablement un moyen facile et intelligent de le faire.

J'ai quelques idées à moi, mais j'aimerais savoir de quelle façon vous le feriez. Remarque: il y a effectivement beaucoup plus de complexité dans le nombre de tables mais en résolvant l'exemple ci-dessus, il le résout efficacement pour l'exemple plus complexe où les clients, projets, tâches, etc. sont tous inclus dans chaque ligne.

Répondre

1

Je résous presque toujours ce type de problème (unique) avec CONCATENATE dans Excel et compile un fichier de commandes .sql. Dans les colonnes après les données que je construis certains d'entre eux ...

=CONCATENATE("insert into tableA (col1,col2,col3) values ('",A3,"','",A4,"','",A5,"');") 

copier/coller les déclarations dans un fichier texte et enregistrer en tant que mysqlfile.sql (ou autre). Ensuite, insérez dans votre db (à condition que les tables de base de données existent déjà)

mysql -umyname -p -hmyhost.com mydatabasename < mysqlfile.sql 

c'est un peu hacky, mais cela fonctionne rapidement pour ce genre de chose.

+0

oui c'est une idée sympa que je me suis utilisée surtout lorsqu'il y a une table, mais dans ce cas il y a plein de tables différentes et il pourrait y avoir des doublons pour les employés par exemple. Je pense que si je jette tout le format actuel dans une table temporaire, je pourrais écrire quelques sql pour remplir les tables appropriées après cela. –

+0

certainement si vous les mettez dans un temp_table et ensuite utilisé PHP pour itérer et trier à travers eux, vous seriez capable de le faire disparaître assez rapidement. Bonne chance! – netricate

0

Bonne vieille copie/coller/macro. J'utilise habituellement EditPlus pour ce genre de travail. Il enregistre les frappes de macros sur une touche de raccourci comme Alt-1. Donc, je viens d'écrire copier/coller tout dans editplus et enregistrer un "REPLACE INTO ..." pour la première ligne et le répéter pour le reste du fichier. Le coller comme une requête. Fonctionne à moins que vous n'ayez des millions de lignes.

Remarque: REMPLACER. Définissez votre table avec l'employé comme clé et chaque employé sera unique et il n'y aura pas d'erreurs.

Questions connexes