Zugrif auf PosgreSQL per VB6

Hallo Wissende,
es ist mir peinlich, aber ich muss mal eine ganz allgemeine Frage stellen, das ich im Moment keinen Ansatz habe.

Aufgabe:

  1. Import einer großen Anzahl CSV-Dateien in eine PostgresDB
  2. Ausgabe gefilterter Daten in eine CSV

Problem ist die Erstellung einer entsprechenden Oberfäche (FE) für den Nutzer.
Mit Access als FE hätte ich die Geschichte in 10 Minuten erledigt (Postges-Tabelle per ODBC verknüpfen, den Rest macht Access/VBA)

Ich muss/möchte das Ganze aber über VB6 realisieren. Ja und da fehlt mir im Moment jeglicher Ansatz :confused: .
Letztendlich kenne ich nur DAO und weiß nicht wie ich es in diesem Zusammenhang anwenden soll?

Kann mich mal bitte jemand in die richtige Richtuung schupsen?

Was hast Du denn bisher unternommen, um eine Lösung zu finden?


Andreas

Hallo,
dank für die schnelle Antwort.

Ich brauche keine Lösung sondern eine Richtung, wie man so was händelt.

Bei Google-Suchen “postgresql csv import ado” fand ich mich nur immer wieder bei kostenpflichtiger Software wieder.

Ich kenne mich in den Interna von PostgeSQL nicht aus. Ich habe zwar ein paar Triggerfunktionen programmiert, weiß aber nicht wie und ob man diese “internen Funktionen” von “außen” nutzen kann.
So habe ich z.B. von COPY gelesen, weiß aber absolut nicht, ob und wie das von VB6 ansprechbar ist.

Wie gesagt praktische Erfahrungen habe ich nur in DAO und da kann man z.B. problemlos Textdateien mit reinem SQL importieren und exportieren.

Ich brauche aber PostgreSQL, weil die Datenmengen im GByte-Bereich sind. Somit scheidet zeilenweises Lesen und Einfügen wohl aus. Das Verfahren muss nicht nur funktionieren, sondern auch noch effektiv sein.

Mein aktueller Ansatz wäre ODBC+ADO hier werde ich morgen weiter basteln.

Strange. CSV Im/Export kann PG ‘out-of-the-box’. Natürlich kann man da Layer drum herum frickeln und dafür Geld verlangen, gibt bestimmt genug Leute, die dafür zahlen. Nötig ist das nicht.

Ich kenne mich in den Interna von PostgeSQL nicht aus.

Ich mich nicht in VB.

Ich habe zwar ein paar Triggerfunktionen programmiert, weiß aber nicht wie und ob man diese “internen Funktionen” von “außen” nutzen kann.
So habe ich z.B. von COPY gelesen, weiß aber absolut nicht, ob und wie das von VB6 ansprechbar ist.

Das kann mit STDIN und STDOUT arbeiten. Mehr braucht man nicht. Zumindest nicht in der UNIX-Welt. M$DOS aus dem letzten Jahrtausend nutze ich nicht, geht aber damit wohl auch.
Triggerfunktionen lösen z.B. bei Insert oder Update aus, ob das via VB6, Basic, Rauchzeichen oder Brieftauben reinkommt ist völlig egal.

Wie gesagt praktische Erfahrungen habe ich nur in DAO und da kann man z.B. problemlos Textdateien mit reinem SQL importieren und exportieren.

Ich brauche aber PostgreSQL, weil die Datenmengen im GByte-Bereich sind. Somit scheidet zeilenweises Lesen und Einfügen wohl aus. Das Verfahren muss nicht nur funktionieren, sondern auch noch effektiv sein.

Mein aktueller Ansatz wäre ODBC+ADO hier werde ich morgen weiter basteln.

Effektiv und ODBC sind IMHO Dinge, die sich gegenseitig ausschließen. Aber da kann ich mich auch irren. Die Anzahl der Leute hier, die Plan von Windoze UND PostgreSQL haben ist überschaubar, aber vielleicht findet sich ja wer.

Na, Du wirst das schaffen, PG ist wirklich sehr leistungsfähig UND offen in seinen Schnittstellen. Zu Windows-spezifischen Dingen kann ich Dir aber ned helfen, sorry.


Andreas

Hallo,
in welche Ecke bin ich hier geraten? Es gibt noch was anderes außer Windows? Dachte UNIX wäre abgeschaltet worden, nachdem ich vor 10 Jahre abtrünnig geworden bin :smiley: .

Effektiv und ODBC sind IMHO Dinge, die sich gegenseitig ausschließen.

Ich kenne leider keine Alternative. Würde selbst gern auf die Installation der PostgreSQL-Treiber verzichten.


Triggerfunktionen lösen z.B. bei Insert oder Update aus, ob das via VB6, Basic, Rauchzeichen oder Brieftauben reinkommt ist völlig egal

Schon klar, war halt nur (für mich) ein Beispiel, dass mehr geht als reines SQL.


CSV Im/Export kann PG ‘out-of-the-box’

Vermutlich über COPY!? Dies scheint bei PG Bestandteil von SQL zu sein. Muss mal testen, ob das über ADO geht.

VB6 wird hier wohl letztendlich keine direkte Rolle spielen. Entscheidend wird werden, was über ADO/SQL möglich ist.

Dump/Restore geht faktisch auch darüber. Das kann man dann also schon als Bestandteil nennen …


Andreas

Hallo,
also prinzipiell funktioniert es. Den Feinschliff kann ich mir sicher selbst erarbeiten.

Dim conn As Object, cmd As Object
Const adCmdText = 1
Const sSQL = "COPY mytest FROM 'c:/tar/mytest.csv'"
    Set conn = CreateObject("ADODB.Connection")
    Set cmd = CreateObject("ADODB.Command")
    conn.Open "DSN=pgTest"
    cmd.ActiveConnection = conn
    cmd.CommandType = adCmdText
    cmd.CommandText = sSQL
    cmd.Execute
    conn.Close
End Sub

Du willst da noch irgendwo einen Stream öffnen, habe ich noch dunkel in Erinnerung.
Aber das Thema habe ich weitgehend verdrängt.