Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

XML mit PGSQL

Dieses Thema im Forum "PostgreSQL" wurde erstellt von ukulele, 26 Januar 2016.

  1. ukulele

    ukulele Datenbank-Guru

    Ich expirimentiere ja grade viel mit XML und würde aus Performance Gründen eventuell einen eigenen PGSQL Server als VM aufsetzen.

    1) Muss ich bei PG auf Windows 2012 R2 auf ESXi irgendwas beachten damit das Ding ordentlich rennt?
    2) Ich mag MS SQL Management Studio, hat jemand eine GUI Client Empfehlung unter Windows die dem nahe kommt?
    3) Ich lese XML Dateien vom Dateisystem ein. Bisher nutze ich xp_cmdshell um mir eine Liste mit Dateien und Ordnern zu holen und dann mit BULK Insert die Dateien in die DB zu schaufeln. Wie gehe ich das unter PG am sinnvollsten an?
     
  2. akretschmer

    akretschmer Datenbank-Guru

    PG sollte out-of-the-box laufen. Aber evtl. wäre ein Linux als OS besser. Als GUI wird gern PGAdmin verwendet, es gibt weitere:

    Code:
    13:20 < akretschmer> ??gui
    13:20 < pg_docbot> http://wiki.postgresql.org/wiki/GUI_Database_Design_Tools :: http://www.nucleonsoftware.com/
    13:20 < pg_docbot> http://www.pgadmin.org/ :: http://pgdesigner.sourceforge.net/en/index.html
    13:20 < pg_docbot> http://wiki.postgresql.org/wiki/Community_Guide_to_PostgreSQL_GUI_Tools :: http://sidu.sf.net
    13:20 < pg_docbot> http://www.sqlmaestro.com/products/postgresql/maestro/ :: http://www.modelsphere.org/
    13:20 < pg_docbot> http://www.navicat.com/ :: http://www.databaseanswers.com/modelling_tools.htm
    13:20 < pg_docbot> 2 more results
    
    Danke, pg_docbot ;-)

    Zum einlesen vieler Records unter PG eignet sich der COPY-Befehl.
     
  3. ukulele

    ukulele Datenbank-Guru

    Ich hatte PGAdmin und SQLWorkbench mal laufen, ist allerdings lange her. Ich mache zwar alles per SQL Statement, aber zur Übersicht ist so eine GUI schon schön :)

    Ich werde heute Abend mal eine VM aufsetzen und am Wochenende einen Import versuchen.
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Ich wünsch Dir Erfolg!
     
  5. ukulele

    ukulele Datenbank-Guru

    Hat PG sowas wie in-Memory Features um Tabellen im RAM zu halten? Ich wollte damit immer schonmal expirimentieren, aber ich möchte keine ausschließlich im RAM Lösung wie sie auf diversen Seiten diskutiert wird.
     
  6. akretschmer

    akretschmer Datenbank-Guru

    Du kannst Tabellen als unlogged anlegen. Dann landen diese NICHT im Transaktionslog. Das ist dann deutlich schneller mit 2 Nachteilen:

    * diese werden nicht repliziert
    * nach einen unsauberen Ende von PG sind diese Tabellen auf einen sehr definierten Stand: leer.

    Ansonsten kannst Du komplexe Statements als materialized View ablegen. Das ist aber ein komplexes Thema, mit invalidation und so, ...
     
  7. ukulele

    ukulele Datenbank-Guru

    Wäre ja für den Import interessant, muss ich dann nur weiter schieben.
     
  8. akretschmer

    akretschmer Datenbank-Guru

    Jepp, für sowas ist das optimal. Oder für unkritische Session-Daten.
     
  9. ukulele

    ukulele Datenbank-Guru

    Also PG habe ich mir am Wochenende installiert, bin aber gar nicht weit gekommen. Ich habe einen Pfad mit Unterordnern und HTML Dateien die ich in die Tabelle einlesen möchte. Nun kenne ich die Dateinamen nicht und die Ordnernamen sind auch stark variabel. So wie ich das sehe ist das mit PG nur aus einem bestimmten Pfad möglich und das nur unter Angabe des Dateinamens.

    Unter MSSQL habe ich Zugriff auf cmd.exe und kann mir das Ergebnis eines dir /s holen und per Cursor die Dateien einlesen. Wie würdest du das unter PG aufziehen?
     
  10. akretschmer

    akretschmer Datenbank-Guru

    Depends. Der Serverprozess hat i.d.R. da keinen Zugriff, das müßtest Du über den Client machen. Also, unter *nix, mit psql. Wenn Du als aufrufender User Rechte hast, dann kannst das da auch direkt machen. Ansonsten ist das halt ein Problem der Applikation. Via SQL selbst greifst nicht direkt auf Filesystem oder so zu. (von Ausnahmen abgesehen)
     
  11. ukulele

    ukulele Datenbank-Guru

    Gut da ich in diesem Fall keinen Client habe müsste ich mir vieleicht eine Textdatei aus der CMD raus erzeugen und diese dann als Inhaltsverzeichnis laden. Muss ich die HTML Dateien dann mit pg_read_file importieren?
     
  12. akretschmer

    akretschmer Datenbank-Guru

    Ehr nicht. pg_read_file() ist aus Sicht des Servers, und auch mit dessen Rechten. Du arbeitest aber im Userland. Stelle Dir immer vor, daß der Server auch mal auf der anderen Seite der Macht, ähm, der Erde stehe kann, und Du da gar keinen Zugriff hast und stattdessen halt an Deinem Client sitzt.
     
  13. ukulele

    ukulele Datenbank-Guru

    Mein Client ist in diesem Fall PGAdmin III und führt ein Script aus. Angenommen ich kenne die Namen und Pfade der Dateien, wie bekomme ich diese in meine Tabelle geladen?
     
  14. akretschmer

    akretschmer Datenbank-Guru

  15. ukulele

    ukulele Datenbank-Guru

    Also wenn ich COPY richtig verstehe möchte es Zeilen aus einer Datei lesen die z.B. im ASCII Format vorliegt und diese in eine Tabelle schreiben. Ich habe allerdings eine XHTML Datei auf dem Dateisystem und möchte den Inhalt als String in die XML Spalte einer Tabelle schreiben. Irgendwie hat es da bei mir noch nicht geklickt wie das am besten zu machen ist.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden