Largeur maximale de la colonne dans Oracle spool pour le fichier
J'ai un script comme ceci:
SET ECHO OFF
SET FEEDBACK OFF
SET VERIFY OFF
SET HEADING OFF
SET TERMOUT OFF
SET TRIMOUT ON
SET TRIMSPOOL ON
SET WRAP OFF
SET LINESIZE 32000
SET LONG 32000
SET LONGCHUNKSIZE 32000
SET SERVEROUT ON
SPOOL C:\Export.txt
SELECT XMLELEMENT("element1",xmlelement("element2",xmlattributes(.....)))
FROM --TABLENAME--
WHERE --CONDITIONS--
La sortie doit être un fichier contenant une liste de lignes avec le xml complexes à l'intérieur, mais lorsque la longueur du XML généré est de plus de 2000, SQLPlus les garnitures à 2000 et aller à la ligne suivante.
Il y a un moyen de forcer SQLPlus pour écrire toutes les données dans la même ligne?
source d'informationauteur gabriele.lb
Vous devez vous connecter pour publier un commentaire.
Il suffit d'ajouter la ligne suivante après le JEU de commandes:
où ColumnName est un alias de colonne XML dans votre instruction SELECT (vous aurez besoin d'ajouter un alias).
Ceci définit la largeur de cette colonne, qui est de 2000 caractères par défaut. Remarque: vous pouvez définir le COL FORMAT aussi haut que 60000 caractères, le plus vous aurez réellement jamais obtenir sur une seule ligne avec sqlplus est 32767comme c'est la limite supérieure pour LINESIZE.
Vous êtes sur Windows? J'ai eu ce même problème et ni l'un ni l'autre des deux réponses m'ont aidé (directement, j'ai eu à faire une chose de plus). Suivant les conseils de cet article sur la configuration de SQL*Plus pour Windows l'auteur note:
J'ai configuré le mien comme
SET LONG 32000
(ma plus longue ligne était un peu plus de 2000 caractères) et qui a résolu le problème pour moi.Comment sur l'utilisation de getClobVal() pour convertir la sortie d'un clob?