我有一个BTEQ脚本,我从shell(Ksh)运行。 目标是将导出 Teradata表的内容转换为.csv文件。 问题在导出数据时,列之间引入的空格太多。我试过了
1.修剪单个列
2.使用Cast转换Char中的每个列数据类型
但这似乎都没有帮助
BTEQ代码看起来像这样(我已经使用了REPORT文件,因为我需要文件头。
.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之间有很多空格。对于如何删除这些空白区域有任何帮助。在这种情况下我还能做些什么?我不能减少字符大小,因为这些是可变大小的名称。
我添加了'"'这里因为col1和col2是名称之间的逗号。由于导出的.csv文件需要表达格式不正确。
答案 0 :(得分:1)
REPORT
格式用于打印,即固定宽度加分隔符。
要生成逗号分隔的数据而不添加分隔符,并引用更好用CSV
,如下所示:
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
格式。