Précédent   Forum des professionnels en informatique > Bases de données > Firebird
Firebird Forum d'entraide sur le SGBD Firebird. Avant de poster -> F.A.Q Firebird, Tutoriels
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/12/2007, 13h08   #1
Membre chevronné
 
Avatar de buzzkaido
 
Homme
Ingénieur développement logiciels
Inscription : juillet 2004
Messages : 817
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2004
Messages : 817
Points : 636
Points : 636
Par défaut Importer beaucoup de données !

Bonjour,

J'ai un petit souci avec FireBird (j'utilise la version embarquée)

J'ai besoin d'inserer dans une base beaucoup d'enregistrements (environ 30.000).

Je le fait sur MySQL avec des commandes "LOAD INFILE" pour charger directement un csv ou avec un script sql qui contient des requetes pour inserer plusieurs lignes à la fois, du genre :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
INSERT INTO `rec` (`REC_IDF`, `ENT_IDF`) VALUES 
  (3501,10100),
  (3502,10100),
  (3503,10100),
  (3504,10100),
  (3505,10100),
  (3506,10100),
  (3507,10100),
  (3508,10100),
  (3509,10100),
  (...,...)
  (9000,10100);
Ainsi, sur MySQL ça ne prend que quelques dizaines de minutes (et encore)

Par contre, sur FireBird, je n'ai pas trouvé d'autre solution que d'inserer les lignes une à une, avec des requetes :

Code :
INSERT INTO rec (REC_IDF, ENT_IDF) VALUES (3501,10100);
Du coup, c'est tres tres tres long.... (plusieurs heures)

Existe-t-il un moyen de charger un fichier CSV directment, ou d'inserer plusieurs lignes à la fois ?

La pluspart des tables sont liées par des clés etrangeres, est-il possible de les descativer (temporairement) pour accelerer l'insertion ?

(comme en MySQL, on peut faire SET FOREIGN_KEY_CHECK = 0

Merci !
buzzkaido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2007, 13h20   #2
Modérateur
 
Avatar de Cl@udius
 
Homme Claude Renouleaud
Développeur informatique
Inscription : février 2006
Messages : 4 760
Détails du profil
Informations personnelles :
Nom : Homme Claude Renouleaud
Âge : 49
Localisation : France, Hautes Pyrénées (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2006
Messages : 4 760
Points : 6 790
Points : 6 790
Salut

As-tu regardé ce tuto rédigé par Yobenzen qui traite justement du sujet ?

@+ Claudius
__________________
A la question technique que par MP/MV tu formuleras, la réponse aux oubliettes finira.
Cl@udius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2007, 18h00   #3
Membre chevronné
 
Avatar de buzzkaido
 
Homme
Ingénieur développement logiciels
Inscription : juillet 2004
Messages : 817
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2004
Messages : 817
Points : 636
Points : 636
Merci pour le tuto !

Effectivement, tout y est bien traité, et confirme mes craintes...

- Il faut se taper à la main la destruction puis re-creation des clés étrangères
- Creer un fichier texte contenant les données pretes à être importées peut être assez lourd....

Conclusion :

Firebird est vachement bien, mais craint lorsqu'il s'agit d'inserer des données en masse...

Vu que j'insere plusieurs milliers d'enregistrements dans environ 200 tables et qui ont chacune leurs clés, contraintes etc...

Je crois que je vais continuer à faire des imports ligne par ligne, comme un bourrin, et lancer ça le soir en partant du boulot...
buzzkaido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2007, 18h03   #4
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
mais non, regarde de plus près, les tables externes sont très rapide
et si ta base est bien faite, tu n'as pas besoin de supprimer, recréer les clés étrangères
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2007, 18h07   #5
Membre chevronné
 
Avatar de buzzkaido
 
Homme
Ingénieur développement logiciels
Inscription : juillet 2004
Messages : 817
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2004
Messages : 817
Points : 636
Points : 636
Oui oui, les tables externes sont très rapides...

Mais :

Citation:
Pour cela, nous avons besoin d'avoir nos données sous forme d'un fichier texte dont les enregistrements sont de longueurs fixes (fichier séquentiel).
Or, produire un tel fichier à partir d'une base MySQL qui melange des colonnes TEXT, INTEGER, BLOB... ca risque d'etre un peu long...

Alors le faire pour 200 tables....
Encore plus long...

Puis importer tout ça....

Mouais, je prefere quand meme continuer à bourriner.

Mais je retiens l'astuce des tables externes, ça pourra être très pratique dans d'autres cas.
buzzkaido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2007, 21h06   #6
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
il existent des outils aussi pour le csv
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2007, 23h19   #7
Membre à l'essai
 
Inscription : avril 2005
Messages : 25
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 25
Points : 23
Points : 23
la problématique de chargement massive de données revient reguliérement avec FB qui ne comporte pas d'outil natif intégré.

cf les echanges précedents pour le chargement de fichiers csv:
http://www.developpez.net/forums/sho...d.php?t=396997

j'ajouterai que dans certains cas IBpump peut aussi être la solution.

Pour info, l'équipe FB prépare la mise en oeuvre d'une fonctionnalité "Bulk load" pour la prochaine version de FB (2.5)

Slts
PAscal
pascal_legrand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2007, 22h20   #8
Futur Membre du Club
 
Inscription : janvier 2007
Messages : 80
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 80
Points : 15
Points : 15
Bonjour

programmes tu un peu en delphi
si oui j' ai quelques sources que tu pourrais adapter.
j' ai transferer beaucoup de donner comme cela

Fred
Fred 57220 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h05.


 
 
 
 
Partenaires

Hébergement Web