|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
![]() Inscription : mai 2002 Messages : 40 ![]() |
Bonjour,
Je souhaite faire une importation massive (10.000.000 lignes) dans une table. J'ai consulté le précédent thread sur le sujet ainsi que le tutorial associé Toutefois, je ne sais pas comment faire ma table externe avec des nombres réels à l'intérieur tout en conservant l'alignement. Ma table est définie par Code :
|
||
|
|
00
|
|
|
#2 | ||||
![]() Inscription : mai 2002 Messages : 40 ![]() |
Je me fais moi même la réponse. En fait, on décide juste de la longueur qu'on veut. Et on fait ensuite des varchar à la longueur correspondante.
Par exemple, j'avais des real pas très précis à importer. J'ai mis ça dans mon générateur de fichier à importer : Code :
Ensuite, la séquence SQL : Code :
|
||||
|
|
00
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() ![]() Pierre Ingénieur qualité méthodes Inscription : mars 2003 Messages : 3 726 ![]() |
Dans le tuto, il est fait mention de:
1/ la modif du fichier de configuration de FB, en as-tu tenu compte ? 2/ la nécessité de décrire, dans la table externe, les caractères de fin de ligne : #13#10 en windows, mais uniquement #10 sous unix. Je ne les vois pas dans ton create table...
__________________
"Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet) ----------------------- Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MPUsus magister est optimus |
|
|
00
|
|
|
#4 |
![]() Inscription : mai 2002 Messages : 40 ![]() |
Oui, pardon, j'ai un peu simplifié mon exemple mais il y a bien un varchar(2) à la fin pour le retour à la ligne. Et ceci même sous Linux car j'ai généré le fichier sous Windows et il contient toujours #13#10 à la fin de chaque ligne.
J'ai aussi mis ExternalFileAccess = Full dans le firebird.conf de mon serveur. De même que j'ai fait un chmod 777 sur mon fichier externe pour que tout le monde puisse y accéder. |
|
|
00
|
|
|
#5 | ||
![]() Inscription : mai 2002 Messages : 40 ![]() |
Pour les retours à la ligne, je confirme qu'il suffit d'être cohérent entre le fichier généré et la structure de la table. J'ai poussé le vice jusqu'à ne pas mettre de retour à la ligne dans mon fichier puis d'importer par
Code :
Pour mon problème, il fallait redémarrer firebird pour prendre en compte ExternalFileAccess = Full. |
||
|
|
00
|
|
|
#6 | |
![]() ![]() Inscription : janvier 2004 Messages : 2 123 ![]() |
Salut,
Citation:
Je vais modifier cela dès que possible. Sujet résolu ? |
|
|
|
00
|
|
|
#7 |
![]() Inscription : mai 2002 Messages : 40 ![]() |
Oui, sujet résolu. J'ai réussi à importer mes 5 millions de ligne
Par contre, le coup de redémarrer firebird n'a pas été si simple que ça. Sous Linux, la méthode n'est pas la même si on est en Classic ou en SuperServer. J'étais dans le second cas. Il fallait faire un Sauf que ça refusait pour des problèmes de mot de passe. Car le mot de passe est stocké en dur dans le script de redémarrage ainsi appelé (qui se trouve en /etc/init.d). Et moi j'avais changé le mot de passe alors le script n'était plus à jour. Si ça peut aider les suivant. En tout cas, ton tutoriel m'a bien aidé
|
|
|
00
|
|
|
#8 |
![]() Inscription : mai 2002 Messages : 40 ![]() |
Un dernier message pour compléter.
A la fin, quand vous avez terminé toutes vos importations, n'oubliez pas de remettre le ExternalFileAccess = None (et de redémarrer FireBird PS : en fait, en version Classic, il n'y a pas à redémarrer le serveur vu que rien ne tourne et qu'une nouvelle instance est démarrée à chaque requête/connexion. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com