XML mit PGSQL

ukulele

Datenbank-Guru
Beiträge
5.163
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?
 
Werbung:
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.
 
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.
 
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.
 
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, ...
 
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?
 
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)
 
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?
 
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.
 
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?
 
Werbung:
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.
 
Zurück
Oben