Я использую Postgres 8.2 и связанную библиотеку libpq для ANSI C. Я просмотрел документацию и не нашел чего-то, что могло бы дать мне такую конкретную информацию.
В разделе «КОПИЯ» документации «Выходы» описываются так:
При успешном завершении команда COPY возвращает тег команды вида
КОПИЯ СЧЕТ
Количество - это количество скопированных строк.
Предполагая, что conn ссылается на действительный PGconn *,
Я думал, что смогу использовать что-то вроде этого, чтобы вернуть количество скопированных строк:
sprintf(queryString, "COPY table FROM '%s' WITH DELIMITER '|'",
tempFileName);
fprintf(stderr, "COPY all records: %s\n", queryString);
res = PQexec(conn, queryString);
bResultErr = (PQresultStatus(res) != PGRES_COMMAND_OK);
if (bResultErr) {
PQclear(res);
fprintf(stderr, "Aborting:DELETE failed: %s\n",
PQerrorMessage(conn));
PQfinish (conn);
exit (1);
} else {
// Display how many records were COPY'd
fprintf(stderr, "COPY completed: %d rows imported\n",
PQntuples(res));
PQclear(res);
}
Как бы то ни было, выход всегда равен «COPY complete: 0 импортированных строк», несмотря на тот факт, что строки импортированы .
Буду признателен за любые советы