Page 1 sur 1

convertir un .txt en .sql

Posté : 10 mars 2006, 03:52
par ma_pomme
Bonjour,

Je cherche a convertir un .txt de données généré automatiquement en .sql pour ensuite faire une insertion dans une BDD.

Mais je ne sais pas comment faire :?

Posté : 10 mars 2006, 08:32
par Cyrano
TU ne peux pas générer ton fichier directement en .sql ?

Posté : 10 mars 2006, 10:00
par Dominic
mysql_select_db('mabase')
OR die('connexion impossible :'.mysql_error());
	if ($myFile = fopen("monFichier.csv","r")) // ou txt
	{	
		while(!feof($myFile))
		{
		$myField = fgetcsv($myFile,200); // j'ai mis 200 comme limite à voir		
$req="INSERT INTO matable VALUES('$field[0]','$field[1]','$field[2]',etc.. )";
		$resultat=mysql_query($req);
		}
	fclose($myFile);
	}
mysql_close();

Posté : 10 mars 2006, 10:04
par Dominic
petit correctif
il faut évidemment mettre $myField[0] etc... à la place de field[0] etc..

Posté : 10 mars 2006, 12:48
par ma_pomme
TU ne peux pas générer ton fichier directement en .sql ?
malheureusement non :? car enfaite le fichier .txt est utilisé par un prog local en C++ pour stock toutes ces info que je veux pouvoir geré en ligne via ma base mysql. Mais le programme en question n'est pas de moi et je ne saurais le modifié :(

Posté : 10 mars 2006, 14:15
par iclo
Le plus simple, serait visiblement de convertir le txt en csv, mais tout dépend du format du txt: comment sont présentées les données.

Posté : 10 mars 2006, 14:34
par ma_pomme
voici un exemple de presentation des données

Code : Tout sélectionner

2:201:6;M;BSG 75;Le Compte de Lisle;sami;1;0;3;4;6;15;27;1531764;327993;116517;29700;22;0;38;0;0;0;0;0;0;0;0;8250;0;0;2;7650;6300;1000;90;0;85;1;1;60;0;2;26;24;24;26;0;10;2;12;10;6;8;12;2;6;0;0;0;2;11;11;13;12;13;12;8;12;7;7;10;6;7;2;1;2;;1;0;3;4;6;15;27;0;0;19136;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;2;441;0;0;0;0;0;1;0;0;0;2;0;0;0;0;0;4;0;1;0;0;0;0;0;0;5;5;0;2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;
e)

Et chaque ligne est "referencé" par 3 chiffre separé par de":" et chaque donnée par un ";"

J'ai deja créé mes tables avec phpMyadmin e reste plus qu'a transformé mon fichier de données pour pouvoir l'integre a ma base

Posté : 10 mars 2006, 16:05
par albat
Ne peux-tu pas dupliquer ton fichier
et renommer la copie avec l'extension .sql ?

Posté : 10 mars 2006, 16:17
par alexbad
Il doit être exécuté automatiquement ou tu copies son contenu en requête?

Il me semblerait simple de simplement lire le fichier, puis de réécrire un .sql :
<?php
$key = fopen('data.txt', 'a+');
	$texte = '';
	while (!feof($key)) 
	{
	$buffer = fgets($key, 4096);
	$texte .= $buffer;
	}

fclose($key);

//Ouverture du .sql
$key = fopen('data.sql', 'a+');

        $sql = $texte;
        fwrite($key, $sql);
fclose($key);
?>
Voilà, c'est comme cela que j'imagine la solution...

Posté : 12 mars 2006, 18:10
par ma_pomme
dsl pour le temps de réaction mais je n'ai pas eu le temps de revenir avant

Donc deja merci de votre aide et pour repondre à Alexbad enfaite je voudrais qu'une fois converti il soit inseré dans la base le tout automatiquement :?

Je me rend compte que j'en demande beaucoup et que c'est probablement impossible. Si c'est le cas dite le moi et j'abanonnerais mon idée

Posté : 12 mars 2006, 18:13
par alexbad
Je t'ai montré comment récupérer son contenu, pourquoi ne pas simplement placer son contenu dans un mysql_query() ?

Exemple :
<?php
$key = fopen('data.txt', 'a+');
    $texte = '';
    while (!feof($key))
    {
    $buffer = fgets($key, 4096);
    $texte .= $buffer;
    }
mysql_connect('host', 'user', 'pass');
mysql_select_db('base');

       mysql_query($texte); //La requête

mysql_close();
fclose($key); 
?>