mirror of
https://github.com/dimitri/pgloader.git
synced 2026-01-25 09:01:07 +01:00
The COPY TEXT format accepts non printable characters with an escaped sequence wherin pgloader can pass in the octal number for the character in its encoding. When doing that with small numbers like \6 and the non-printable character is then followed by other numbers, then it becomes e.g. \646 which might not be part of the target encoding... To fix, always left pad the character octal number with zeroes, so that we now send in \00646 which COPY knows how to read: the char at \006 then 4 then 6. Also copy the test case over to pgloader and run it in the test suite.
96 lines
2.5 KiB
Makefile
96 lines
2.5 KiB
Makefile
TMPDIR ?= /tmp
|
|
TESTS = $(wildcard *.load)
|
|
OUT = $(TESTS:.load=.out)
|
|
|
|
REMOTE = archive.load bossa-all.load bossa.load census-places.load dbf-zip.load
|
|
LOCAL = $(filter-out $(REMOTE:.load=.out),$(OUT))
|
|
REGRESS= allcols.load \
|
|
csv-before-after.load \
|
|
csv-districts.load \
|
|
csv-parse-date.load \
|
|
csv-error.load \
|
|
csv-escape-mode.load \
|
|
csv-filename-pattern.load \
|
|
csv-header.load \
|
|
csv-json.load \
|
|
csv-keep-extra-blanks.load \
|
|
csv-non-printable.load \
|
|
csv-nulls.load \
|
|
csv-trim-extra-blanks.load \
|
|
csv.load \
|
|
copy.load \
|
|
copy-hex.load \
|
|
dbf.load \
|
|
errors.load \
|
|
fixed.load \
|
|
fields-with-periods.load \
|
|
ixf.load \
|
|
overflow.load \
|
|
partial.load \
|
|
serial.load \
|
|
udc.load \
|
|
xzero.load
|
|
|
|
PGLOADER ?= ../build/bin/pgloader
|
|
|
|
regress: clean-out $(addprefix regress/out/, $(REGRESS:.load=.out)) ;
|
|
|
|
clean-out:
|
|
rm -f regress/out/*
|
|
|
|
local: prepare $(LOCAL)
|
|
|
|
remote: prepare $(REMOTE:.load=.out)
|
|
|
|
all: prepare $(OUT)
|
|
|
|
prepare: bossa.sql sakila
|
|
-dropdb -U postgres pgloader
|
|
-dropdb -U postgres stocks
|
|
-dropdb -U postgres ip4r
|
|
-createdb -U postgres -O `whoami` pgloader
|
|
-createdb -U postgres -O `whoami` stocks
|
|
-createdb -U postgres -O `whoami` ip4r
|
|
-psql -U postgres -d pgloader -c 'create extension ip4r'
|
|
-psql -U postgres -d ip4r -c 'create extension ip4r'
|
|
-psql -d stocks -f bossa.sql
|
|
|
|
errors.out: errors.load
|
|
-$(PGLOADER) $<
|
|
@echo
|
|
|
|
nofile.out: nofile.load
|
|
-$(PGLOADER) $<
|
|
@echo
|
|
|
|
csv-hstore.out: csv-hstore.load
|
|
@echo skipping $@
|
|
|
|
# sakila needs preparing a MySQL database too
|
|
$(TMPDIR)/sakila-db/sakila-schema.sql: data/sakila-db.zip
|
|
rm -rf $(TMPDIR)/sakila-db
|
|
unzip $< -d $(TMPDIR)
|
|
|
|
sakila: $(TMPDIR)/sakila-db/sakila-schema.sql
|
|
-dropdb -U postgres sakila
|
|
-createdb -U postgres -O `whoami` sakila
|
|
-echo "DROP DATABASE sakila" | mysql -u root
|
|
echo "SOURCE $(TMPDIR)/sakila-db/sakila-schema.sql" | mysql -u root
|
|
echo "SOURCE $(TMPDIR)/sakila-db/sakila-data.sql" | mysql -u root
|
|
|
|
sakila.out: sakila sakila.load
|
|
-$(PGLOADER) sakila.load
|
|
@echo
|
|
|
|
csv-districts-stdin.out: csv-districts-stdin.load
|
|
cat data/2013_Gaz_113CDs_national.txt | $(PGLOADER) $^
|
|
|
|
# General case where we do NOT expect any error
|
|
%.out: %.load
|
|
$(PGLOADER) $<
|
|
@echo
|
|
|
|
# Regression tests
|
|
regress/out/%.out: %.load
|
|
./regress.sh $(PGLOADER) $<
|