mirror of
https://github.com/dimitri/pgloader.git
synced 2025-08-06 22:37:02 +02:00
It used to be that you would give the target table name as an option to the PostgreSQL connection string, which is untasteful: load ... into pgsql://user@host/dbname?tablename=foo.bar ... Or even, for backwards compatibility: load ... into pgsql://user@host/dbname?foo.bar ... The new syntax makes provision for a separate clause for the target table name, possibly schema-qualified: load ... into pgsql://user@host/dbname target table foo.bar ... Which is much better, in particular when used together with the target columns clause. Implementing this seemingly quite small feature had impact on many parsing related features of pgloader, such as the regression testing facility. So much so that some extra refactoring got into its way here, around the lisp-code-for-loading-from-<source> functions and their usage in `load-data'. While at it, this patch simplifies a lot the `load-data' function by making a good use of &allow-other-keys and :allow-other-keys t. Finally, this patch splits main.lisp into main.lisp and api.lisp, with the latter intended to contain functions for Common Lisp programs wanting to use pgloader as a library. The API itself is still the same as before this patch, tho. Just in another file for clarity.
54 lines
1.2 KiB
Fish
54 lines
1.2 KiB
Fish
/*
|
|
* This test is ported from pgloader 2.x where it was defined as:
|
|
*
|
|
* [fixed]
|
|
* table = fixed
|
|
* format = fixed
|
|
* filename = fixed/fixed.data
|
|
* columns = *
|
|
* fixed_specs = a:0:10, b:10:8, c:18:8, d:26:17
|
|
* reformat = c:pgtime:time
|
|
*
|
|
*/
|
|
|
|
LOAD FIXED
|
|
FROM inline
|
|
(
|
|
a from 0 for 10,
|
|
b from 10 for 8,
|
|
c from 18 for 8,
|
|
d from 26 for 17 [null if blanks, trim right whitespace]
|
|
)
|
|
INTO postgresql:///pgloader
|
|
TARGET TABLE fixed
|
|
(
|
|
a, b,
|
|
c time using (time-with-no-separator c),
|
|
d
|
|
)
|
|
|
|
WITH truncate, drop indexes
|
|
|
|
SET client_encoding to 'latin1',
|
|
work_mem to '14MB',
|
|
standard_conforming_strings to 'on'
|
|
|
|
BEFORE LOAD DO
|
|
$$ drop table if exists fixed; $$,
|
|
$$ create table fixed (
|
|
a integer primary key,
|
|
b date,
|
|
c time,
|
|
d text
|
|
);
|
|
$$;
|
|
|
|
|
|
|
|
|
|
01234567892008052011431250firstline
|
|
01234562008052115182300left blank-padded
|
|
12345678902008052208231560another line
|
|
2345609872014092914371500
|
|
2345678902014092914371520
|