Ergebnis 1 bis 3 von 3

Thema: Batch Datei für Datenimport

  1. #1
    tme2525 ist offline Benutzer
    Registriert seit
    27.06.2010
    Beiträge
    34

    Standard Batch Datei für Datenimport

    Hallo zusammen

    Ich wollte eine Batch-Datei erstellen, die automatisch das PLZ-File allCountries von der Seite "http://download.geonames.org/export/zip" downloaded, entzippt, eine Tabelle erstellt und die Daten in diese Tabelle einliest.

    Das downloaden, entzippen und Tabelle erstellen funktioniert soweit.

    Nur den Import bring ich nicht automatisch zu stande.
    Wenn ich %PGBIN%\psql Test ausführe geht er in meine DB Test.
    In der Commando Box erscheint dann: Test=>
    Doch die nächste Anweisungszeile: copy test.plz (...) from 'D:/geonames/temp/allCountries.txt' null as '';
    wird nicht automatisch ausgeführt.
    Manuell funktioniert das ohne Probleme.

    Wie kann ich ihm sagen, dass er den nächsten Befehl/Anweisung automatisch ausführen soll?

    Quellcode:

    -- Pfad des Daten Ordners
    set STATEDIR="D:\geonames\download.geonames.org\export "
    set TMPDIR=D:\geonames\temp\
    set TMPDIR2=D:\geonames\

    -- Weitere Pfade
    set UNZIPTOOL="C:\Program Files\7-Zip\7z.exe"
    set WGETTOOL="C:\GnuWin32\bin\wget.exe"
    set PGBIN="C:\Program Files\PostgreSQL\8.4\bin"
    set PGBIN2="C:/Program Files/PostgreSQL/8.4/bin"
    set PGPORT=5432
    set PGHOST=localhost
    set PGUSER=postgres
    set PGPASSWORD=*********
    set PGDATABASE=Test

    -- Download des Files allCountries.zip
    %WGETTOOL% http://download.geonames.org/export/...lCountries.zip --no-parent --relative --recursive --level=2 --accept=zip,txt --mirror --reject=html
    del %TMPDIR%\*.* /Q

    -- Entzippen nach temp
    cd %STATEDIR%
    for /r %%z in (*.zip) do %UNZIPTOOL% e %%z -o%TMPDIR%
    Pause

    -- Neue Tabelle geoPLZ erstellen
    cd %TMPDIR2%
    %PGBIN%\psql Test < create_table.sql

    Pause

    cd %TMPDIR2%
    %PGBIN%\psql Test
    copy test.plz (country_sub,PLZ,Ort,Region,Nummer,Ort2,Nummer2,Or t3,Nummer3,latitude,longitude,Wert) from 'D:/geonames/temp/allCountries.txt' null as '';

    Pause

  2. #2
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Nähe Dresden
    Beiträge
    5.337

    Standard

    Zitat Zitat von tme2525 Beitrag anzeigen
    Hallo zusammen

    Ich wollte eine Batch-Datei erstellen, die automatisch das PLZ-File allCountries von der Seite "http://download.geonames.org/export/zip" downloaded, entzippt, eine Tabelle erstellt und die Daten in diese Tabelle einliest.

    Das downloaden, entzippen und Tabelle erstellen funktioniert soweit.

    Nur den Import bring ich nicht automatisch zu stande.
    Wenn ich %PGBIN%\psql Test ausführe geht er in meine DB Test.
    In der Commando Box erscheint dann: Test=>
    Doch die nächste Anweisungszeile: copy test.plz (...) from 'D:/geonames/temp/allCountries.txt' null as '';
    wird nicht automatisch ausgeführt.
    Manuell funktioniert das ohne Probleme.

    Wie kann ich ihm sagen, dass er den nächsten Befehl/Anweisung automatisch ausführen soll?

    Quellcode:

    -- Pfad des Daten Ordners
    set STATEDIR="D:\geonames\download.geonames.org\export "
    set TMPDIR=D:\geonames\temp\
    set TMPDIR2=D:\geonames\

    -- Weitere Pfade
    set UNZIPTOOL="C:\Program Files\7-Zip\7z.exe"
    set WGETTOOL="C:\GnuWin32\bin\wget.exe"
    set PGBIN="C:\Program Files\PostgreSQL\8.4\bin"
    set PGBIN2="C:/Program Files/PostgreSQL/8.4/bin"
    set PGPORT=5432
    set PGHOST=localhost
    set PGUSER=postgres
    set PGPASSWORD=*********
    set PGDATABASE=Test

    -- Download des Files allCountries.zip
    %WGETTOOL% http://download.geonames.org/export/...lCountries.zip --no-parent --relative --recursive --level=2 --accept=zip,txt --mirror --reject=html
    del %TMPDIR%\*.* /Q

    -- Entzippen nach temp
    cd %STATEDIR%
    for /r %%z in (*.zip) do %UNZIPTOOL% e %%z -o%TMPDIR%
    Pause

    -- Neue Tabelle geoPLZ erstellen
    cd %TMPDIR2%
    %PGBIN%\psql Test < create_table.sql

    Pause

    cd %TMPDIR2%
    %PGBIN%\psql Test
    copy test.plz (country_sub,PLZ,Ort,Region,Nummer,Ort2,Nummer2,Or t3,Nummer3,latitude,longitude,Wert) from 'D:/geonames/temp/allCountries.txt' null as '';

    Pause
    Rufe psql mit der Option -c auf, kurze Demo:

    Code:
    kretschmer@tux:~$ echo "1,2,3" > data.dat
    kretschmer@tux:~$ psql test -c "select * from foo"
     a | b | c
    ---+---+---
    (0 rows)
    
    kretschmer@tux:~$ psql -x test -c "copy foo from '/home/kretschmer/data.dat' csv"
    COPY 1
    kretschmer@tux:~$ psql test -c "select * from foo"
     a | b | c
    ---+---+---
     1 | 2 | 3
    (1 row)
    Das als Batchdatei umzuschreiben überlasse ich Dir zur Übung.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    tme2525 ist offline Benutzer
    Registriert seit
    27.06.2010
    Beiträge
    34

    Standard

    Merci für die Antwort

    Werde es ausprobieren.......

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum