AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Tips für CSV-Daten in DBF einfügen bzw. ändern?
Thema durchsuchen
Ansicht
Themen-Optionen

Tips für CSV-Daten in DBF einfügen bzw. ändern?

Ein Thema von X-Dragon · begonnen am 28. Nov 2003 · letzter Beitrag vom 4. Dez 2003
Antwort Antwort
Benutzerbild von X-Dragon
X-Dragon

Registriert seit: 14. Jan 2003
Ort: Schortens
289 Beiträge
 
Delphi 6 Enterprise
 
#1

Tips für CSV-Daten in DBF einfügen bzw. ändern?

  Alt 28. Nov 2003, 08:29
Hallo Leute,

ich bastel gerade an einem Tool mit dem eine Tabelle (CSV-Format) in eine DBF-Tabelle integriert werden soll. Die CSV-Datei wird schon mal in ein Array eingelesen, aber kann ich die Daten jetzt per SQL vergleichen und die Datensätze entsprechend ändern bzw anhängen oder geht das auch noch per Batchmove irgendwie?
  Mit Zitat antworten Zitat
Beg

Registriert seit: 11. Apr 2003
35 Beiträge
 
Delphi 7 Professional
 
#2

Re: Tips für CSV-Daten in DBF einfügen bzw. ändern?

  Alt 28. Nov 2003, 10:52
Hallo,

schau doch mal bei Scalabium Software vorbei.
Das Tool heißt SMImport 1.96

Gruß Beg
  Mit Zitat antworten Zitat
Benutzerbild von X-Dragon
X-Dragon

Registriert seit: 14. Jan 2003
Ort: Schortens
289 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Tips für CSV-Daten in DBF einfügen bzw. ändern?

  Alt 28. Nov 2003, 11:16
Zitat von Beg:
Hallo,

schau doch mal bei Scalabium Software vorbei.
Das Tool heißt SMImport 1.96

Gruß Beg
Danke für den Tip. Hat mich gerade daran erinnert das ich sowas in der Art vor ein paar Wochen mal installiert hatte ... . Werd mir das erstmal genauer anschauen.
  Mit Zitat antworten Zitat
Benutzerbild von X-Dragon
X-Dragon

Registriert seit: 14. Jan 2003
Ort: Schortens
289 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: Tips für CSV-Daten in DBF einfügen bzw. ändern?

  Alt 28. Nov 2003, 16:00
Leider helfen mir die Komponenten auch nicht weiter. Die die ich hier haben sind fürs Exportieren in zig Formate, aber leider nicht zum importieren zu gebrauchen . Und mit der Komponente oben kann man nur max 50 Datensätze importieren, bzw sich die erstmal kaufen ...

Kann mir nicht jemand eine guten Tip geben, wie man das bspw. mit SQL machen kann? Einfache Abfragen und Tabellen erstellen und so sind kein Problem für mich, aber mit DBase-Datenbanken hab ich bisher nix am Hut gehabt. Und die Daten sollen je nach Übereinstimmung mit einem Feldes einen Datensatz überschreiben bzw einfach hinten anehangen werden.

Dazu kommt noch das bei der DBase-DB 3 *.ntx-Dateien bei sind, die ja vermutlich Index-Dateien sein sollen, aber warum werden die im Datenbank-Explorer nicht angezeigt? Oder haben die anderen Sinn?
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Tips für CSV-Daten in DBF einfügen bzw. ändern?

  Alt 29. Nov 2003, 13:47
Hallo X-Dragon,

die Batchmove Komponente kennt verschiedene Modi, die über die Eigenschaft Mode eingestellt werden kann. Für dich scheint dort der Wert batAppendUpdate sinnvoll. Außerdem reagiert Batchmove auf Indexfehler oder andere Fehler, in dem es erlaubt Tabellen anzugeben, die solche problematischen Datensätze aufnehmen. Schau dir in der OH dazu einmal KeyViolTableName und die anderen xxxTableNames an.

Wenn das alles nicht hilft, wäre noch der manuelle Weg über eine Schleife möglich, die die Daten satzweise kopiert und dann beliebige Überprüfungen durchführen kann.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von X-Dragon
X-Dragon

Registriert seit: 14. Jan 2003
Ort: Schortens
289 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: Tips für CSV-Daten in DBF einfügen bzw. ändern?

  Alt 30. Nov 2003, 13:51
Zitat von MrSpock:
Hallo X-Dragon,

die Batchmove Komponente kennt verschiedene Modi, die über die Eigenschaft Mode eingestellt werden kann. Für dich scheint dort der Wert batAppendUpdate sinnvoll. Außerdem reagiert Batchmove auf Indexfehler oder andere Fehler, in dem es erlaubt Tabellen anzugeben, die solche problematischen Datensätze aufnehmen. Schau dir in der OH dazu einmal KeyViolTableName und die anderen xxxTableNames an.

Wenn das alles nicht hilft, wäre noch der manuelle Weg über eine Schleife möglich, die die Daten satzweise kopiert und dann beliebige Überprüfungen durchführen kann.
Ok, danke werd es also doch mal mit Batchmove versuchen.
  Mit Zitat antworten Zitat
Benutzerbild von X-Dragon
X-Dragon

Registriert seit: 14. Jan 2003
Ort: Schortens
289 Beiträge
 
Delphi 6 Enterprise
 
#7

Re: Tips für CSV-Daten in DBF einfügen bzw. ändern?

  Alt 4. Dez 2003, 11:35
Hab es jetzt doch ganz anders gelöst (naja fast s. u.). Nachdem ich auf den Befehl "DbiBatchMove" (s. Anhang) gestossen bin, hab ich einigesehen das dies mit Sicherheit der falsche Weg ist und es auch eine viel einfachere Lösung geben muss .

Also die Daten aus der CSV-Datei (naja ganz so strukturiert war sie dann doch nicht), hab ich jetzt einfach in eine StringListe geladen und sie von dort aus in einer Schleife zeilenweise zerstückelt in Dyn. Array gelesen. Soweit so gut.

Anschliessend öffne ich die DBase-DB und überprüfe per "Locate"-Befehl ob die Daten aus der Text-Datei schon drin sind. Wenn ja wird dieser Eintrag aktualsiert und ansonsten einfach dran gehängt.

Jetzt hab ich aber ein Problem mit den Datentypen. In der Textdatei stehen unteranderem numerische Preisangaben (7-stellig, also für max 5-stellige Beträge + 2 Stellen für Cent). Diese hab ich erstmal als Integer eingelesen, da sie auch vorher ohne Komma gespeichert sind. In der DBase-DB haben die Preise aber das Format "Numerisch"(Größe 19) und 5-Nachkommastellen ... was es bei Paradox nun ja gar nicht gibt. Also die anderen Einträge kann ich so ganz normal übernehmen:
FieldByName('BEZE').AsString := dbimport[z].Teilbezeichnung; ... aber wie mach ich das dann mit diesem numerischen-Format und den Nachkommstellen?

Die Text-Datei hat übrigends etwas über 200.000 Zeilen und die DBase-DB ist ca. 100 MB groß ... gibts da noch eine schnellere/bessere Möglichkeit, oder ist das so in Ordnung?

[edit]
hat sich erstmal erledigt, ging ja doch ganz einfach per "asFloat" ... muss man nur erstmal drauf kommen
Miniaturansicht angehängter Grafiken
1.png  
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz