2017-10-09 18 views
0

J'utilise la requête ci-dessous pour produire un fichier délimité par des tuyaux, mais je veux également un nom de colonne délimité par des tuyaux. Pouvez-vous s'il vous plaît m'aider avec cela.Écrire des noms de colonne délimités par des tuyaux dans teradata

select cast (sample_dt||'|'||trim(trailing '.' from trim(leading ' ' from acct_id))||'|'||name1||'|'||ent_sub_lob||'|'||app_dt||'|'||home_phn_num||'|'||city_1_name||'|'||geo_st_cd||'|'||surveyid||'|'||study_type||'|'||ent_lob||'|'||channel||'|'||market_C||'|'||merchant_id as char(300)) 
from ud.testing; 
+1

Au lieu de tous ces concats mieux passer à CSV de Teradata: https://info.teradata.com/HTMLPubs/DB_TTU_16_00/SQL_Reference/B035-1145-160K/ mah1472241143314.html # – dnoeth

+0

Ajoutez au fichier CSV Teradata une requête dans le dictionnaire DBC pour afficher les noms de colonne de façon dynamique. –

+0

Pourrait être plus facile, mais essayez cela. Mais merci pour votre rapide tour sur ce –

Répondre

0

Si je vous comprends bien, vous devez soit un nom de colonne de table ou votre colonne dérivée courant à savoir le nom cast (sample_dt||'|'||trim(trailing '.' from..... comme | séparés. Dans les deux cas, vous avez juste besoin de guillemets "" autour du nom de la colonne comme ci-dessous.

Créer Tableau:

create TABLE t1(
"x1 | y1" char(300) 
); 

Vous pouvez vérifier la définition de table créée avec la commande show.

show TABLE t1; 

CREATE SET TABLE t1 ,NO FALLBACK , 
    NO BEFORE JOURNAL, 
    NO AFTER JOURNAL, 
    CHECKSUM = DEFAULT, 
    DEFAULT MERGEBLOCKRATIO 
    (
     "x1 | y1" CHAR(300) CHARACTER SET LATIN NOT CASESPECIFIC) 
PRIMARY INDEX ("x1 | y1"); 

Dans la colonne dérivée:

SELECT 'abc'||' | '|| 'zyc' as "Test | ABC"; 

Test | ABC 
---------- 
abc | zyc 

Vous requête en cours deviendra.

SELECT CAST (sample_dt||'|'||trim(TRAILING '.' 
            FROM trim(LEADING ' ' 
              FROM acct_id))||'|'||name1||'|'||ent_sub_lob||'|'||app_dt||'|'||home_phn_num||'|'||city_1_name||'|'||geo_st_cd||'|'||surveyid||'|'||study_type||'|'||ent_lob||'|'||channel||'|'||market_C||'|'||merchant_id AS char(300)) AS "Pipe | Seperated" 
FROM ud.testing; 

espère que cela aidera :-)

+0

merveilleusement travaillé, merci beaucoup –