|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : mars 2003 Messages : 203 ![]() |
Bonjour,
En faisant des recherches sur le web sur le moyen d'arriver à faire des insertions de plusieurs lignes (BULK INSERT), j'ai trouvé que la table externe est un moyen pour y arriver. J'ai donc créé un fichier pour stocker mes données. mon problème est que je n'arrive pas à créer ma table externe Code :
CREATE TABLE temp1 EXTERNAL FILE 'C:\Users\avelompa\Documents\datamining\DataAnalysis\Monitoring\bin\Debug\dt.ext'(field1 TIMESTAMP,field2 VARCHAR(10), field3 float, field4 VARCHAR(250)); Quand je lance ma requête avec flameRobin celui ci plante. Et avec C#, il ne ressort plus du commad.ExecuteNonQuery(). Qu'est ce qui ne fonctionne pas dans requête? Y t-il un moyen de faire une mutli-insertion pour enregistrer des données de 500000 lignes? Merci pour votre aide |
|
|
00
|
|
|
#2 | ||
|
Membre chevronné
![]() ![]() |
Bonjour,
Philippe. |
||
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : mars 2003 Messages : 203 ![]() |
Merci pour la reponse, mais est ce qu'il est possible d'avoir une adresse relative pour la configuration du externalaccessfile? En effet il se peut que je distribue le logiciel.
|
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() ![]() ![]() Philippe MakowskiConsultant spécialité Firebird Inscription : mai 2002 Messages : 2 213 ![]() |
oui et non
si tu définis par exemple : Code :
ExternalFileAccess = Restrict C:\MonRepertoire
Code :
CREATE TABLE temp1 EXTERNAL FILE 'dt.ext' ...(
__________________
Philippe Makowski IBPhoenix - Firebird Membre de l'April |
|
00
|
|
|
#5 | |
|
Membre chevronné
![]() ![]() |
Citation:
Le moteur Firebird ne peut rien spéculer sur un chemin relatif. Il attend que ce paramètre contienne un (ou des) chemin(s) absolu(s). cf. la FAQ de Firebird Quant à l'emplacement du fichier firebird.conf, il est à la racine du répertoire d'installation de Firebird soit pour Firebird 2.5x sous windows XP le chemin par défaut suivant : C:\Program Files\Firebird\Firebird_2_5. Pour les détails, je te renvoie à la doc anglophone de firebird en suivant ce lien. -- Philippe. |
|
|
|
00
|
|
|
#6 | |
|
Nouveau Membre du Club
![]() Inscription : mars 2003 Messages : 203 ![]() |
Ok, il n'est pas évident de mettre l'adresse relative à partir de l'application. Je pense faire un script qui modifie le firebird.config. Mais j'ai un autre souci au niveau de mon fichier externe. J'avais ecrit dans mon fichier les données comme suit
Citation:
Code :
string.Format(@"CREATE TABLE temp1 EXTERNAL FILE '{0}\dt.ext'(field1 CHAR(19),field2 CHAR(10), field3 CHAR(8), field4 CHAR(250),fieldCRLF char(2));", filepath) N'y a t-il pas un moyen de définir la ligne d'enregistrement et les données de chaque champ? |
|
|
|
00
|
|
|
#7 | |||
|
Membre chevronné
![]() ![]() |
Le fichier doit avoir des lignes de longueur fixe pour pouvoir le traiter comme une table externe.
Chaque colonne doit être typée CHAR(n). Il suffit de la "caster" ensuite au bon format. Pour ton exemple en longueur fixe : Citation:
Code :
Philippe. |
|||
|
|
00
|
|
|
#8 | |||
|
Nouveau Membre du Club
![]() Inscription : mars 2003 Messages : 203 ![]() |
Si on prend la requête
Code :
Citation:
Est ce qu-il est donc impossible pour moi d'utiliser le fichier externe pour mes données? |
|||
|
|
00
|
|
|
#9 | |
|
Expert Confirmé
![]() ![]() ![]() Philippe MakowskiConsultant spécialité Firebird Inscription : mai 2002 Messages : 2 213 ![]() |
Citation:
les tables externes utilisent des fichiers de taille fixe soit tu transformes tes fichiers, sois tu utilises une autre solution
__________________
Philippe Makowski IBPhoenix - Firebird Membre de l'April |
|
|
00
|
|
|
#10 |
|
Nouveau Membre du Club
![]() Inscription : mars 2003 Messages : 203 ![]() |
Pour l'instant je transforme les données. mais y at il un autre moyen aussi rapide pour faire des grosses insertions comme
Code :
INSERT INTO DATA (field1,field2,field3,field4) VALUES ((value1,value2,value3,value4),(value5,value5,value6,value8),...) Code :
INSERT INTO DATA (field1, field2,field3,field4) SELECT(value1,value2,value3,value4) FROM rdb$database UNION SELECT(value5,value5,value6,value8) FROM rdb$database ...) |
|
|
00
|
|
|
#11 |
|
Membre chevronné
![]() ![]() |
Pour le 1° cas, une liste d'insert englobé dans une transaction
Pour le 2° cas, peut-être en utilisent une vue ou un CTE... -- Philippe. |
|
|
00
|
|
|
#12 |
|
Expert Confirmé
![]() ![]() ![]() Philippe MakowskiConsultant spécialité Firebird Inscription : mai 2002 Messages : 2 213 ![]() |
__________________
Philippe Makowski IBPhoenix - Firebird Membre de l'April |
|
00
|
|
|
#13 | ||||
|
Nouveau Membre du Club
![]() Inscription : mars 2003 Messages : 203 ![]() |
Citation:
Code :
Citation:
Pour dbfile je ferai un test sur son efficacité, car si il peut parser le fichier externe ca pourrait m'être utile pour d'autres insertion |
||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com