Seite 1 von 2
Importieren aus anderer Base Datenbank
Verfasst: Di 27. Sep 2011, 07:09
von irrlicht
Hallo,
ich habe vier Computer, an denen Daten in identische Base Datenbanken eingegeben werden. Da die Rechner nicht vernetzt sind, sollen die Daten abends von Hand in einer fünften Datenbank zusammengeführt werden. Wie mache ich das?
Re: Importieren aus anderer Base Datenbank
Verfasst: Di 27. Sep 2011, 12:10
von komma4
Du ziehst Dir die vier ODBs auf einen Stick, öffnest die Ziel.odb und kopierst dann die zusätzlichen Daten aus den 4 Tabellen in die Zieltabelle.
Hast Du einen eindeutigen Primärschlüssel, so musst Du einen Umweg über eine CALC-Tabelle gehen.
Alternative* Vorgehensweise:
am Ende des Arbeitstages folgendes SQL-Komamndo absetzen (
Extras>SQL...)
Code: Alles auswählen
select "Bezeichnung" AS "Bezeichnung", "Betrag" as "Betrag", "Soll/Haben" AS "SH" into Text "computer1" from "tab_TABELLENNAME" WHERE "id" > 19
und dann diese Textdatei (erstellt im Verzeichnis der ODB, mit automatischer Endung
.csv) auf Stick kopieren
Daten im Ziel-Computer öffnen, markieren, kopieren und per
Bearbeiten>Einfügen in die Zieltabelle bringen
*Einschränkungen
- kann nicht als Abfrage in der ODB gespeichert werden
- Es wird keine Kopfzeile erstellt
- Zahlen im amerikanischem Format
- Standardkodierung ASCII - Umlaute werden als ? gespeichert
Hilft Dir das weiter?
Re: Importieren aus anderer Base Datenbank
Verfasst: Do 29. Sep 2011, 12:02
von irrlicht
Danke für die Antwort.
Der Umweg über Calc funktioniert, ist aber doch etwas umständlich.
Die alternative Methode über die CSV Datei geht nicht - ich bekomme immer Fehlermeldungen.
Das hier geht: select * from Kasse
Und das nicht: select * into Text Kasse1 from Kasse
SQL-Status: HY000
Fehler-Code: 1000
syntax error, unexpected $end, expecting BETWEEN or IN or SQL_TOKEN_LIKE
Syntax error in SQL expression
Ich bin vieleicht etwas von SQL Server verwöhnt, aber gibt es nicht einen Import, bei dem die Daten per Query selektiert werden?
Re: Importieren aus anderer Base Datenbank
Verfasst: Do 29. Sep 2011, 12:15
von komma4
irrlicht hat geschrieben:Die alternative Methode über die CSV Datei geht nicht - ich bekomme immer Fehlermeldungen.
Meine Tipps sind immer getestet (wenn nichts anderes vermerkt): Du musst die Syntax genau einhalten.
Wichtig bei dem CSV-Export der internen HSQLDB sind zB die
AS "Bezeichner"
irrlicht hat geschrieben:aber gibt es nicht einen Import, bei dem die Daten per Query selektiert werden?
Nein.
Zum Einen arbeitest Du mit zwei ODB-Dateien - die eine kann auf die andere nicht zugreifen.
Zum Anderen speichert BASE nur
SELECT Abfragen, aber keine
INSERT Anweisungen.
Wenn ich mich recht entsinne habe ich mit BASIC mal was gemacht (zwei ODBs, von der einen in die andere schaufeln), wenn's Dich interessiert, dann krame ich mal in der Kiste...
Re: Importieren aus anderer Base Datenbank
Verfasst: Do 29. Sep 2011, 14:06
von irrlicht
Ok, ich versuche es nochmal.
SELECT "Teilnehmer", "Preis" FROM "Kasse" -> OK
SELECT "Teilnehmer" AS "Teilnehmer", "Preis" AS "Preis" FROM "Kasse" -> OK
SELECT "Teilnehmer" AS "Teilnehmer", "Preis" AS "Preis" into Text "computer1" FROM "Kasse" -> Fehler (wie vorher beschrieben)
Meiner Meinung nach habe ich Deine Query und Syntax genau umgesetzt, aber vielleicht übersehe ich die entscheidende Kleinigkeit.
Dein Angebot wegen dem Basic Programm ist nett, aber ich dachte, ich käme mit LibreOffice Bordmitteln aus. Wenn man noch etwas extra machen muß, würde ich mit Qt und PostgreSQL eine Lösung bauen. Wegen der besseren Benutzerführung in einer eigenen Oberfläche tendiere ich sowieso dahin, allerdings hat eine kompakte Lösung im Rahmen von LibreOffice ohne Zusatztools auch ihren Reiz, besonders wenn sie an einen Nachfolger ohne Programmierkenntnisse übergeben wird.
Re: Importieren aus anderer Base Datenbank
Verfasst: Do 29. Sep 2011, 14:43
von komma4
irrlicht hat geschrieben:SELECT "Teilnehmer" AS "Teilnehmer", "Preis" AS "Preis" into Text "computer1" FROM "Kasse"
Die Abfrage funktioniert (bei angepassten Spalten-/Tabellennamen) immer noch:
Stimmt die Gross-/Kleinschreibung in der Anweisung mit Deinen Namen überein?
Hast Du Schreibrechte im Verzeichnis der ODB?
Ist KEINE zip-Datei, nur CSV oder TXT Dateien können hier nicht angehängt werden
Verstehe Deine Einwände ggü. BASIC-Programmierung
up2you, wie man hier so schön sagt
Wait a minute...
Du sagst jetzt das erste Mal was von "Postgres" - ich bin natürlich von HSQLDB (weil: Angabe fehlte!) ausgegangen!
Die Syntax ist bestimmt eine andere...
Muss jetzt mit der Familie zum Abendessen... später mehr (wenn Du es nicht selbst rausfinden kannst:
http://www.postgresql.org/docs/9.0/static/sql-copy.html)
Re: Importieren aus anderer Base Datenbank
Verfasst: Do 29. Sep 2011, 15:16
von irrlicht
Gut, ich versuche es morgen nochmal - jetzt muß ich mit meinem Sohn zum Arzt.
PostgreSQL ist eine Alternative. Momentan versuche ich es mit LibreOffice Base.
Die Syntax sollte in Ordnung sein, da ich die Abfrage mit dem Assistenten erstellt habe. Außerdem funktionieren die ersten beiden Varianten und die Spalten sind beim dritten Versuch identisch geschrieben (copy/paste). Den eingefügten Teil nach der zweiten Variante habe ich direkt aus Deinem Beitrag kopiert.
Also dann bis morgen
Re: Importieren aus anderer Base Datenbank
Verfasst: Do 29. Sep 2011, 17:06
von komma4
irrlicht hat geschrieben:Momentan versuche ich es mit LibreOffice Base.
Hier: LO 3.4.3 (vom Projekt) mit openSuse 11.3, JRE 1.6.0_27
Ergänzung: ich halte nicht viel von der internen HSQLDB.
Wenn ihr auf PostgreSQL umsteigen wollt - dann macht das gleich. Aber - wo gibt's denn nicht vernetzte Rechner, die eine eigene psql Installation haben

Re: Importieren aus anderer Base Datenbank
Verfasst: Fr 30. Sep 2011, 10:33
von irrlicht
Ok, jetzt habe ich den Grund für mein Problem gefunden: Ich habe Deine Anleitung nicht exakt gelesen. Ich hatte meine Versuche in der Abfrage-Ansicht gemacht und da man diese Abfrage nicht speichern kann, wird sie auch nicht akzeptiert. Mit 'Extras->SQL' geht es...
Irgendwie ist es ja bescheuert, daß man ein gültiges SQL Statement nicht speichern kann.
Zum Verständnis - du warst ja über die PostgreSQL Idee erstaunt - hier ein kurze Übersicht:
Wir machen vom Kindergarten zweimal im Jahr eine Kleiderbörse. Unser bisheriger Betreuer für Hard- und Software hört nun auf und wir brauchen eine neue Lösung. Man könnte die Computer zwar drahtlos vernetzen, aber das wären zusätzliche Kosten und ob das im Ernstfall störungsfrei funktioniert ist nicht sicher. Bisher hatten wir Access, aber in Zukunft werden wir voraussichtlich auf Linux setzen, da kein Geld für (Windows) Lizenzen da ist. Das wäre aber nur möglich, wenn wir eigene Laptops kaufen. Das das sehr teuer wäre, könnte man auch Laptops ausleihen und dann wäre die LibreOffice Portable Lösung vermutlich der einfachste Weg. Base ist zwar keine richtige Datenbank, aber vermutlich auchnicht schlechter als Access. Besser wäre natürlich SQL Server Express Edition, aber da müßte man erst jedes mal auf fremden Rechnern installieren. MySQL kommt wegen Oracle nicht in Frage. Also bleiben noch Firebird oder PostgreSQL. Das Problem ist dann nur, daß man etwas programmieren muß. Das ist zwar für mich kein Problem, aber vermutlich für einen Nachfolger. Von daher kann ich mich noch nicht zwischen der schönen, aber komplizierten und der einfachen, aber unkomfortablen Lösung entscheiden.
Vielen Dank aber nochmal für die Hilfe.
Re: Importieren aus anderer Base Datenbank
Verfasst: Fr 30. Sep 2011, 11:06
von komma4
irrlicht hat geschrieben:Irgendwie ist es ja bescheuert, daß man ein gültiges SQL Statement nicht speichern kann.
Man kann gültige SQL-
Abfragen im vorgesehenen Container speichern.
Andere SQL-Anweisungen aber eben nicht - sieht das Design nicht vor.
Man kann diese aber in einer Textdatei speichern, kopieren und dann ausführen
Zur DB: habe keine eigene Erfahrung damit, weiss aber aus einem anderen Forum, dass SQLIte mit OOo gut zusammen arbeitet - auch auf einem Stick und warum nicht mit LO.
Inwieweit das "pflegeleicht" ist - kann ich nicht beurteilen.
Viel Erfolg!