De acordo com o trecho de código da fonte PostgreSQL,
copy.c
: /* Process \n */
if (c == '\n' && (!cstate->csv_mode || !in_quote))
{
if (cstate->eol_type == EOL_CR || cstate->eol_type == EOL_CRNL)
ereport(ERROR,
(errcode(ERRCODE_BAD_COPY_FILE_FORMAT),
!cstate->csv_mode ?
errmsg("literal newline found in data") :
errmsg("unquoted newline found in data"),
!cstate->csv_mode ?
errhint("Use \"\\n\" to represent newline.") :
errhint("Use quoted CSV field to represent newline.")));
cstate->eol_type = EOL_NL; /* in case not set yet */
/* If reach here, we have found the line terminator */
break;
}
significa que seus dados de entrada estão usando o byte
0x0A
em algum lugar dentro de suas strings, por exemplo você usa "abcNxyz"
, onde em vez de N
na verdade, há byte com valor 0x0A
. A solução é usar a string
"abc\n"
em vez disso. Você deve encontrar todas as novas linhas falsas e substituí-las por \n
usando algum script, talvez Python ou Perl.