Как вывести файл с помощью разделителя табуляции в Netezza NZSQL

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

Пока пробовал :-

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

person Teja    schedule 15.05.2015    source источник


Ответы (1)


Чтобы указать табуляцию в качестве разделителя, используйте $ в сочетании с параметром -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;
person ScottMcG    schedule 15.05.2015