我想将Netezza表中的一些数据导出到csv文件中。
我希望文件有一个标题,逗号分隔,并且在所有非数字字段周围都有双引号。
我正在使用这种语法:
CREATE EXTERNAL TABLE 'F:\My Documents\noname.txt'
USING
(
IncludeHeader
DELIMITER ','
QUOTEDVALUE 'DOUBLE'
REQUIREQUOTES 'TRUE'
ENCODING 'internal'
REMOTESOURCE 'ODBC'
ESCAPECHAR '\'
NULLVALUE ''
)
AS
SELECT *
FROM MYTABLE
但输出显示没有双引号的迹象。示例输出行如下所示:
04_0001_17.jpg,fr50139,Y,32
任何想法如何获得这样的东西?
"04_0001_17.jpg","fr50139","Y",32
答案 0 :(得分:2)
截至7.2.X Netezza在卸载期间不支持QUOTEDVALUE。您需要将双引号括在单个列或所有列中,并将其作为select语句的一部分。
CREATE EXTERNAL TABLE 'C:\noname.txt'
USING
(
IncludeHeader
ENCODING 'internal'
REMOTESOURCE 'ODBC'
ESCAPECHAR '\'
DELIMITER ','
)
AS
SELECT *
FROM (
SELECT quote_ident(prod_id) AS prod_id
,quote_ident(CUST_ID) AS CUST_ID
FROM TEST..IMP_SALES_20160223 limit 10
) a;
包含额外选择以拾取列名称。
输出:
PROD_ID,CUST_ID
"13","1660"
"13","1762"
"13","1948"
"13","2380"
"13","5590"
"13","8540"
"13","9076"
"13","35834"
"13","524"
"13","188"
答案 1 :(得分:0)
在Netezza的一个给定列周围获取引号的一种方法(尽管很乏味)是使用两个垂直管道符(“||”)来添加和附加引号:
select '"' || col1 || '"', '"' || col2 || '"', col3 from table
将其保存到临时表,然后导出临时表。