Je ne suis pas un professionnel, désolé. Mais peut-être pouvez-vous m'aider quand même ...
J'ai un tableau avec 27 colonnes et dans les lignes de données avec des sauts de ligne. Lorsque j'essaie d'exporter des lignes sélectionnées avec le spoule sql-plus, j'ai plusieurs problèmes. J'ai essayé les conseils donnés ici: Comment faire apparaître la sortie sqlplus sur une seule ligne? , mais ils ne m'aident pas. J'expliquerai ci-dessous.
Tout d'abord la configuration de la requête SQL plus:
set term off
set echo off
set underline off
set colsep ';'
set linesize 32767
set pages 10000
set trimspool on
set trimout on
set feedback off
set heading on
set newpage 0
set headsep off
;set wrap off
set termout off
set long 20000
spool D:\tmp_Datenaustausch\Export-141204.csv
SELECT MEDIENNR, ISBN, ISBN2, ISBNSUCH, KATKARTE1, BUCHKARTE1, SIGNATUR1, KATKARTE2,
BUCHKARTE2, SIGNATUR2, KATKARTE3, BUCHKARTE3, SIGNATUR3, MAB2, FEHLERCODE, FARBE,
ANZSYKKARTEN, KKSTATUS, BKSTATUS, MABSTATUS, SESTATUS, FARBSTATUS, ASSTATUS,
REZENSION, REZENSENT, STICHWORTE, UPDDATE FROM Bekartungsdaten WHERE upddate like
TO_DATE('2014-12-01', 'yyyy-mm-dd');
spool off;
exit;
/
Mes problèmes:
Je serais très heureux, si certains pouvaient m'aider!
1) Si vous voulez que les en-têtes soient sur une seule ligne, vous devez utiliser un UNION avec un choix parmi dual. Exemple:
select '"'||'col1'||'","'||'"col2"'||'","'||'"col3"'
from dual
union
select '"'||col1||'","'||col2||'","'||col3||'"'
from table;
2) Celui-ci est délicat. Il est utile de connaître le caractère ascii de vos sauts de ligne. Selon la façon dont ils ont été écrits, ils seront généralement (mais pas toujours) chr (10) ou une combinaison de chr (10) chr (13). Vous pouvez utiliser la fonction REPLACE dans votre requête pour remplacer celles par '', ce qui devrait les éliminer.
3) Si vous voulez des guillemets, voyez mon exemple # 1 ci-dessus.
HTH.
Si vous voulez avoir le titre de l'enregistrement, vous feriez mieux d'essayer ceci:
set linesize 220;
set pagesize 0;
SET NEWPAGE 0;
SET SPACE 0;
SET ECHO OFF;
SET FEEDBACK OFF;
SET VERIFY OFF;
SET HEADING OFF;
SET MARKUP HTML OFF SPOOL OFF;
spool D:\tmp_Datenaustausch\Export-141204.csv
select 'header1' ||','||
'header2' ||','||
'header3'
result from dual
union all
select a ||','||
b ||','||
c
from tableName
where coditional ;
spool off;
exit;
le résultat sera:
header1 | header2 | header3 | ------------------------------- a | b | c