|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre habitué
![]() Inscription : avril 2005 Messages : 162 ![]() |
Bonjour,
J'ai une table dans ma base qui contient un champ de type BLOB, et je dois exporter ces données vers une base gérée par SQL Server. Ce champ ne contient que du texte, d'où l'inutilité du BLOB je pense. J'ai plusieurs questions : - J'ai regardé les types de données dans SQL Server, il n'y a pas BLOB, mais comme mes données sont du texte, je peux peut être mettre ce champ en varchar(255) ou y a-t-il un type plus approprié pour des lignes de texte? - Lorsque je fais un select sur la colonne du BLOB, rien ne s'affiche, je n'arrive pas à récupérer les données texte contenues dans le BLOB. Comment je pourrais m'y prendre? Merci d'avance! |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Il y a un equivallent du BLOB sous sql serveur mais probablement à la sauce microsoft...
Visiblement vous ne savez pas ce qu'est un blob sinon vous ne diriez pas qu'il suffit de créer un varchar(255) pour le remplacer Un blob peux contenir n'importe quel données (binaire(images, son, etc), ou texte). Il n'est pas limité en taille (en théorie car en pratique il y a une limite je crois que 4Go)). Donc votre BLOB est peut etre de type texte mais si c'est un blob qui a été utilisé c'est que probablement les textes contenu dépassent (ou sont suceptibles de dépasser) la limite de taille d'un varchar (qui est de 32Ko). Pour les extraires et les réinjecter vous ne pourrez pas le faire avec un simple SELECT / INSERT. Il vous faudra utiliser obligatoirement des composants ou l'API qui sait gérer les BLOB afin de les extraires et les réinsjecter dans sqlServer. Si vous ne souhaitez pas faire un programme d'extraction sachez qu'ibexpert peux extraire les BLOB (il suffit de cocher dans les options Extract BLOB sous l'option format DATE que vous n'aviez pas vu la dernière fois.) Les BLOBs sont extraits dans un fichier (concaténés tous dans le même fichier) et dans le script d'extraction pour chaque insert vous avez l'adresse en hexa de la position de début et de fin (en octets) dans ce fichier du blob correspondant à l'enregistrement. |
|
|
00
|
|
|
#3 | ||
|
Membre habitué
![]() Inscription : avril 2005 Messages : 162 ![]() |
Citation:
Citation:
Sinon merci beaucoup pour toutes ces infos claires et utiles!![/quote] |
||
|
|
00
|
|
|
#4 | ||||||||
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Si votre texte n'est pas très important en taille et que c'est acceptable d'avoir une limite. Alors préférez en effet l'utilisation d'un varchar dans votre nouvelle base.
Reste le problème du transfert. Pour vérifier que vous n'avez pas de Blob très gros vous pouvez afficher leur taille en utilisant l'UDF rfunc et la fonction B_Total_Lenght Télécharger l'UDF Rfunc : http://rfunc.sourceforge.net/ copier rfunc.dll sur le serveur firebird dans le répertoire UDF Déclarez la fonction : Code :
Code :
SELECT ID, B_Total_lenght(MonBlob) FROM MaTable; Code :
Si votre plus gros BLOB ne dépasse pas 16383 octets (limitation de l'exemple qui suit) vous pourrez faire ceci : Déclarer la fonction de Rfunc B_LongSubStr : Code :
Code :
|
||||||||
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Inscription : avril 2005 Messages : 162 ![]() |
Et ben tout ce que je peux dire c'est MERCI BEAUCOUP d'avoir pris le temps de me fournir toutes ces indications, je vais essayer tout ca de suite (enfin apres le casse croute!!) et je vous tiens au courant.
|
|
|
00
|
|
|
#6 | ||||
|
Membre habitué
![]() Inscription : avril 2005 Messages : 162 ![]() |
Je n'arrive pas à effectuer le script :
Code :
Voici la réponse : Code :
|
||||
|
|
00
|
|
|
#7 |
|
Membre habitué
![]() Inscription : avril 2005 Messages : 162 ![]() |
Non en fait j'ai renommé B_TOTAL_LENGTH en B_TOT_LENGTH et a priori ca fonctionne.
|
|
|
00
|
|
|
#8 | ||||
|
Membre habitué
![]() Inscription : avril 2005 Messages : 162 ![]() |
Tout d'abord il ne faut pas oublier de renommer la colonne explicitement car lui la nommera blongsubstr :
Code :
Code :
|
||||
|
|
00
|
|
|
#9 | ||
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Ou peut etre commencer par nous raconter le debut de l'histoire :
Ca donne quoi le Code :
|
||
|
|
00
|
|
|
#10 |
|
Membre habitué
![]() Inscription : avril 2005 Messages : 162 ![]() |
Je trouve une taille maximale parmi tous mes blob de 1194.
|
|
|
00
|
|
|
#11 |
|
Membre habitué
![]() Inscription : avril 2005 Messages : 162 ![]() |
C'est bon j'ai trouvé ma ridicule erreur : j'avais déclaré mon champ dans sql server comme un varchar(255), trop petit évidemment.
En tout cas merci beaucoup pour votre aide précieuse!! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com