IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

[FireDAC] Lire un fichier sauvegardé en sfbinary


Sujet :

Composants VCL Delphi

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2022
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2022
    Messages : 36
    Points : 26
    Points
    26
    Par défaut [FireDAC] Lire un fichier sauvegardé en sfbinary
    Bonjour

    J exporte les tables d'une bases de données SQLite au format sfbinary.

    Comment importer ces fichiers car je n'ai rien trouvé sur le net ?

    Je ne souhaite pas utiliser de DBgrid ou autre du genre, je ne souhaite que remplir ma bdd, je fais mes requêtes en dur et travaille les résultats...

    Mon idée initiale était d'exporter au format CSV pour importer et créer un Chart en explosant la ligne mais j'ai trouvé cette solution d'export bien plus simple et rapide ( à vrai dire je n'ai pas trouvé comment exporter au format .csv autrement qu'en bouclant sur les résultats ce qui est très long)

    Mais j'aimerais savoir si cette forme de sauvegarde Implique que je ne peux utiliser ces fichiers que pour un import dans une base SQLite ?

    Merci de votre aide.

  2. #2
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    Bonjour

    Si c'est ce que je pense, c'est le format binaire de FireDAC (ou plutôt des TDataSet), peu importe la base de données d'origine, donc tu dois pouvoir recharger ces données dans un TFDMemTable.

    Mais n'étant pas certain de la méthode utilisée pour ton export, cette réponse peut ne pas être vraie.

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    À mon avis, le format sfBinary correspond à une extension du nom de fichier indiqué dans les ResourceOptions de TFDMemTable (nécessite Pesistent=true) PersistentFileName (*.fds, *.fdb, *.adb) sauf si Storedformat est indiqué (je ne sais comment) mais, j'ai l'impression que ce n'est pas une sauvegarde des tables mémoire qui est demandée.

    je ne souhaite que remplir ma bdd, je fais mes requêtes en dur et travaille les résultats...
    ce n'est pas très clair
    c'est certainement CopyDataset qui est recherché CopyDataset(MaQuerysurSQlite,uneTablememoire);
    ces fichiers que pour un import dans une base SQLite
    ou une utilisation de FDBatchMove,
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2022
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2022
    Messages : 36
    Points : 26
    Points
    26
    Par défaut
    Merci d'avoir pris le temps de me répondre.
    Effectivement cela n'est pas bien clair. Je vais mettre cela sur l'heure tardive et non pas sur le fait que je découvre delphi et les bases de données.

    Pour faire au plus simple

    J'ai une base de données SQLite dont je souhaite exporter chaque table dans un fichier distinct. Initialement j'avais envisagé le .csv en bouclant sur chaque ligne de ma table etc... mais j'ai vu que tout se faisait automatiquement, rapidement et que les fichiers étaient bien plus légers en utilisant req1.SaveToFile('filename', sfBinary);

    J importe ces données dans une TFDMemTable mais aprés...

    J ai cherché des tutos mais rien trouvé. Je cherche comment exécuter une requete sur ma TFDMemTable mais un TFDQuery a besoin d'un TFDConnection que je suis bien incapable de paramétrer.
    Je souhaite simplement boucler sur toutes les lignes de ma tables pour en extraire les données de chaque colonne individuellement et les manipuler .

    Si vous avez une url pour un tuto adapté à la TFDMemTable je suis preneur pke je tourne sacrément en rond.

    Pour info j ai vraiment cherché et suis tombé sur cette page mais là encore la connexion... https://delphiprogrammingdiary.blogs...native-to.html

    Merci pour votre aide

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Re,

    S'agissant de SQLite, donc local, je ne vois pas en quoi utiliser des tables mémoires serait utile.

    Mais s'il s'agit par la suite de générer des sortes de simulations à partir de tables SQLite de référence, cela s'envisage.

    Un CopyDataset pour faire une copie mémoire
    Un fdMemtable mis en persistant avec un nom de fichier adéquat ou un fdMemtable.SaveTofile('simulation.xxx', sfBinary); pour garder les simulations c'est envisageable.

    Reste la partie sauvegarde de fdmemtable vers SQLite, ce qu'un FDBatchmove fera très bien pour peu de bons parmètrages.

    Je cherche comment exécuter une requete sur ma TFDMemTable mais un TFDQuery a besoin d'un TFDConnection
    là, on parle de FDLocalQuery nettement plus "chiant" si je puis me permettre l'expression
    j'ai dû écrire des posts à ce sujet (dans le sous forum Bases de Données) car j'ai eu plusieurs galères à l'utilisation.
    Oui, il faut bien un FDConnection (driver SQLite)
    J'utilise, mais peu, de mémoire, il faut faire attention à l'ordre d'ouverture des divers composants : les tables en premier, puis le FDSQLLocal et enfin la déclaration des Datasets
    ci-dessous une utilisation avec du REST (woocommerce), des tables mémoires, une BDD Firebird

    Nom : Capture.PNG
Affichages : 107
Taille : 34,5 Ko
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    Effectivement, pour faire des requêtes SQL dans un TFDMemTable il faut ajouter un TFDConnection avec driver SQLite (pas besoin de base de données, juste le driver), y associer un TFDLocalSQL dans lequel on redéclare le TFDMemTable en lui fournissant un nom de table utilisable dans les requêtes, puis on fait nos TFDQuery et autres associés à la connexion, sur le nom de table déclaré dans le TFDLocalSQL.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2022
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2022
    Messages : 36
    Points : 26
    Points
    26
    Par défaut
    Merci à tous pour vos réponses.
    Maintenant il n y a plus qu'à ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Comment lire et fichier et sauvegarder ses bytes :2
    Par Forecast dans le forum C#
    Réponses: 1
    Dernier message: 21/05/2018, 19h23
  2. Réponses: 13
    Dernier message: 06/08/2013, 11h47
  3. [XML] Lire un fichier XML, le trier et le sauvegarder
    Par sami_c dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 26/08/2010, 16h41
  4. Réponses: 20
    Dernier message: 23/03/2006, 16h21
  5. Lire le fichier du port série
    Par saibe dans le forum Linux
    Réponses: 7
    Dernier message: 09/04/2003, 09h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo