Base-Tabelle per OOo Basic in andere Base-DB kopieren

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

fu-sin
Beiträge: 9
Registriert: Do, 03.02.2011 17:17

Base-Tabelle per OOo Basic in andere Base-DB kopieren

Beitrag von fu-sin »

Im Anschluss an diesen Thread viewtopic.php?f=8&t=45843 habe ich noch weitere Fragen zu einer Lösung mit Basic.
Aufgabe: Eine Tabelle aus bestehender Base-DB in eine andere Base-DB mit allen Daten kopieren.
Mögliche Lösung: (wie ich es bisher versucht habe) zwei Datenbankverbindungen erstellen und dann mit "SELECT * INTO" - Anweisung eine bestehende Tabelle in andere Datenbank kopieren.

Innerhalb einer DB funktioniert es problemlos:

Code: Alles auswählen

myQuerry = "SELECT * INTO ""tMitgliederNeu"" FROM ""tMitglieder"""
Und mit 2 Datenbankverbindungen kriege ich es nicht zum Laufen...
Die Verbindungen sehen dann so aus:

Code: Alles auswählen

' Quelle
..
ConnectionQ = DataSourceQ.GetConnection("","")
StatementQ = ConnectionQ.createStatement()

' Ziel
..
ConnectionZ = DataSourceZ.GetConnection("","")
StatementZ = ConnectionZ.createStatement()
...
Nun, wie und wo kann ich die richtige Connection zuweisen?
Die Lösung für SQL Server lautet z.B.:

Code: Alles auswählen

SELECT * INTO ZielDB.dbo.CustomersTemp FROM QuelleDB.dbo.Customers
Und im Basic scheitere ich einfach bei der richtigen Syntax:

Code: Alles auswählen

sMyQuery="SELECT * INTO " & <ConnectionZ???> & ".""tMitgliederNeu"" FROM " & <ConnectionQ???> & ".""tMitglieder"""
Bei allen ausprobierten/geratenen Varianten bekomme ich eine Fehlermeldung zu dem SQL-String: "BASIC-Laufzeitfehler. Falscher Wert für Eigenschaft."

Vielen Dank im Voraus!
fu-sin
Beiträge: 9
Registriert: Do, 03.02.2011 17:17

Re: Base-Tabelle per OOo Basic in andere Base-DB kopieren

Beitrag von fu-sin »

Vorübergehend habe ich einen Workaround mit dump realisiert. Suche aber weiter nach einer "direkten" Lösung.
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Base-Tabelle per OOo Basic in andere Base-DB kopieren

Beitrag von DPunch »

Aloha

Eine "direkte" Lösung gibt es dafür nicht.
Du wirst das in zwei Schritten erledigen müssen
a) Daten aus Quelle auslesen
b) ausgelesene Daten in Ziel schreiben

Das würde dann im Prinzip so aussehen:

Code: Alles auswählen

ConnectionQ = DataSourceQ.GetConnection("","")
StatementQ = ConnectionQ.createStatement()

ConnectionZ = DataSourceZ.GetConnection("","")
StatementZ = ConnectionZ.createStatement()

sQuery = "SELECT * FROM ""tMitglieder"""
oResult = StatementQ.executeQuery(sQuery)

nCounter = 0
Do While oResult.Next
	sUpdate = "INSERT INTO ""tMitgliederNeu"" VALUES('" & oResult.getString(1) & "'"
	For i = 2 To oResult.Columns.Count
		sUpdate = sUpdate & ",'" & oResult.getString(i) & "'"
	Next i
	sUpdate = sUpdate & ")"
	nCounter = nCounter + StatementZ.executeUpdate(sUpdate)
Loop
MsgBox nCounter & " Zeilen eingefügt",64,"Abgeschlossen"
fu-sin
Beiträge: 9
Registriert: Do, 03.02.2011 17:17

Re: Base-Tabelle per OOo Basic in andere Base-DB kopieren

Beitrag von fu-sin »

Danke für's Info!
Ja, ist auch eine Lösung, wobei man in deinem Beispiel davon ausgeht, dass die Ziel-Tabelle bereits existiert. In meinem Fall ist es nicht so, d.h. sie muss erst angelegt werden... usw.
Antworten