Insertion des enregistrements dans une table Mysql

Fermé
djimy_cartel Messages postés 14 Date d'inscription lundi 13 octobre 2014 Statut Membre Dernière intervention 28 octobre 2014 - 13 oct. 2014 à 17:14
djimy_cartel Messages postés 14 Date d'inscription lundi 13 octobre 2014 Statut Membre Dernière intervention 28 octobre 2014 - 16 oct. 2014 à 10:33
Bonjour à tous;
Voilà , j'ai écrit un script php qui consiste à insérer les enregistrements depuis une table appelée table1 vers une autre appelée table2 sachant que la table1 est dans la base de données "moodle" et la table2 est dans la base de données "moodle_purge". à la première exécution, la table2 est remplie, mais quand j'ajoute d'autre enregistrements à ma première table manuellement (c-à-d dans phpmyadmin) et que je tente une deuxième exécution de mon script, je remarque que ma deuxième table reste telle qu'elle est c-à-d que les nouveaux enregistrements ne s'insèrent pas.
Voici mon script:

<?php
include ('connection.php');//fichier de connexion
$db=mysql_select_db("moodle");//se connecter à la base de données moodle
$db=mysql_select_db ("moodle_purge");//se connecter à la base de données moodle_purge

/********création de la table2 de même structure que table1 dans la base de données moodle_purge************/
$sql_cr= "CREATE TABLE IF NOT EXISTS table2 LIKE `moodle`.`table1` ";
$res_sql_cr=mysql_query($sql_cr);
if($res_sql_cr==FALSE)
{die(mysql_error());
mysql_close();}

$sql_ins= "INSERT INTO table2 as (SELECT * FROM `moodle`.`table1` WHERE `TABLE1`.`id` >=$MIN AND `TABLE1`.`id` <=$x1 )";/*$MIN et $x1 changent à chaque nouvelle insertion dans la lable1*/
$res_sql_ins=mysql_query($sql_ins);
if($res_sql_ins==FALSE)
{die(mysql_error());
mysql_close();}

?>



Pouvez-vous me dire qu'est ce qui manque à celui-ci? Merci d'avance.
A voir également:

3 réponses

mpmp93 Messages postés 6648 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
Modifié par mpmp93 le 14/10/2014 à 11:36
Bonjour,

Pourquoi gérez-vous deux bases de données?

A mon avis, une seule base suffit.

Et même une seule table.

dans votre table, vous rajoutez une colonne, par exemple un champ etat avec les valeurs:
'attente' ou 'oui' ou 'non' ou 'supprimer'

Vous voulez basculer un état vers 'supprimer' depuis un IHM de gestion (en administrateur par exemple)....

Et pour la "purge", vous ferez un DELETE .... WHERE etat='supprimer'

A+

Le présent est un fragment d'éternité coincé entre le passé et le futur
0
djimy_cartel Messages postés 14 Date d'inscription lundi 13 octobre 2014 Statut Membre Dernière intervention 28 octobre 2014
14 oct. 2014 à 16:07
Salut mpmp93 ;
Merci pour ta réponse,J'utilise deux bases de données pour ne pas surcharger la première, l'année passée, quand la table1 a atteint 6 millions d'enregistrements, la base de donnée à craché, ce qui nous a causé un sérieux problème au niveau de notre établissement. Alors , cette année ,j'ai pensé à créer une autre base de données dans laquelle je créé de nouvelles tables qui vont contenir les enregistrements transférés depuis la première, j'ai pensé à laisser uniquement les 10000 derniers dans cette dernière et ceci pour éviter tout risque de surcharge.
0
mpmp93 Messages postés 6648 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
14 oct. 2014 à 16:56
C'est assez étonnant qu'une base de donnée crashe. MySQL est assez robuste. Quelle est votre volumétrie?

De toute façon, que vous gériez une ou deux ou 10 bases, si ça crashe, ça crashe!

Une BDD est au format binaire et il faut lancer un CRON (crontab) sous UNIX/LINUX pour faire une sauvegarde des fichiers binaires, en général en tâche 1x24H de nuit....
0
djimy_cartel Messages postés 14 Date d'inscription lundi 13 octobre 2014 Statut Membre Dernière intervention 28 octobre 2014
Modifié par djimy_cartel le 16/10/2014 à 10:38
Bonjour;

Désolée pour ce retard, j'étais en train d'améliore mon script, cette fois-ci, j'ai mis en sorte que ce dernier me créera une table selon la date de jour où ma table d'origine atteint ses 6 millions d'enregistrements et tout cela afin d'éviter le problème d'insertion, pour se faire , j'ai fait une petite déclaration comme celle-ci:

$d=date("Y_m_d");
$table_name="`moodle`.table".$d;

Voici aussi mon script d'insertion:

$sql_insert="CREATE TABLE $table_name as (SELECT* FROM `moodle`.`table1`   WHERE `table1`.`id` >=$VAL_MIN AND `table1`.`id`<=$dx1)";

$res_sql_insert=mysql_query($sql_insert);
if ($res_sql_insert==FALSE)
{die(mysql_error());

mysql_close(); }  
   

Je l'ai lancé dans le CRON de LINUX, ça a marché.
J'espère que je suis dans la bonne voie.

Sinon, je n'ai pas bien compris ce que vous me dites à propos de la sauvegarde des fichiers binaires, pouvez-vous me clarifier les choses SVP?
0