2015-05-15 2 views
4

Я пытаюсь вывести некоторые файлы с помощью NZSQL CLI, но не смог выводить файлы с разделителями табуляции. Может ли кто-нибудь, кто работал над NZ, поделиться своими мыслями по этой команде ниже.Как вывести файл с помощью разделителя табуляции в Netezza NZSQL

Пробовал до сих пор: -

nzsql -o sample.txt -F= -A -t -c "SELECT * FROM DW_ETL.USER WHERE datasliceid % 20 = 2 LIMIT 5;" 

ответ

6

Чтобы указать вкладку, как использование разделителей $ в сочетании с опцией -F.

nzsql -o sample.txt -F $'\t' -A -t -c "SELECT * FROM DW_ETL.USER WHERE datasliceid % 20 = 2 LIMIT 5;" 

Это задокументировано в выводе nzsql -h.

nzsql -h 
This is nzsql, the IBM Netezza SQL interactive terminal. 

Usage: 
    nzsql [options] [security options] [dbname [username] [password]] 

Security Options: 
    -securityLevel  Security Level you wish to request (default: preferredUnSecured) 
    -caCertFile   ROOT CA certificate file (default: NULL) 

Options: 
    -a     Echo all input from script 
    -A     Unaligned table output mode (-P format=unaligned) 
    -c <query>   Run only single query (or slash command) and exit 
    -d <dbname>   Specify database name to connect to (default: system) 
    -D <dbname>   Specify database name to connect to (default: system) 
    -schema <schemaname> Specify schema name to connect to (default: $NZ_SCHEMA) 
    -e     Echo queries sent to backend 
    -E     Display queries that internal commands generate 
    -f <filename>  Execute queries from file, then exit 
    -F <string>   Set field separator (default: "|") (-P fieldsep=) 
         For any binary/control/non-printable character use '$' 
         (e.g., nzsql -F $'\t' // for TAB) 
... 

Если у вас есть много данных, я бы рекомендовал вместо этого использовать внешние таблицы, поскольку они работают лучше.

CREATE EXTERNAL TABLE '/tmp/sample.txt' USING (DELIMITER '\t') 
AS SELECT * FROM DW_ETL.USER WHERE datasliceid % 20 = 2 LIMIT 5;