Transporter d'une base de données access vers le code de création en sql

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 731 fois - Téléchargée 35 fois

Contenu du snippet

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 / Exemple :


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!!

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.