Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2991 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  transferer 350000 enregistrement d'une table local a table distante?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

transferer 350000 enregistrement d'une table local a table distante?

n°511902
saxgard
Posté le 10-09-2003 à 17:51:55  profilanswer
 

voila
comment peut-on faire pour transferer 350 000 enregistrement d'une table provenant d'une base de données Access à une table d'une Base de données ditantes sur MySql ?
 
j'ai essayera partir d'acces ca merde ca ne copie pas tt
a partir de MySqlFront , SQLyog et dernièrement avce EMS Mysql manager et ca merde encore
 
uen solution?

mood
Publicité
Posté le 10-09-2003 à 17:51:55  profilanswer
 

n°520187
aspegic500​mg
Posté le 22-09-2003 à 07:25:43  profilanswer
 

Personnelement, je ferai transiter d'abord les enregistrement vers une bdd mysql locale, puis je balancerai la mysql locale sur la distante, ca reglerait deja une embrouille :D

n°524714
_maximus_
Goret ptit con ^_^
Posté le 27-09-2003 à 19:27:18  profilanswer
 

moi si j'etais toi, je genererais un fichier texte qui serait une liste de INSERT INTO a faire pour chaque enregistrement.
 

INSERT INTO ....blabla...........;
INSERT INTO ....blabla2...........;
INSERT INTO ....blabla3...........;
.
.
.
INSERT INTO ....blablaN...........;


 
Une fois ce fichier generé, tu te demerde avec un client mysql, ou un chti script php...


---------------
Ptit con de goret je t'emmerde ^_^
n°524738
MagicBuzz
Posté le 27-09-2003 à 19:55:16  profilanswer
 

plutot que de passer par une serie de requetes, je conseille plutot un fichier plat a pas fixe (ce qu'il y a de plus performant)
 
en effet, le probleme de la chie d'insert, c'est que si les transactions sont activees dans mysql tu risque grandement un rollback segment full et donc un plantage. et si tu force es commits 5meme par lot, non seulement tu vas faire chutter les perfs, mais surtout si pour une raison ou pour une autre ca plante, tu ne pourras pas revenir en arriere. alors qu'avec un module d'import de fichier plat tu ne devrais pas avoir ces probleme.

n°524752
_maximus_
Goret ptit con ^_^
Posté le 27-09-2003 à 20:48:53  profilanswer
 

MagicBuzz a écrit :

plutot que de passer par une serie de requetes, je conseille plutot un fichier plat a pas fixe (ce qu'il y a de plus performant)
 
en effet, le probleme de la chie d'insert, c'est que si les transactions sont activees dans mysql tu risque grandement un rollback segment full et donc un plantage. et si tu force es commits 5meme par lot, non seulement tu vas faire chutter les perfs, mais surtout si pour une raison ou pour une autre ca plante, tu ne pourras pas revenir en arriere. alors qu'avec un module d'import de fichier plat tu ne devrais pas avoir ces probleme.


 
Tu veux dire carrément copier le fichier contenant les données de la DB sur le serveur? Encore faut-il que sont hebergeur autorise cela...


---------------
Ptit con de goret je t'emmerde ^_^
n°524756
MagicBuzz
Posté le 27-09-2003 à 20:55:36  profilanswer
 

non non, avec access, faire "exporter donnee", et choisir "fichier a masque" ou un truc du genre.
 
ensuite, sous mysql, creer la table avec les champs formattes de la meme facon.
 
puis avec un gui de mysql, choisir "importer un fichier a masque"

n°525366
saxgard
Posté le 29-09-2003 à 09:59:17  profilanswer
 

MagicBuzz a écrit :

non non, avec access, faire "exporter donnee", et choisir "fichier a masque" ou un truc du genre.
 
ensuite, sous mysql, creer la table avec les champs formattes de la meme facon.
 
puis avec un gui de mysql, choisir "importer un fichier a masque"


 
si dans la table distante MySQl , la clé est juste un numerique et dans access la clé et un numero auto , es ce que ca peu engendré des problèmes? en partant du principe que l'on fait une transaction ACCESS a MySQL.

n°525367
saxgard
Posté le 29-09-2003 à 10:00:46  profilanswer
 

dans l'exportantion je ne voix pas ce que tu appelles par "fichier a  masque"?

n°525374
format_c
Plouf plouf ...
Posté le 29-09-2003 à 10:19:29  profilanswer
 

Il faut que tu exportes depuis access ta base en prenant l'option fichier texte ou excel.


---------------
Mes guitares, ampli, et effets sont en vente !
n°525379
saxgard
Posté le 29-09-2003 à 10:31:12  profilanswer
 

Format_C a écrit :

Il faut que tu exportes depuis access ta base en prenant l'option fichier texte ou excel.


 
peut-on exporter juste une table?
ensuite faut'il que le prestataire accepte de mettre ajour la base MySql :/

mood
Publicité
Posté le 29-09-2003 à 10:31:12  profilanswer
 

n°525381
Tetedeienc​h
Head Of God
Posté le 29-09-2003 à 10:36:38  profilanswer
 

Saxgard a écrit :


 
peut-on exporter juste une table?
ensuite faut'il que le prestataire accepte de mettre ajour la base MySql :/


 
oui on peut, lis la documentation de Access, c dedans ( intégralement d'ailleurs, un ami m'avait posé la meme question et ct devant ses yeux).


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
n°525383
saxgard
Posté le 29-09-2003 à 10:39:54  profilanswer
 

tetedeiench a écrit :


 
oui on peut, lis la documentation de Access, c dedans ( intégralement d'ailleurs, un ami m'avait posé la meme question et ct devant ses yeux).


 
ayé j'ai vu et essayé , le truc c que au niveau du prestataire ca rique d'etre un pb a moi q ue je puisse  a distance mettre a jour la table   de mla base distante MySql avce le fichier texte crée !

n°525398
format_c
Plouf plouf ...
Posté le 29-09-2003 à 11:02:25  profilanswer
 

Saxgard a écrit :


 
ayé j'ai vu et essayé , le truc c que au niveau du prestataire ca rique d'etre un pb a moi q ue je puisse  a distance mettre a jour la table   de mla base distante MySql avce le fichier texte crée !


Non c'est pas trop problématique. Il suffit de faire un script qui récupère le fichier texte crée et le transforme automatiquement. Le tout c'est que la personne qui fasse l'import mette le fichier exporter toujours au même endroit sur le serveur vers lequel le script pointera (si j'ai bien compris ton pb)


---------------
Mes guitares, ampli, et effets sont en vente !
n°525401
saxgard
Posté le 29-09-2003 à 11:04:10  profilanswer
 

Format_C a écrit :


Non c'est pas trop problématique. Il suffit de faire un script qui récupère le fichier texte crée et le transforme automatiquement. Le tout c'est que la personne qui fasse l'import mette le fichier exporter toujours au même endroit sur le serveur vers lequel le script pointera (si j'ai bien compris ton pb)


 
euh ouais c a peu pres ca ;o)
hmm le truc c que mnt faut savoir cmment se fait ce script et en plus il ya quelques pb avce le prestataire :/

n°525409
format_c
Plouf plouf ...
Posté le 29-09-2003 à 11:15:35  profilanswer
 

Saxgard a écrit :


 
euh ouais c a peu pres ca ;o)
hmm le truc c que mnt faut savoir cmment se fait ce script et en plus il ya quelques pb avce le prestataire :/  


Il faut un script php qui ouvre le fichier généré en lecture seule.
Ensuite tu lis et modifie le fichier ligne par ligne et à chaque fois tu fait un insert dans ta table.
 
Par exemple si une ligne de ton fichier de la table coordonnée est : $ligne = 'contact';'adresse';'telephone';'fax';etc...
Tu feras une fonction qui comptera le nbre de caractères jusqu'à la première occurence de ";" et tu dira que ton champs $contact est égal au n premiers caratères de $ligne. Puis tu remplaces dans $ligne le champs $contact.";" par rien autrement dit par "", et tu recommences l'opération par autant de champs que nécessaire.
Une fois que c'est fait tu te retrouves avec les variables $contact, $adresse, $telephone, $fax, etc... Tu n'as alors plus qu'à faire un Insert_table dans ta base mysql.


---------------
Mes guitares, ampli, et effets sont en vente !
n°525416
saxgard
Posté le 29-09-2003 à 11:19:10  profilanswer
 

Format_C a écrit :


Il faut un script php qui ouvre le fichier généré en lecture seule.
Ensuite tu lis et modifie le fichier ligne par ligne et à chaque fois tu fait un insert dans ta table.
 
Par exemple si une ligne de ton fichier de la table coordonnée est : $ligne = 'contact';'adresse';'telephone';'fax';etc...
Tu feras une fonction qui comptera le nbre de caractères jusqu'à la première occurence de ";" et tu dira que ton champs $contact est égal au n premiers caratères de $ligne. Puis tu remplaces dans $ligne le champs $contact.";" par rien autrement dit par "", et tu recommences l'opération par autant de champs que nécessaire.
Une fois que c'est fait tu te retrouves avec les variables $contact, $adresse, $telephone, $fax, etc... Tu n'as alors plus qu'à faire un Insert_table dans ta base mysql.


 
ouais mais le problème c'ets que si j'excecute ce script , je ne risque pas d'avoir un timeout parceque l'execution de cette requete sera trop longue?
 
j'ai deja rencontré ce pb avec d'autres tables

n°525429
format_c
Plouf plouf ...
Posté le 29-09-2003 à 11:30:38  profilanswer
 

Soit tu modifies le timeout, soit tu découpes le script en plusieurs boucles.
Par exemple ton script principal s'apelle script.php.
Quand tu le lances tu passes une variable script.php?saut2ligne=1000
 
Dans script.php tu dis que si la position de $ligne=$saut2ligne
alors tu dis que $saut2ligne=$saut2ligne+1000 et qu'il faut aller à la 'pagescript.php?saut2ligne='.$saut2ligne, ce qui rechargera ton script en passant scannantles lignes 1000 à 2000 etc...


---------------
Mes guitares, ampli, et effets sont en vente !
n°525434
saxgard
Posté le 29-09-2003 à 11:33:30  profilanswer
 

Format_C a écrit :

Soit tu modifies le timeout, soit tu découpes le script en plusieurs boucles.
Par exemple ton script principal s'apelle script.php.
Quand tu le lances tu passes une variable script.php?saut2ligne=1000
 
Dans script.php tu dis que si la position de $ligne=$saut2ligne
alors tu dis que $saut2ligne=$saut2ligne+1000 et qu'il faut aller à la 'pagescript.php?saut2ligne='.$saut2ligne, ce qui rechargera ton script en passant scannantles lignes 1000 à 2000 etc...


 
ah c pas bette ca , et ca peu s efaire automatiquementa lors? par une redirection?
mais on peu pa strouver un moyen qu'il y est un genre de flush sur la meme execution du script . Comme si il a fini il affiche puis continue( les requetes) puis affiche  ... etc... ?

n°525645
MagicBuzz
Posté le 29-09-2003 à 14:41:54  profilanswer
 

pas pitiée, utilisez pas le CSV :sweat:
 
un fichier à masque est plus rapide, et plus compatible (pas de problème de séparateur).
 
il se lit et s'écrit avec des variables de type "record".
 
Exemple :
 
mettons un type "utilisateur"
 


utilisateur
  nom - string(30)
  prenom - string(30)
  datenaissannce - string(8)
  groupe - string(2)
  CR - string(2)


 
on a deux variables contenant les données :


  Michel
  Dupont
  15021986
  2
  chr(10) + chr(13)
 
  François
  Dupuis
  05071964
  1
  chr(10) + chr(13)


(a noter qu'il faut impérativement comme dernière valeur une string contenant un saut de ligne, c'est pas obligatoire, mais ca rends le fichier plus lisible pour le débuggage)
 
On écrit dans le fichier avec un write_file(variable_de_type_reccord)
 
PS: si le langage est bien foutu, c'est la même fonction que celle pour écrire une chaine. Les valeurs dans les variables doivent impérativement être forcée à une taille fixe (utilisation de string(xxx) lors de la déclaration)
 
Le fichier généré sera :
 


Michel              Dupont              150219862
François            Dupuis              050719641


 
Il se lira de la même façon qu'il a été écrit, dans les mêmes variables. C'est à la vois très simple, et ce qu'il y a de plus performant. Ca évite de faire des traîtements de chaîne à plus savoir quoi en faire et de bosser avec des tableaux dynamiques (avec la fonction split par exemple).


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  transferer 350000 enregistrement d'une table local a table distante?

 

Sujets relatifs
[html] cacher des TR d'une table ![VBA] Tester si une table existe ...
[newbie] Cretation table SQL ?Windows - vitesse de connexion au réseau local
Les champs "automatiques" dans une table MySQL[PHP] Effectuer une requête sur une page distante. (résolu)
SQL supprimer des données d'une table en fonction d'une autredonner une valeur par defaut a un champ lors de la création d'1 table
[ MySql ] Problème "Table inexistante" ou "Champs pas dans field list"J'arrive pas a compter le nombre d'enregistrements d'une table(mysql)
Plus de sujets relatifs à : transferer 350000 enregistrement d'une table local a table distante?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR