Import d'une table Access vers MySql

Import d'une table Access vers MySql - SQL/NoSQL - Programmation

Marsh Posté le 02-12-2008 à 16:27:21    

Bonjour, voila j'ai un problème et j'ai beau le retourné dans tous les sens je ne trouve pas de solution !
Je suis allez voir sur php.net, "google est mon ami", etc... mais rien :s
 
Donc je vous expose mon problème, il faudrait que je fasse un script permettant de demander a MySql d'importer une TABLE contenu dans une BDD Access...
J'ai déjà mis en place un liaison ODBC entre Access et Sql mais ce que je voudrait c'est que la table SQL se mette a jour qu'après un "ordre", et pas en direct...
 
N'y aurai-t-il pas une solution, genre une requete php, permettant d'aller "chercher" la TABLE dans Access, et l'exporter (avec ses données) dans MySql...
 
Je précise que l'utilisateur n'as pas accès à la BDD et donc ne peut pas faire de manipulation...
 
Il faudrait pour que ce soit parfais, uniquement lancer un "processus" de copie de la table Access vers Sql, en PhP, VB, ou n'importe quoi...  
 
Voila, d'avance je vous remercie.
Et reste ouvert à toute question / suggestion !! :)
 
 
ps : Je parle bien de TABLE et non pas de la BDD complète ! ;)

Reply

Marsh Posté le 02-12-2008 à 16:27:21   

Reply

Marsh Posté le 02-12-2008 à 17:06:59    

Si je résume, il y a un lien ODBC de MySQL vers Access (probablement pour que Access voit une table MySQL en tant que "table attachée" ). L'utilisateur dispose d'une application intranet ou internet (ou bien est-ce que c'est une application Access ?). Il faudrait ajouter un bouton sur une page HTML (ou est-ce sur un formulaire Access ?) pour que le contenu d'une table Access se transfert vers MySQL. C'est bien cela ?
 
Pour faire ce transfert en PHP, il faudrait pouvoir accéder à Access en lecture et à MySQL en écriture, ce qui est tout à fait possible, bien qu'il faille sans doute un peu tatonner avant de trouver le bon setting. Le code consisterait à faire un SELECT * from La_table_Access avec un curseur, et pour chaque ligne lue, faire un INSERT into La_table_MyQSL.
 
Une autre solution consisterait à exporter la table en mode texte et à la charger.
 
Une autre solution, si l'utilisateur a accès à Access, serait de faire du code VBA derrière le bouton d'un formulaire, qui ferait le SELECT de la table source Access et l'INSERT dans la table MySQL attachée.

Reply

Marsh Posté le 02-12-2008 à 17:12:54    

Oui l'utilisateur modifie les tables, créé les entrée etc... grâce à un progiciel ! :)
 
Par contre ça m'intéresse le script en PhP... mais je savai pas qu'on pouvait se connecter a Access directement depuis php ???
 
Je vais essayer de me renseigner un peu plus, Mais si quelqu'un aurai des infos la dessus, un tuto n'importe quoi je suis preneur ! :)
 
Merci !!!! =D

Reply

Marsh Posté le 02-12-2008 à 17:33:40    

J'ai fait plusieurs programmes en PHP qui se connectent à Access ou à Oracle. Mais je l'ai toujours fait en utilisant une bibliothèque gratuite qui est une extension au PHP de base, nommée AdoDB, que je trouve très bien. Au niveau du code, j'ai :

<?php
include("c:/Program Files/EasyPHP/apache/htdocs/adodb/adodb.inc.php" );
// ====================================================================
// Connexion à une base de donnée Access
// ====================================================================
function connexion(&$db)
{
   $db = ADONewConnection('ado_access'); # eg. 'oci8', 'access', or 'ado_access'
   $access = 'C:\DEV\php\ma_base_access.mdb';
   $myDSN =  'PROVIDER=Microsoft.Jet.OLEDB.4.0;'
           . 'DATA SOURCE=' . $access . ';';
   if (! @$db->PConnect($myDSN, "", "", "" )) {
      print "ERROR: Requires an Access database to $access".'<BR>'.$db->ErrorMsg();
      return(False);
   }
   return(True);
}
 
// ====================================================================
// Lit les enregistrements d'une table et met le resultat dans le tableau $result
// ====================================================================
function select_in_table1(&$result, $critere1, $critere2)
{
$nb = 0; $result = "";
if (! connexion($db)) return($nb);
$SQL_txt =   "select CHAMP1, CHAMP2 from TB1"
           . " where CD_UN = '{$critere1}'"
           . "   and CD_DEUX = '{$critere2}'";
$recordSet = $db->Execute("$SQL_txt" );
if (!$recordSet)  
   print $db->ErrorMsg();
else
   while (!$recordSet->EOF) {
      $result .= $recordSet->fields[0]
                 ."|".$recordSet->fields[1];
      $recordSet->MoveNext();
      $nb++;
   }
$recordSet->Close();
$db->Close();
return($nb);
}
...
?>


 

Reply

Marsh Posté le 07-12-2008 à 14:29:08    

Tu peux utiliser Access2MySQL, c'est un programme simple et efficace.


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Marsh Posté le 24-12-2008 à 00:10:58    

MySQL Migration Toolkit

 

tu passes une base Access vers Mysql en quelques clics

 

edit : oups, j'avais mal lu :d
"Je précise que l'utilisateur n'as pas accès à la BDD et donc ne peut pas faire de manipulation... "


Message édité par bricocoman le 24-12-2008 à 00:11:53
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed