0

我正在从 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

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

4

1 回答 1

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 更容易且性能更好。

于 2021-03-08T13:49:50.663 回答