![]() |
Datenbank: BDE • Version: 5.15 • Zugriff über: TurboDB
Wie kann ich das am besten in eine DB Importieren?
Ich importiere eine XML Datei in eine Datenbank.
Hier ein ausschnitt aus dieser Datei:
Code:
Und zwar geht es um die einträge "<groundspeak:log id=" (oben sind es 3 Stück) diese sollen im selben datensatz gespeichert werden wie die restlichen daten auch. Nur ist die anzahl dieser Einträge immer verschieden. Es können 3 sein aber auch 30 oder gar 50.
<groundspeak:logs>
<groundspeak:log id="161782893"> <groundspeak:date>2011-05-20T19:00:00Z</groundspeak:date> <groundspeak:type>Found it</groundspeak:type> <groundspeak:finder id="4394458">jasmnsna</groundspeak:finder> <groundspeak:text encoded="False">dank warrex und ninawieden unserer schnaggel-AG nach der arbeit gesuch und gefunden zusammen sind wir stark LG jasmin sabrina</groundspeak:text> </groundspeak:log> <groundspeak:log id="161778888"> <groundspeak:date>2011-05-20T19:00:00Z</groundspeak:date> <groundspeak:type>Found it</groundspeak:type> <groundspeak:finder id="4442368">WARx</groundspeak:finder> <groundspeak:text encoded="False">War schon kurz vorm Verzweifeln aber dann doch mitsamt der gesamten Kraft der Schnaggel AG gefunden :)</groundspeak:text> </groundspeak:log> <groundspeak:log id="161777788"> <groundspeak:date>2011-05-20T19:00:00Z</groundspeak:date> <groundspeak:type>Found it</groundspeak:type> <groundspeak:finder id="4471936">ninaen</groundspeak:finder> <groundspeak:text encoded="False">nach langer langer suche entlich gefunden nummer 7 für heute</groundspeak:text> </groundspeak:log> </groundspeak:logs> Dachte mir das ich es mit einem Memofeld mache und jeden Eintrag in eine Memozeile schreibe. Die einzelnen Parameter hätte ich mit komma getrennt. Allerdings können die Einträge manchmal sehr lang werden und memo bricht automatisch nach 1024 Zeichen die Zeile. So kann ich dann nicht mehr mit memo.lines auf einzelne Einträge zugreifen. Soll ich nun 50 Datenbankfelder (Memos) anlegen auch wenn meist viel weniger benötigt werden? Oder gibt es elegantere Lösungen? Beim Importieren habe ich das mit einem Dynamischen Array gelöst, aber sowas gibt es ja bei einer DB nicht. Wäre nett wenn jemand helfen könnte. Danke! |
AW: Wie kann ich das am besten in eine DB Importieren?
Ich weiß nicht, ob es nur mir so geht, aber ich habe nicht verstanden, was Du möchtest. Was hat ein Memo mit einer Datenbank zu tun? Was sind das für IDs in Deiner Datei? Wie hast Du Dir die DB-Struktur gedacht?
|
AW: Wie kann ich das am besten in eine DB Importieren?
Zitat:
Wenn du XML ausliest, dann nimmst du dafür eine XML-Bibliothek. Die kann das nämlich anhand des XML STandards einlesen, ohne darauf vertrauen zu müssen, dass da auch ja Zeilenumbrüche drin sind. Du kannst morgen ein XML ohne Zeilenumbrüche bekommen, und diese Datei wäre immer noch korrekt, aber dein Code nicht! Es gibt hier in der DP eine Abteilung für Tutorials, da findest du auch ![]() Bevor du auch nur irgendwas anderes anfängst[1], sollest du dich da schlau gemacht haben. Und danach überlege bitte, ob dein Programm wirklich eine evolutionäre Sackgasse darstellen soll. Denn die BDE ist schon lange nicht mehr unterstützt und läuft auf keinem 64Bit-System ohne manuelle Hacks. [1] Ernsthaft, du MUSST dich damit auskennen, bevor du auch nur eine weitere Zeile in deinem Programm schreibst! |
AW: Wie kann ich das am besten in eine DB Importieren?
Zitat:
Gruß K-H |
AW: Wie kann ich das am besten in eine DB Importieren?
TurboDB und ähnliche Datenbanken sind ein guter Ersatz für die BDE und immer noch weit verbreitet. Für mich als Heimanwender absolut ausreichend.
Der Datensatz besteht aus viel mehr als nur diesem kleinen Teil der oben gezeigt wird. Hier geht es darum wie ich diesen oben gezeigten Teil in diesen Datensatz einbringe. Die XML Datei habe ich bereits erfolgreich importiert mit einer XML Komponente, dass ist kein Problem. Die meisten Daten aus dieser XML Datei kann ich auch einfach in Datenbankfelder (als String deklariert) eintragen. Also auch kein Problem. Es sind also schon alle daten importert, außer diese:> Probleme bereiten mir nur die Einträge aus der XML Datei (siehe beispiel oben) die mehrfach vorkommen. So hat das Beispiel oben 3 x <groundspeak:log Einträge mit Parametern wie ID, Date, Type usw. Und jeder dieser Einträge muss in meine DB eingetragen werden. um einen Eintrag in die DB aufzunehmen könnte ich einfach die entsprechenden Datenbankfelder anlegen und fertig. Aber es sind immer verscheiden viele dieser Einträge (3, 30 oder noch mehr) und eben das bereitet mir probleme. Eine primitive Lösung wäre einfach 50 Datenbankfelder (nur so als vorsorge) für diese Einträge anzulegen. Aber denke nicht das es das optimale ist..... Sorry ich weis net wie ich das erklären soll..... Jeder andere eintrag ist einfach zu übernehmen: Name=Meyer, Vorname=Peter, Ort=Frankurt usw. usw. Aber das oben möchte ich so übernehmen: Log ID 1234434, date, type, finder, text. Also als einen eintrag aber mit Parametern. Deswegen meine Idee mit dem DBMemo, da könnte ich jeden eintrag (Log ID 1234434, date, type, finder, text.) in eine Memo Zeile schreiben und könnte beim auslesen mit memo.lines auf einzelne einträge zugreifen. Aber das geht nicht da DBMemo nach 1024 zeichen einen zeilenumbruch macht. Ich möchte sozusagen eine Liste in einem einzelnen Datenbankfeld speichern. |
AW: Wie kann ich das am besten in eine DB Importieren?
Nochmal: überleg Dir doch erst einmal eine sinnvolle DB-Struktur. Wie viele Tabellen hast Du denn bisher?
|
AW: Wie kann ich das am besten in eine DB Importieren?
Zitat:
ID INTEGER Inhalt MEMO ID-Des-Datensatzes-In-der-ersten-Tabelle Somit kannst Du zu einem Datensatz eine beliebige Anzahl von weiteren Datensätzen speichern. Allerdings würde ich dir doch sehr empfehlen dich in die Datenbankgrundlagen einzuarbeiten.... Grüße |
AW: Wie kann ich das am besten in eine DB Importieren?
Wenn zu einem Datensatz eine variable gleichartige Datenmenge gehört, kann man das prima in einer extra Tabelle sammeln.
Beispiel (mal ganz einfach und reduziert):
Code:
Du kannst nun jeder Wohnung eine beliebige Anzahl Bewohner zuordnen, die Du über WohnungsId filtern/zuweisen kannst.
TabelleWohnung
Id : Integer; Strasse : Text; Ort : Text; TabelleBewohner WohnungsId : Integer Name : Text; €: Ok, 6 Minuten im Tab geschlummert, Lemmys Hinweis geht in die gleiche Richtung. Btw. wenn Beiträge in Tab's "schlafen" kommt auch keine "RedBox"... da geht wohl was verloren. |
AW: Wie kann ich das am besten in eine DB Importieren?
Das mit der 2. Tabelle hört sich gut an :)
Du meinst ich sollte eine 2. Tabelle anlegen in der die oben genannten Felder eingetragen werden. Frage ist dann wie ich das mit der ersten Tabelle verknüpfe, also das wenn z.B. der 7. Datensatz angezeigt wird das dann auch die richtigen Daten aus der 2. Tabelle angezeigt werden. |
AW: Wie kann ich das am besten in eine DB Importieren?
Ich vermute, Du hast nur Lemmys Beitrag gelesen, schau Dir meinen nochmal an (#8), der veranschaulicht genau den Vorschlag nochmal etwas
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz