2017-09-11 14 views
0

私はシェル(Ksh)から実行しているBTEQスクリプトを持っています。 目的はにエクスポートし、.csvファイルへのTeradataテーブルの内容をにエクスポートします。 問題は、データのエクスポート中に列間に空白が多すぎます。私は試しました
1.個々の列のトリミング
2.キャストを使用して、Charの各列のデータ型を
に変換しますが、これは役に立ちません。
BTEQコードは、私は、ファイルのヘッダーを必要とするので、(私はREPORTファイルを使用している次のようになります。
Teradata BTEQファイルからデータをエクスポート中に空白が入ってきます

.EXPORT REPORT FILE = exportfilepath.csv; 
.SET SEPARATOR ","; 
.SET TITLEDASHES OFF; 
.set RECORDMODE OFF; 
.set width 65531; 
.SET ERRORLEVEL 3807 SEVERITY 0 

select 
    trim('"' || trim(cast(col1 as char(256))) || '"') AS col1, 
    trim('"' || trim(cast(col2 as char(256))) || '"') AS col2, 
    trim(cast(col3 as INTEGER)) AS col3, 
    trim(cast(col4 as char(6))) AS col4, 
    trim(col5) AS col5, 
    trim(cast(col6 as decimal(18,2)) AS col6, 
    trim(date) AS date 
from table A; 

のCol1とcol2が、私はそれらの空白を削除することができます方法についてのthem.Anyヘルプの間に空白をたくさん持っています

col1とcol2の間にカンマを持つ名前があるため、ここで「」を追加しました。エクスポートされているので.csvファイルが適切でないと書かれている必要があります。

+0

質問にサンプルデータを含めてください。 – zarruq

+0

テストしなかった、おそらくこれを試してください:あなたの通常の出力にはない '.SET SEPARATOR"# "'を選んでください。セパレータの周囲のすべてのスペースを削除します。すべての二重引用符を2つに置き換えます(csv形式でエスケープします)。すべてのフィールドの前後に二重引用符を入れてください(セパレータの行頭、行末、および両脇)。そしてあなたが望むものとsepを置き換えてください。 'sed 's /"/""/g; s /^.*$/ "&"/; s/*#* /"、 "/ g"のようなものです。 –

答えて

1

REPORTフォーマットは印刷用であり、すなわち固定幅+セパレータである。

WITH CTE AS 
(SELECT col1,col2,col3,col4.col5,col6,current_date as dt 
    FROM table A 
) 
SELECT str (title '') 
FROM TABLE 
    (CSV(NEW VARIANT_TYPE(cte.col1,cte.col2,cte.col3 
         ,cte.col4.cte.col5,cte.col6 
         ,cte.dt), ',', '"' 
    ) RETURNS (str varchar(32000) CHARACTER SET UNICODE) 
) AS t1; 

するか、TPT & DELIMITED形式に切り替える:

seperatorsを追加し、次のように活用CSVを引用せずにコンマdelimtedデータを生成します。

関連する問題