mirror of
https://github.com/dimitri/pgloader.git
synced 2025-08-07 23:07:00 +02:00
This message has the line number where the erroneous data was found on the server, and given the pre-processing we already done at that point, it's easy to convert that number into an index into the current batch, an array. To do do, we need Postmodern to expose the CONTEXT error message and we need to parse it. The following pull request cares about the Postmodern side of things: https://github.com/marijnh/Postmodern/pull/46 The parsing is done as simply as possible, only assuming that the error message is using comma separators and having the line number in second position. The parsing as done here should still work with localized message strings. CONTEXT: COPY errors, line 3, column b: "2006-13-11" This change should significantly reduce the cost of error processing.
47 lines
1.1 KiB
Fish
47 lines
1.1 KiB
Fish
/*
|
|
* This test is ported from pgloader 2.x where it was defined as:
|
|
*
|
|
* [errors]
|
|
* table = errors
|
|
* format = text
|
|
* filename = errors/errors.data
|
|
* field_sep = |
|
|
* trailing_sep = True
|
|
* columns = a:1, b:3, c:2
|
|
*
|
|
*/
|
|
|
|
LOAD CSV
|
|
FROM inline (a, c, b, trailing)
|
|
INTO postgresql:///pgloader?errors (a, b, c)
|
|
|
|
WITH fields optionally enclosed by '"',
|
|
fields escaped by double-quote,
|
|
fields terminated by '|'
|
|
|
|
SET client_encoding to 'latin1',
|
|
work_mem to '12MB',
|
|
standard_conforming_strings to 'on',
|
|
search_path to 'err' -- test GUC settings in retry path
|
|
|
|
BEFORE LOAD DO
|
|
$$ create schema if not exists err; $$,
|
|
$$ drop table if exists err.errors; $$,
|
|
$$ create table err.errors (
|
|
a integer primary key,
|
|
b date,
|
|
c text
|
|
);
|
|
$$;
|
|
|
|
|
|
|
|
|
|
0|nov. the 11th should go|2006-11-11|
|
|
1|12th of oct. should go|2006-10-12|
|
|
2|expected error, month 13|2006-13-11|
|
|
3|\ |2006-16-4|
|
|
4|month should be may, ok|2006-5-12|
|
|
5|another month 13, stress retry path|2006-13-10|
|
|
6|some null date to play with||
|