Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3033 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP/SQLITE] Lecture des données dans un fichier .db

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP/SQLITE] Lecture des données dans un fichier .db

n°1472018
PedroBD
Posté le 08-11-2006 à 08:27:42  profilanswer
 

Bonjour,
 
Dans le cadre d'un projet, je dois, en PHP5, lire un fichier .db qui contient une base de données SQLITE. Ce fichier, que je nomme ici toto.db, a est initialement géré sous WinCE; et on me l'envoie sous forme brute. J'ai déjà une base MySQL5, dans laquelle j'ai créé les mêmes tables que celles de la base SQLITE et je dois maintenant remplir ma base MySQL à partir des données SQLITE.
 
Le pb, c'est que sous WAMP 1.6.3, SQLITE Manager n'arrive pas à lire le fichier toto.db...probablement parce qu'il a été généré sous WinCE. Du coup, je sais pas comment commencer, quel outil utiliser pour manipuler mon toto.db et en extraire ses données.
 
Voilà, si vous pouvez m'aider, ben ça serait hyper cool!  
 
En plus, quand j'ouvre le toto.db avec le blocnotes, c'est une sorte de mélange de SQL et d'HTML...assez incompréhensible...pour moi du moins.
 
Merci de votre aide.

mood
Publicité
Posté le 08-11-2006 à 08:27:42  profilanswer
 

n°1472063
Taz
bisounours-codeur
Posté le 08-11-2006 à 10:13:04  profilanswer
 

ouvre avec la bonne version de sqlite, 2 et 3 sont incompatibles

n°1472718
PedroBD
Posté le 09-11-2006 à 08:37:10  profilanswer
 

Merci de ta réponse, mais mon fichier db et SQLITE de WAMP sont tous les deux en version 3.
 
Sinon j'ai fait une petite interface d'importation de fichier en php. Je le sélectionne avec "Parcourir" et je le lis avec le code:
 
<?php
if($db = sqlite_open($_FILES["fichier"]["name"], 0666, $messageerreur)) {
 
       $requete="SELECT Id FROM Tests";
 
       $result = sqlite_query($db,$requete);
 
       while ($row = sqlite_fetch_array($result))
             echo $row['Id'];
} else {
  die ($messageerreur);
}
?>
 
Le pb c'est qu'avec ce code j'obtiens rien, ni erreur, ni valeur de la base.
 
Tu as une idée de pourquoi ça marche pas?
 
Sinon il faut qu'il soit stocké où sur le disque le fichier db pour pouvoir être lu avec sqlite_open?
 
Merci de ton aide.

n°1855643
Kiosquec
Posté le 26-02-2009 à 16:59:51  profilanswer
 

J'ai le même problème : je fais un upload d'un fichier db de mon mobile vers le serveur et je veux que le serveur récupère des infos issues de 2 des tables contenues dans le metadata.db récupéré.
Vue l'ancienneté de la question, puis-je espérer que la réponse a été trouvé entre temps ?
A priori, je préfèrerais pouvoir extraire les données dans un format texte plutôt que de devoir les recharger dans une base.

n°1855661
tpierron
Posté le 26-02-2009 à 17:34:49  profilanswer
 

Bah regarde déjà si tu peux l'ouvrir avec l'outil en ligne de commande de sqlite ou avec un front-end graphique.
 
En ligne de commande, tu peux entrer la commande ".schema" pour obtenir le schéma de la base et récupérer le nom des tables susceptibles de t'intéresser.
 
Après c'est des bêtes requètes SQL pour récupérer les données.

n°1855691
Kiosquec
Posté le 26-02-2009 à 18:50:34  profilanswer
 

Ce qui marche sans problème sous dos, avec sqlite3.exe c'est :
 
sqlite.exe fichier.db
.output fichier.sql
.dump
.output stdout
.exit
 
Ça me donne un fichier texte dont je peux faire ce que je veux, facile à explorer pour en extraire les quelques lignes qui m'intéressent, dans pour autant aller recréer une base de données dont je n'ai pas l'usage.
Ce que je ne sais pas encore faire, c'est la même chose sous php.
 
Ceci dit, il y a deux jours j'ignorais jusqu'à l'existence de  sqlite, ceci expliquant peut-être cela.

n°1855808
xplo
Posté le 26-02-2009 à 23:52:31  profilanswer
 

php utilise des fonctions differente pour se connecter a une base sqlite2 et sqlite3.
sqlite2 -> http://fr.php.net/manual/en/book.sqlite.php
sqlite3 -> http://fr.php.net/pdo

n°1856005
Kiosquec
Posté le 27-02-2009 à 14:35:17  profilanswer
 

Avec sqlite3.exe, j'ai pu faire un fichier batch qui fonctionne :
 
Il contient ceci :
sqlite3.exe machin.db .out > machin.sql
rem Vérification du résultat :
type machin.sql
 
Reste à voir si php va accepter de lancer ce batch :
<?php
exec('test.bat');
?>
 
Et le tour est joué. Il reste à paramétrer les noms de fichiers en entrée et en sortie en se rappelant les vieilles commandes apprises du temps de MS/DOS :
sqlite3.exe %1.db .out > %1.sql
rem Vérification du résultat :
type %1.sql
 
Sous DOS, on lance test machin
Sous php :
<?php
$monFichier = "machin";
exec('test.bat '.$monFichier);
?>
 
Il reste seulement à mettre les bons chemins pour que tout ne traîne pas dans le répertoire courant et à écrire le programme qui lira le fichier texte machin.sql pour en extraire les données voulues ou pour le modifier.
 
La création d'une base de données ne me convient pas car le fichier db est uploadé par plusieurs utilisateurs, qui écraseraient mutuellement leurs données car ils utiliseraient les mêmes tables.
Dans ma solution, l'upload change le nom du fichier d'origine truc.db en nom_utilisateur.db. Donc $monFichier = "nom_utilisateur" et du coup je travaille sur des fichiers textes personnalisés. Ma base MySQL est bien entendu alimentée avec le résultat des traitements.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP/SQLITE] Lecture des données dans un fichier .db

 

Sujets relatifs
[résolu] Prendre un nom de fichier + répertoire en macro pour excelaccès à une base de données
Faire connaisance avec PHPextraire une partie d'un fichier
Lecture Infos sur carte banquaire et carte SISFaille de sécurité en PHP ? etc/passwd ?
[PHP] Formatage des datesnom du fichier courant
[Javascript/PHP] Ouverture d'un popup dynamiqueProbleme envoi de mail PHP
Plus de sujets relatifs à : [PHP/SQLITE] Lecture des données dans un fichier .db


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR