【问题标题】:Teradata BTEQ Whitespace at end of every column每列末尾的 Teradata BTEQ 空白
【发布时间】:2021-06-06 04:00:47
【问题描述】:

我正在从 BTEQ 导出到文本文件,并且我正在将空格填充到输出文本文件中每个列的最大长度。例如,我只希望 customer_name 和 post_code 列看起来像;

Mr Always Teste,AB10 1AB,

但它在我的文件中是这样的;

Mr Always Teste                                                                                                                                                                                                  ,AB10 1AB                       ,

我只想要我需要的数据,而不是最后的所有空格,因为我需要在导出后干净地导入数据。

我的导出脚本包含:

.SET TITLEDASHES OFF
.SET SEPARATOR ','
.SET FORMAT OFF (ON MAKES IT ALL WEIRD)
.SET NULL ''
.SET WIDTH 1000

请原谅我无法粘贴任何数据,因为它在另一台电脑上,而且无论如何都是保密的。

示例列定义是(它们都是这样的,长度不同):

姓名:customer_name 类型:CV 格式:X(208) 最大长度:208

就像我说的,这个和所有其他列在输出文件中用空格填充到它们的长度。我能做些什么吗?

【问题讨论】:

    标签: export teradata whitespace bteq


    【解决方案1】:

    BTEQ 中的 REPORT 格式是固定宽度,设置 SEPERATOR 不会删除空格。但是您可能只使用 CSV 函数返回单列来返回分隔字符串:

    with cte as
     (
       select * from tab
     )
    select * 
    from table(CSV(new variant_type(cte.col1 -- list all columns here
                                   ,cte.col2
                                   ,cte.col3)
                  ,','  -- seperator
                  ,'"') -- string delimiter
    returns (s varchar(10000)) as t;
    

    这比 CONCAT & COALESCE all columns 更容易且性能更好。

    【讨论】:

    • CSV 函数是否在不需要合并的情况下处理空值?
    • @Andrew:是的 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多