|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() manuel briot Inscription : octobre 2010 Messages : 56 ![]() |
Bonjour à tous !
j'importe des données de sqlserver vers oracle. En source j'ai un grand champ texte de type "text" et je voudrai l'importer dans oracle. J'ai essayé en faisant un cast vers varchar2 mais ça ne marche pas. J'ai également essayé en faisant un to_clob de mon champ mais sans succès. Quelqu'un sait-il comment faire ? Merci |
|
|
00
|
|
|
#2 |
|
Invité régulier
![]() manuel briot Inscription : octobre 2010 Messages : 56 ![]() |
j'ai réussi à obtenir un truc mais ce n'est pas vraiment satisfaisant
en faisant : j'obtiens juste une partie de l'info contenue en source C'est bien du type clob qu'il me faudrait en cible ? |
|
|
00
|
|
|
#3 |
![]() ![]() Administrateur de base de données Inscription : août 2007 Messages : 1 158 ![]() |
Hello,
Si du cote de SQL Server tu casts en: tu devrais par la suite pouvoir traiter cette information sans perte de donnees depuis la source. Par contre du cote de la cible, bonne question. Je connais pas trop Oracle. Le CLOB semble correspondre au besoin d'apres la description du datatype. |
|
|
00
|
|
|
#4 |
|
Invité régulier
![]() manuel briot Inscription : octobre 2010 Messages : 56 ![]() |
Salut Ptit_Dje
j'ai essayé ce que tu me propose de deux manières : 1) en creant une table oracle dand laquelle je fais: mais ça ne marche pas à cause du mot "max" Quand je mets varchar(300) ça passe mais toujours avec une perte de données. 2) en creant une table sqlserver dans laquelle je fais : là ça ne passe pas non plus et en retirant le max ça ne passe toujours pas. Visiblement je peux jouer sur la taille du varchar mais sans mettre le mot clé "max" |
|
|
00
|
|
|
#5 |
|
Membre actif
![]() Consultant informatique Inscription : mars 2003 Messages : 130 ![]() |
As tu essayer de mettre directement le champs de type text de Sql server directement dans un champs de type Clob ?
Logiquement si le type correspondant a text dans oracle c'est Clob tu n'a pas besoin d'effectuer de transformation. (Après je n'ai jamais eu besoin d'utiliser de champs text, je n'y mettrais pas ma main au feu) |
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() manuel briot Inscription : octobre 2010 Messages : 56 ![]() |
oui j'ai essayé et ça ne marche pas.
ODI m'affiche une petite bulle jaune "risque de troncature: colonne cible plus petite que colonne source" je lance quand même l'interface et et elle plante La même manip avec le type blob me donne le même résultat. |
|
|
00
|
|
|
#7 |
|
Membre actif
![]() Consultant informatique Inscription : mars 2003 Messages : 130 ![]() |
donnes un peu plus de détail :
-a quel étape ca plante ? -quel version de sql server tu utilise -donne le script sql de l'étape ou ca plante -si c dans l'insertion dans la table temporaire qu'odi cré donne aussi le script de creation de table. -Décri ton flux (si tu utilise un workspace diffèrent de la cible, KM utilisé ect..) au passage essaye avec convert(VARCHAR(MAX),Monchamptext) du coté sql server |
|
|
00
|
|
|
#8 |
|
Invité régulier
![]() manuel briot Inscription : octobre 2010 Messages : 56 ![]() |
Je crée une table oracle en donnant à mon champ texte le type "CLOB"
La transformation de mon champ text de sqlserver en varchar c'est bien dans une table oracle que vous me conseillez de la faire ? Car pour l'instant j'essaye également de faire dans une table oracle (avec MonchampTXT en varchar2) la fonction CONVERT ou CAST mais je me fais jeter avec le mot clef max (varchar(max) ) car l'expression sur le SGBD n'est pas valide. Par contre avec varchar(3000) par exemple ça passe mais avec perte d'information. Il faudrai que je crée une table dans SQLSERVER pour convertir mon champ texte en varchar puis créer une table oracle pour transferer mon champ varchar en varchar2 d'oracle ? |
|
|
00
|
|
|
#9 |
|
Membre actif
![]() Consultant informatique Inscription : mars 2003 Messages : 130 ![]() |
Pour récupérer le SQL généré par ODI :
Tu va dans operator, tu peux y voir les info d'exécution quand tu double clik sur une étapes tu obtiens les infos de cet étape qui s'ouvre dans une nouvelle fenêtre, et en navigant dans les onglet tu devrais trouver le sql généré par ODI Si je t demandais la requête de création de la table c pour vérifier quel est le type qu'odi met pour ton champs. (dans la table de travail bien sur) parce que ca ressemble beaucoup a une erreur que j'ai déjà rencontré. essaye de mettre comme espace de travail sql serveur. La fonction que je t proposée ne fonctionne que sur Sql server pas sur oracle. soit bien sur qu'elle est exécuté en cible et pas sur l'espace de travail. J'vais essayer d'installer sql server express pour voir ca plus facilement. |
|
|
00
|
|
|
#10 |
|
Invité régulier
![]() manuel briot Inscription : octobre 2010 Messages : 56 ![]() |
merci kisscool
|
|
|
00
|
|
|
#11 |
|
Membre actif
![]() Consultant informatique Inscription : mars 2003 Messages : 130 ![]() |
malheureusement je n'aurais pas le temps de m'en oqp aujourd'hui .
|
|
|
00
|
|
|
#12 |
|
Invité régulier
![]() manuel briot Inscription : octobre 2010 Messages : 56 ![]() |
Pas de souci kisscool
je n'y arrive toujours pas de mon coté mais j'ai plein d'autre problème à régler sur ODI (notamment des problèmes de compteur...). Si j'arrive à résoudre le problème entre temps quand même je viendrai poster ma soluce. |
|
|
00
|
|
|
#13 |
|
Invité régulier
![]() manuel briot Inscription : octobre 2010 Messages : 56 ![]() |
apparemment le passage au type clob avec oracle est pas si facile selon une personne du forum du labeldecisionnel.com
il faudrait ajouter dans topology la propriété SetBigStringTryClob de la connexion jdbc et la mettre à TRUE. C'est ce que j ai fais comme un grand (cf image jointe) puis j ai appliqué ma fonction: mais rien à faire, l'interface plante à la troisiéme étape (load) à suivre... |
|
|
00
|
|
|
#14 |
|
Membre actif
![]() Consultant informatique Inscription : mars 2003 Messages : 130 ![]() |
Bien de mon coté je m'y suis penché aujourd'hui,
la solution que j'ai trouver c d'utiliser le LKM sql to sql (Jython) du coté oracle j'ai mis comme type de champs CLOB du coté sql server text pas besoin de faire quoi que ce soit dans le mapping tu met simplement TonchampText . voila ! essaye ca , hesite pas a revenir si ca ne marche pas. |
|
|
00
|
|
|
#15 |
|
Invité régulier
![]() manuel briot Inscription : octobre 2010 Messages : 56 ![]() |
j'étudie en alternance et je suis rentré à l'école
je reprend mon poste en entreprise dans 15 jours, je te tiens au jus. |
|
|
00
|
|
|
#16 | ||
|
Invité régulier
![]() manuel briot Inscription : octobre 2010 Messages : 56 ![]() |
j'ai fais comme tu m'as dit et ça ne marche pas
LKM : SQL to SQL jython IKM : SQL control append l'interface plante au niveau de la collecte des données (ODI m'annonce au départ dans le mapping qu'il y a un risque de troncature car champ cible plus petit que champ source) Voici le message d'erreur de l'onglet execution : Code :
|
||
|
|
00
|
|
|
#17 |
|
Membre actif
![]() Consultant informatique Inscription : mars 2003 Messages : 130 ![]() |
ca ca veut dire que tu as surement des caractère speciaux dans ton champs text (du style \n )
En a tu besoin ? Sinon tu les enleve et tu n'aura plus ce probleme Si oui la je ne sais pas encore ... peut etre diviser en plusieurs varchar |
|
|
00
|
|
|
#18 |
|
Membre actif
![]() Consultant informatique Inscription : mars 2003 Messages : 130 ![]() |
attend j'avais suposer que tu avais le meme probleme que j'ai rencontrer mais en fait non
il s'agit juste de la requete select * from UPAR000."C$_0description" where 1=2 qui ne s'execute pas correctement je pense que c surement du au "" je verifie |
|
|
00
|
|
|
#19 |
|
Membre actif
![]() Consultant informatique Inscription : mars 2003 Messages : 130 ![]() |
as tu m'y sql server en espace de travail ?
|
|
|
00
|
|
|
#20 | ||
|
Invité régulier
![]() manuel briot Inscription : octobre 2010 Messages : 56 ![]() |
jusque là j'avais mis mon espace de travail sur Oracle avec le LKM sql to sql(jython)
la je viens de mettre l'espace de travail sur sqlserver et je ne peux plus choisir de LKM (je lance quand même l'interface L'interface plante à l'étape d'intégration: insert news rows et j'ai le code suivant : Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com