To specify tab as the delimiter use $ in conjunction with the -F option.
nzsql -o sample.txt -F $'\t' -A -t -c "SELECT * FROM DW_ETL.USER WHERE datasliceid % 20 = 2 LIMIT 5;"
This is documented in the nzsql -h output.
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)
...
If you have a lot of data, I'd recommend using external tables instead as they perform better.
CREATE EXTERNAL TABLE '/tmp/sample.txt' USING (DELIMITER '\t')
AS SELECT * FROM DW_ETL.USER WHERE datasliceid % 20 = 2 LIMIT 5;