Précédent   Forum des professionnels en informatique > Bases de données > Firebird > Débuter
Débuter Forum d'entraide pour débuter avec Firebird
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 21/05/2003, 18h43   #1
Invité de passage
 
Inscription : août 2002
Messages : 20
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 20
Points : 2
Points : 2
Par défaut Perte du contenu des blobs

Bonsoir,

Lors d'une conversion de tables paradox vers interbase, peut-on récupérer les champs blobs ET leurs contenus (image ou memo) en respectant bien sûr le paramétrage des sub_types sans provoquer d'erreurs ?

Où perd-on définitivement leurs contenus ?

Merci d'avance pour vos réponses.
macakou99 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2003, 21h06   #2
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Oui sous interbase il existe le type BLOB et il y a des sous-types pour préciser si c'est de type mémo, binaire, user, ...


Donc je ne vois pas pourquoi on ne pourrait pas récupérer les info de paradox pour les injecter sous interbase.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2003, 08h42   #3
Invité de passage
 
Inscription : août 2002
Messages : 20
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 20
Points : 2
Points : 2
Merci de m'avoir répondu.
Je ne comprends pas, si je vide ma table interbase de ses données cela bugge quand même. Cela voudrait dire que la syntaxe ci-dessous est mauvaise :
Code :
1
2
3
4
5
6
7
8
9
CREATE TABLE "BUGS"
(
  "NUM"	INTEGER,
  "ANOMALIES"	VARCHAR(255),
  "CODE"	BLOB SUB_TYPE TEXT SEGMENT SIZE 80,
  "CIBLE"	VARCHAR(50),
  "LOCALISATION"	VARCHAR(255),
  "VUE"	BLOB SUB_TYPE 0 SEGMENT SIZE 80,
  );
A l'execution de l'appli, l'erreur suivante est générée :
Code :
"arithmetic exception, numeric overflow, or string truncation. Cannot transliterate character between character sets".
J'ai cherché sur le site de borland, je n'ai rien trouvé.
Savez-vous à quoi cela peut-il être dû ?
macakou99 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2003, 09h11   #4
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Code :
1
2
3
4
5
6
7
8
9
CREATE TABLE "BUGS"
(
  "NUM"	INTEGER,
  "ANOMALIES"	VARCHAR(255),
  "CODE"	BLOB SUB_TYPE TEXT SEGMENT SIZE 80,
  "CIBLE"	VARCHAR(50),
  "LOCALISATION"	VARCHAR(255),
  "VUE"	BLOB SUB_TYPE 0 SEGMENT SIZE 80,
  );
si ta table ne se crée pas c'est que ton code ci dessus est faux.
Essaye d'enlever la derniere virgule et ca devrait marcher :
Code :
1
2
3
4
5
6
7
8
9
CREATE TABLE "BUGS"
(
  "NUM"	INTEGER,
  "ANOMALIES"	VARCHAR(255),
  "CODE"	BLOB SUB_TYPE TEXT SEGMENT SIZE 80,
  "CIBLE"	VARCHAR(50),
  "LOCALISATION"	VARCHAR(255),
  "VUE"	BLOB SUB_TYPE 0 SEGMENT SIZE 80
  );
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2003, 09h23   #5
Invité de passage
 
Inscription : août 2002
Messages : 20
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 20
Points : 2
Points : 2
Pardon, erreur de frappe sur la virgule finale lors du post.
La table se crée parfaitement mais compilation impossible car erreur renvoyée:
Justement, c'est ce que je ne comprends pas. La table est créée, la requête semble correcte, pourtant je ne peux pas compiler.
Qu'est-ce que ce message d'erreur:
Code :
"arithmetic exception, numeric overflow, or string truncation. Cannot transliterate character between character sets".
macakou99 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2003, 09h35   #6
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Je m'en doutais que c etait une erreur de frappe (ou plutot de copier/coller) mais en fait je ne comprend pas bien ou et quand tu as ce message d'erreur ?

Tu parles de compilation d'un programme C++ ? Delphi ? autre ?

De plus ce message est celui qui est donné lorsqu'on essaye d'insérer des caractères non autorisé par le charactere set dans un char ou varchar (ou blob de type memo...)

Ensuite je le rappel au cas où, car je ne sais pas du tout si c'est ton cas vu qu'a part le message d'erreur on ne sais pas trop ce que essaye de faire et comment... : On ne peux pas faire des insert ou update de colonne de type blob rien qu avec un ordre SQL.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2003, 09h54   #7
Invité de passage
 
Inscription : août 2002
Messages : 20
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 20
Points : 2
Points : 2
Le langage utilisé est Delphi.
Grâce à tes explications, je crois comprendre que l'erreur vient des types de champ possible sous paradoxe (comme l'incrémentation automatique, entre autres...) et non transférables par du SQL sous Interbase.

Ce que j'essaie de faire, c'est de porter une application qui tourne depuis 3 ans sous paradoxe vers Interbase.
Je souhaitais récupérer tous les champs de mes tables et si possible, mais cela paraît utopique, leurs contenus.

Je crains d'avoir à réécrire toutes mes tables, leurs contenus et par voie de conséquence, l'ensemble de mon appli. Ce qui me paraît fou.

Peux-tu me confirmer qu'il n'y a donc pas de portabilité "réelle" de Paradox vers Interbase ?
macakou99 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2003, 10h03   #8
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
je ne sais pas comment tu essayes de convertir tes données Paradox vers Interbase...
Si tu rencontres des problèmes c'est que tu utilises un outils de transfert...

Ce qui est certain c'est qu'en faisant un programme Delphi tu pourra facilement transferer tes données de Paradox vers Interbase...

Si tu nous en disait plus sur comment tu procèdes, on pourra mieux te conseiller...

De plus je suis de plus en plus persuadé que tu as un probleme de définition du character Set de ta base interbase ce qui explique ton message d erreur ...
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2003, 11h01   #9
Invité de passage
 
Inscription : août 2002
Messages : 20
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 20
Points : 2
Points : 2
J'ai tenté de les convertir en utilisant deux méthodes : IBPUMP et Le module de Données de delphi.
Pour certaines tables cela a marché parfaitement.
Mais pas du tout pour celles qui contiennent des blobs ou encore des index secondaires (et mon appli est truffée d'index secondaires).

Je vais donc essayer de faire un prog delphi de transfert pour y parvenir.

Pour ce qui est du "character Set", ma base interbase est en ISO8859_1.
Le Dialect est 3.

Merci de me consacrer du temps en essayant de m'aider.
macakou99 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2003, 11h08   #10
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Lorsque tu as déclaré la connexion à Interbase as tu précisé que tu voulais utiliser la character Set ISO8859_1 ?

Car sinon il va considérer que tu n'en utilise pas. Ca va marcher tant que tu n'essayera pas d'insérer des données avec des caractères accentués par exemple.
Dans ce cas il va y avoir un message d'erreur car ta base est en iso8859_1 mais pas ta connection....
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2003, 15h17   #11
Invité de passage
 
Inscription : août 2002
Messages : 20
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 20
Points : 2
Points : 2
Tout d'abord merci à toi Barbidulle et merci à ce forum d'exister.
Mon appli fonctionne parfaitement avec la table (la plus conflictuelle) ... sous Interbase.
Je viens de migrer cette fameuse table avec des blobs de toutes sortes.

Voila ce qui s'est passé, lorsque j'ai migré mes tables paradox, par IBPUMP, j'avais beau les paramétrer en SQL Dialect 3 et en Character Set ISO8859_1, le résultat donnait malgré tout après la migration un Dialect 1 et un character set par défaut.
Ce qui renvoyait le message d'erreur que j'ai indiqué et des données présentes mais inaccessibles.
Ayant pris le soin de bien faire attention à ces 2 paramètres, je ne pensais pas du tout que cela pouvait venir de là.

Barbidulle m'a montré où pouvait se situer l'erreur par ses conseils.
J'ai donc converti tables et récupéré mes données par IBPUMP.
Puis j'ai utilisé IBADMIN et j'ai forcé la déclaration du Dialect SQL et du Character Set.
Bilan : cela fonctionne. Merci encore.
macakou99 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 02h25.


 
 
 
 
Partenaires

Hébergement Web