问题描述
我需要将数据从 Netezza DB 提取到文本文件中。在这个过程中,我需要在数据中存在的 \
之前添加额外的 \ or "
。当我尝试使用下面提到的 sql 查询时,它正在工作。
select guest_key,cast(replace_nvarchar(replace_nvarchar(guest_last_nm,'\','\\'),'"','\"') as nchar(100)) as guest_last_nm from admin.cdr_mrdw_dim_messaging_ota limit 100;
但是当我在 shell 脚本中使用相同的查询时,它说函数不存在。
nzsql -d $NZ_DATABASE -F $'\t' -A -c "select guest_key,'\"') as nchar(100)) as guest_last_nm from admin.cdr_mrdw_dim_messaging_ota limit 100;" > cdr_mrdw_dim_messaging_ota.txt
错误:函数“replace(varchar,unknown)”不存在。无法识别满足给定参数类型的函数。您可能需要添加显式类型转换```
也尝试过翻译功能。已显示相同的错误。这是什么错误以及如何解决?
谢谢。
解决方法
您不必做那么复杂的事情:有一个内置功能可以在您的 PC 上创建一个 csv 文件......例如:
create external table 'C:\\temp\\SomeTable.csv'
USING
( REMOTESOURCE 'ODBC'
ENCODING 'internal'
DELIMITER '\t'
EscapeChar '\'
NullValue '*'
-- CtrlChars TRUE
-- LFinString TRUE
-- CRinString TRUE
LogDir 'C:\\temp\\')
as
select *
from
SomeTable;
我已经注释掉了一些您可能需要也可能不需要的选项。 Encoding=internal 似乎表示 Unicode 并且对我来说很好用 :)
您可以在此处阅读更多信息:https://www.ibm.com/support/knowledgecenter/SSULQD_7.2.1/com.ibm.nz.load.doc/c_load_external_tables.html