SGBDR : DB2-400 V5R2
Système : OS400
Comment convertir un champ de type BLOB et CLOB via SQL ?
Suis-je retombé à l'âge du paléolithique ? :wink:
Version imprimable
SGBDR : DB2-400 V5R2
Système : OS400
Comment convertir un champ de type BLOB et CLOB via SQL ?
Suis-je retombé à l'âge du paléolithique ? :wink:
Que veut tu dir par convertir ?????
????Code:ALTER TABLE
Convertir = transformer un champ de type BLOB(1024000) en un champ de type CLOB(2048000) en gardant les données existantes.Citation:
Envoyé par denisys
La commande ALTE TABLE serait idéalement
malheureusement, cette conversion ne se fait pas si aisément sous DB2 avec ce genre de type:Code:ALTER TABLE FCELAIA/MATABLE ALTER COLUMN B SET DATA TYPE CLOB (2048000)
Code:Attributs de la colonne B de MATABLE dans FCELAIA incompatibles.
Cela doit peut être venir de la version de DB2
Citation:
SGBDR : DB2-400 V5R2
Je serai curieux d'avoir la preuve que cela marche en UDB derniere release :evil:
Mais que faaaire :cry:
c'est incroyable, ce modèle de genres sur DB2 : certaines fonctionalités basiques n'existent toujours pas tandis que d'autres très évoluées existent depuis des années :fou:
Je toujours essayer un test de week end avec la version 8 de DB2
La version n’y est pour rien apparemment
C’est la version 8.1 pour windows
Code:
1
2
3
4
5
6
7
8
9
10 db2 => create table fadace1(nclob clob(1024000)) DB20000I La commande SQL a abouti. db2 => alter table fadace1 alter column nclob set data type clob(2048000) DB21034E La commande a été traitée comme une instruction SQL car il ne s'agit pas d'une commande valide pour l'interpréteur de commandes. Le message SQL suivant a été renvoyé lors de son traitement : SQL0190N Les attributs spécifiés pour la colonne "NCLOB" de la table "ADMINISTRATEUR.FADACE1" dans l'instruction ALTER TABLE ne sont pas compatibles avec ceux de la colonne existante. SQLSTATE=42837 db2 =>
D’après mes archives sur SQL DB2 la formule que tu utilise : " mofifie la taille de la colonne "
EX :
J’ai fais un test avec une colonne en varchar(20) je l’ai passé en varchar(30) et c’est OKCode:ALTER TABLE db2.tablob ALTER COLUMN comment SET DATA TYPE VARCHAR(40)
Mais elle ne change pas le type de colonne.
C'est bien ce que je redoutais: retombé à l'âge du paléolithique :cry:
Sur certains points évolués, DB2 est remarquable comparé aux autres SGBDR (ex. jointures ANSI depuis les années 90), pour d'autres basiques, c'est le burin et la tablette de marbre...
Ma question rste entière : comment faire cette conversion ?
Citation:
comment faire cette conversion ?
et si tu changé de stratégie ????
oui , car les types de données BLOB et CLOB ont des attributs !!!
je m’explique , lorsque j’ai simplement voulue changer la taille a une colonne de type BLOB
DB2 a refusé ce changement en me lançant un message comme quoi les attributs de la colonne ne permettents de modifications.
Je suis allé voir comment étais faite cette colonne par l’interface graphique de DB2, et effectivement il y a des attributs (ou des options : comme tu veux) permettant de gérer les données .
Donc stratégie :
Si tu ajoute une colonne du type voulue , que tu copie les donnés dans cette colonne , est ce que ça le fait ????
Mais prudence , ne supprime pas , ni les données , ni la colonne dans un premier temp .
Non, car lors de la copie, DB2 essaie de faire le changement de type via conversion... et cintre avec le même msg d'erreur. La seule solution que je vois pour l'instant est l'écriture d'un programme (Java ou autre) lisant le blob et le transférant dans un clob... le problème, c'est que ce type de manipulation via programmation cliente est lent... et ma table est monstrueuse.
Mais tu est sur de cela ????
http://www-306.ibm.com/cgi-bin/db2ww...7s0frm3toc.htm