norBIT / alkisimport

ALKIS-Import
http://www.norbit.de/68/
GNU General Public License v2.0
28 stars 17 forks source link

Fehlende Tabellen im clean Befehl #77

Closed matthiasje closed 9 months ago

matthiasje commented 9 months ago

Branch: gid7

Der "clean" Befehl (alkis-functions.sql Zeile 158) findet nur die Tabelle "delete" und auch nur diese wird geleert.

Ursache scheint das Ersetzen von "@DATATABLES@" in alkis-functions.sql.in durch den Makefile zu sein. In der durch den Makefile erstellten Datei alkis-functions.sql werden keine Tabellennamen eingefügt. Stattdessen steht dort "table_name IN ('2953602(paste -s datatables.tmp | sed -e "s/ /','/g")'":

FOR c IN SELECT table_name FROM information_schema.tables WHERE table_schema=current_schema() AND (table_name IN ('2953602(paste -s datatables.tmp | sed -e "s/ /','/g")') OR table_name IN ('alkis_beziehungen','delete'))

Gleiches gilt für die Platzhalter "@TABLES@" und "@CATALOGS@"

jef-n commented 9 months ago

In welcher Umgebung passiert das (nicht)? Hier ist das Problem unter Linux (Debian) und Windows (cygwin) nicht reproduzierbar.

matthiasje commented 9 months ago

In einer Linux (Debian) Umgebung:

Distributor ID: Debian Description: Debian GNU/Linux 11 (bullseye) Release: 11 Codename: bullseye

Noch ein Hinweis zu den Aufrufen im Makefile: sed -ne 's/^CREATE TABLE \([^ ]*\) (.*$$/\1/p' alkis-schema.sql | sort -u >tables.tmp -> Die Datei wird erstellt und ist leer

sed -ne 's/^INSERT INTO \([^(]*\) (.*$$/\1/p' alkis-schema.sql | sort -u >catalogs.tmp -> Die Datei wird erstellt und ist leer

sed -ne "s/^ <Name>\(.*\)<\/Name>/\1/p;" alkis-schema.gfs | sort -u >datatables.tmp -> Die Datei wird erstellt und enthält die Tabellennamen

jef-n commented 9 months ago

Noch ein Hinweis zu den Aufrufen im Makefile: sed -ne 's/^CREATE TABLE \([^ ]*\) (.*$$/\1/p' alkis-schema.sql | sort -u >tables.tmp -> Die Datei wird erstellt und ist leer

hm.

Debian unstable

$ make --version | head -1; sed --version | head -1;  ls -l alkis-schema.sql; rm -f alkis-functions.sql; make alkis-functions.sql; grep -noP aa_advstandardmodell alkis-functions.sql; dpkg -S $(type -p make sed); dpkg -l make sed
GNU Make 4.3
sed (GNU sed) 4.9
-rw-r--r-- 1 fischer fischer 2126561 Mar  7 11:44 alkis-schema.sql
sed -ne 's/^CREATE TABLE \([^ ]*\) (.*$/\1/p' alkis-schema.sql | sort -u >tables.tmp
sed -ne 's/^INSERT INTO \([^(]*\) (.*$/\1/p' alkis-schema.sql | sort -u >catalogs.tmp
sed -ne "s/^    <Name>\(.*\)<\/Name>/\1/p;" alkis-schema.gfs | sort -u >datatables.tmp
paste -s -d "," <tables.tmp >tables.lst
sed \
        -e "s#@TABLES@#('$(paste -s tables.tmp | sed -e "s/\t/','/g")')#" \
        -e "s#@CATALOGS@#('$(paste -s catalogs.tmp | sed -e "s/\t/','/g")')#" \
        -e "s#@DATATABLES@#('$(paste -s datatables.tmp | sed -e "s/\t/','/g")')#" \
        alkis-functions.sql.in >alkis-functions.sql
rm tables.tmp catalogs.tmp datatables.tmp
128:aa_advstandardmodell
145:aa_advstandardmodell
288:aa_advstandardmodell
314:aa_advstandardmodell
363:aa_advstandardmodell
make: /usr/bin/make
sed: /usr/bin/sed
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version      Architecture Description
+++-==============-============-============-=================================================
ii  make           4.3-4.1      amd64        utility for directing compilation
ii  sed            4.9-2        amd64        GNU stream editor for filtering/transforming text

cygwin:

$ make --version | head -1; sed --version | head -1; ls -l alkis-schema.sql; rm -f alkis-functions.sql; make alkis-functions.sql; grep -noP aa_advstandardmodell alkis-functions.sql
GNU Make 4.3
sed (GNU sed) 4.9
-rw-r--r-- 1 jef faramir+None 2126561  7. Mrz 11:15 alkis-schema.sql
sed -ne 's/^CREATE TABLE \([^ ]*\) (.*$/\1/p' alkis-schema.sql | sort -u >tables.tmp
sed -ne 's/^INSERT INTO \([^(]*\) (.*$/\1/p' alkis-schema.sql | sort -u >catalogs.tmp
sed -ne "s/^    <Name>\(.*\)<\/Name>/\1/p;" alkis-schema.gfs | sort -u >datatables.tmp
paste -s -d "," <tables.tmp >tables.lst
sed \
        -e "s#@TABLES@#('$(paste -s tables.tmp | sed -e "s/\t/','/g")')#" \
        -e "s#@CATALOGS@#('$(paste -s catalogs.tmp | sed -e "s/\t/','/g")')#" \
        -e "s#@DATATABLES@#('$(paste -s datatables.tmp | sed -e "s/\t/','/g")')#" \
        alkis-functions.sql.in >alkis-functions.sql
rm tables.tmp catalogs.tmp datatables.tmp
128:aa_advstandardmodell
145:aa_advstandardmodell
288:aa_advstandardmodell
314:aa_advstandardmodell
363:aa_advstandardmodell
jef-n commented 9 months ago

Sieht verdächtig danach aus als seien die Befehle aus dem Makefile direkt in der Shell ausgeführt worden. Dazu müßte natürlich das $$ gegen $ getauscht werden.

matthiasje commented 9 months ago

Vielen Dank, das funktioniert.

jef-n commented 9 months ago

Vielen Dank, das funktioniert.

oder make alkis-functions.sql