begin process at 2012 02 09 07:21:24
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > TRANSPORTER D'UNE BASE DE DONNÉES ACCESS VERS LE CODE DE CRÉATION EN SQL

TRANSPORTER D'UNE BASE DE DONNÉES ACCESS VERS LE CODE DE CRÉATION EN SQL


 Information sur la source

Note :
Aucune note
Catégorie :Astuces Niveau :Débutant Date de création :14/01/2005 Date de mise à jour :15/01/2005 19:53:21 Vu :5 660

Auteur : zoukozouko

Ecrire un message privé
Site perso
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

 Description

Voici les etapes pour obtenir votre fichier en SQL de votre table ACCESS:
Sous ACCESS :
- il faut creer une requete qui affiche tous les champs de la table (type feuille de donnees)
- passer en mode SQL et rajouter entre chaque champ un caractere particulier j'ai choisi un k pour separer les lignes et un z pour separer les champs:
aide: votre requete est du type
                                      SELECT DISTINCTROW MA_TABLE.field_1, MA_TABLE.field_2, MA_TABLE.field_3
                                      FROM MA_TABLE
et devient:
                                      SELECT DISTINCTROW MA_TABLE.field_1, 'z', MA_TABLE.field_2, 'z', MA_TABLE.field_3, 'k'
                                      FROM MA_TABLE
-Vous reafficher la requete en mode feuille de donnees. ce qui vous donne un tableau avec des colonnes intermediaires remplies de 'z' ou de 'k'.
-Maintenant il faut faire une copie de out le tableau, et le copier dans note pad.
-Vous supprimez du fichier obtenu toute la premiere ligne, qui contient le nom des champs.
-Le travail sous ACCESS est fini.

Pour transformer ce fichier en fichier source SQL, on utilise le programme C si dessous :
dans lequel il faut remplacer "NOM_DE_LA_TABLE" par le nom de votre table sous phpMyADmin et "FICHIER_DE_BASE.txt" par le nom du cfichier que vous venez de créer
il faut aussi remplacer le nom de tous les champs.

Source

  • int main()
  • {
  • char tampon[50];
  • char groupe[250];
  • char ligne[500];
  • int i;
  • FILE* file;
  • FILE* fileRes;
  • // Ouvre le fichier "r" pour "read", "w" pour "write", "a" pour "append"
  • file = fopen("FICHIER_DE_BASE.txt","r");
  • fileRes = fopen("RESULTAT.txt","w");
  • while(!feof(file))
  • {
  • //On lit le fichier ligne par ligne c'est a dire jusqu'au 'k'
  • sprintf(ligne,"INSERT INTO `NOM_DE_LA_TABLE` ( `field_1` ,`field_2` , ... , `field_n` ) VALUES (");
  • sprintf(tampon,"a");
  • while (tampon[0] != 'k' || tampon[1]!='\0')
  • {
  • fscanf (file,"%s",&tampon);
  • sprintf(groupe,"'");
  • while (tampon[0] != 'z' && tampon[0] != 'k' || tampon[1]!='\0')
  • {
  • sprintf(groupe,"%s %s",groupe,tampon);
  • fscanf (file,"%s",&tampon);
  • }
  • sprintf(groupe,"%s'",groupe);
  • sprintf(ligne,"%s %s,",ligne,groupe);
  • }
  • i=0;
  • while (ligne[i] != '\0') i++;
  • ligne[i-1] = '\0';
  • sprintf(ligne,"%s);\n",ligne);
  • fprintf(fileRes,"%s",ligne);
  • }
  • fclose (file);
  • fclose (fileRes);
  • return 0;
  • }
int main()
{	    
	char tampon[50];
	char groupe[250];
	char ligne[500];
	int i;
	FILE* file;
	FILE* fileRes;
	// Ouvre le fichier "r" pour "read", "w" pour "write", "a" pour "append"
	file = fopen("FICHIER_DE_BASE.txt","r");
	fileRes = fopen("RESULTAT.txt","w");
	while(!feof(file))
	{
		//On lit le fichier ligne par ligne c'est a dire jusqu'au 'k'
		sprintf(ligne,"INSERT INTO `NOM_DE_LA_TABLE` ( `field_1` ,`field_2` , ... , `field_n` ) VALUES (");
		sprintf(tampon,"a");
		while (tampon[0] != 'k' || tampon[1]!='\0')
		{
			fscanf (file,"%s",&tampon);
			sprintf(groupe,"'");
			while (tampon[0] != 'z' && tampon[0] != 'k' || tampon[1]!='\0')
			{	
				sprintf(groupe,"%s %s",groupe,tampon);
				fscanf (file,"%s",&tampon);
			}
			sprintf(groupe,"%s'",groupe);

			sprintf(ligne,"%s %s,",ligne,groupe);
		}
		i=0;
		while (ligne[i] != '\0') i++;
		ligne[i-1] = '\0';

		sprintf(ligne,"%s);\n",ligne);
		fprintf(fileRes,"%s",ligne);
	}
	fclose (file);
	fclose (fileRes);
	return 0;
}

 Conclusion

La demarche est un peu compliquée, mais j'etais tellement ennuyé hier de devoir recopier les 3800 enregistrement de ma base de donnees que j'ai fait ce petit programme.
Comme le prog lit le fichier chaine apr chaine, il est important de mettre les 'k' ou 'z' entre chaque champ. ainsi le prog peut reconnaitre un champ vide, et le remplacer par '', en SQL, sinon la requete est faussée.
Une fois que vous avez recréée la table dans PhpMyAdmin, vous allez ans SQL, et vous lancez le fichier RESULTAT.txt.
Et voila, votre base est remplie!!



 Historique

15 janvier 2005 19:53:21 :
JE VIENS DE FAIRE EXACTEMENT LA MEME CHOSE EN DIX LIGNE DIRECTEMENT SOUS ACCESS. JE VAI POSTER LA SOURCE DANS LA SECTION VBA. MAIS PEUT ETRE QUE LA SOURCE EST UTILE POUR LA LECTURE ET ECRITURE DE FICHIERS (mais pour debutants) SINON? IL EXISTE UN LOGICIEL ACCESStoMYSQL qui fait le travail aussi.

 Sources de la même categorie

Source avec Zip SCHEDULER RR FIFO par yvesB87
Source avec Zip ALGORITHMES RÉCURSIFS VS ALGORITHMES ITÉRATIFS par yvesB87
Source avec Zip Source avec une capture C++ FORMAT D'IMAGE AVEC QT par pop70
Source avec une capture EXEMPLE DE POINTEURS DE FONCTION par pop70
Source avec Zip Source avec une capture [C++] CLASS REGISTER par Miwik

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales