AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi External File (Import aus Textdatei in SQL-DB)
Thema durchsuchen
Ansicht
Themen-Optionen

External File (Import aus Textdatei in SQL-DB)

Ein Thema von Hansa · begonnen am 29. Sep 2002 · letzter Beitrag vom 2. Okt 2002
Antwort Antwort
Seite 1 von 2  1 2      
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1

External File (Import aus Textdatei in SQL-DB)

  Alt 29. Sep 2002, 12:43
Hallo Leute,

will meine Datenbank mal mit realen DS bestücken. Das kann ich ja, indem ich Daten Zeile für Zeile in eine Textdatei schreibe und diese dann mit CREATE TABLE FROM EXTRENAL 'C:\test' in die SQL-DB einfügen.

Die genaue Syntax steht in Lemmys SQL-Tutorial. Da schreibt er aber, man müsse das CRLF definieren, klar, damit die DB weiß, wo der DS endet, dieses sei unter windows 2573.

Was heißt das, ich soll doch wohl kaum in jede Textzeile am Schluß 2573 hinschreiben?

Noch eine Frage, kann ich ein Zeichen benutzen um das Ende eines Feldes zu kennzeichnen ? Oder muß ich alles auf die maximale Feldlänge auffüllen ?

Gruß
Hansa
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#2

Re: External File (Import aus Textdatei in SQL-DB)

  Alt 29. Sep 2002, 12:52
Zitat von Hansa:
Was heißt das, ich soll doch wohl kaum in jede Textzeile am Schluß 2573 hinschreiben?
Hallo Hansa,

warum nicht #13#10?

Grüsse, Daniel
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3
  Alt 29. Sep 2002, 17:37
Hi, Daniel B

Zitat:
warum nicht #13#10?
Natürlich. Aber was im EXTERNAL File hinschreiben, als #13#10 oder wie?

Gruß
´Hansa
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4
  Alt 29. Sep 2002, 18:09
Hi,

Zitat:
Noch eine Frage, kann ich ein Zeichen benutzen um das Ende eines Feldes zu kennzeichnen ? Oder muß ich alles auf die maximale Feldlänge auffüllen ?
Schreibe jetzt alles in TXT Datei und gucke, was passiert. Als CRLF verwende ich dann #13#10.

Gruß
Hansa
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#5
  Alt 29. Sep 2002, 22:55
Noi... Kerle hosch net kapiert??

Also die Textdatei sieht so aus:

Name.....Vorname......Straße......Ort......# <-das steht für ein CR!
.
.
.
sich wiederholende Zeilen.

Jetzt definierst Du die External File:

CREATE TABLE External File ...blabla
(NAME CHAR(10),
VORNAME CHAR(10),
Straße CHAR(10),
ORT CHAR(10),
CRLF SmallInt); //Oder Integer, ich weiß es auswendig nicht mehr... *g*

Wenn Du jetzt einlesen willst, kapiert IB noch die Daten anhand der vorgegebenen Struktur zu lesen. Allerdings steht der Cursor am Ende einer Zeile. Du musst dann also um den IB-Cursor in die nächste Zeile zu bringen das CRLF auch "einlesen", ist zwar uninteressant, aber das brauchst Du. Wenn Du Daten AUSLIEST, dann musst Du, um die Daten nicht alle in einer Zeile unterzubringen, das CRLF wieder um in die nächste Zeile zu springen. Dann machst Du eben ein

INSERT INTO EXtFILE VALUES ('NAME','VORNAME','STRASSE','ORT',2573);

Kapische??
Gute Nacht....

Lemmy
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#6
  Alt 30. Sep 2002, 18:25
Hi Lemmy,

vielen Dank für die Antwort, aber ich habe hier bereits eine Textdatei erzeugt, in der die Daten Zeile für Zeile drinne stehen, genau mit der Feldlänge, die IB erwartet, es geht um Daten-IMPORT. Mir ist aber noch einiges unklar.

Was mache ich eigentlich mit numerischen Werten ? Natürlich habe ich mir gerade eine Kundendatei vorgeknöpft. Außer Skonto ist da kaum numerisches drin. Vorher fragte ich ja bereits nach dem Feldende-Zeichen. Bei Zahlen ist das aber jetzt absolut notwendig, es sei denn ich könnte in IB sagen, daß er einen String z.B. in einen integer umwandelt. Dann muß ich aber auch wissen wo der string anfängt und aufhört.

Dann kommen ja auch noch die Foreign Keys und die Frage, wie es geht, falls Werte einer externen Tabelle in eine bestehende eingefügt werden sollen.

Gruß
Hansa
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#7
  Alt 30. Sep 2002, 19:29
Hi,

beim Import musst Du in der Tabelle "External File" eben einen Integer bzw. Smallinteger für das Zeilenende angeben.

Das mit dem Feldende ist einfach: bei Char-Werten gibts Du ja an, wie lange das Feld sein soll, bei numerischen Werten (z.B. Numeric (5,2)) ja auch!

Erzeuge doch einfach mal ne External-File mit allen Datentypen (Numeric, Decimal,...) und füge einen Datensatz ein, dann weißt Du, wieviel Platz di in dem File brauchen. Stimmt Dein gegebenes File mit den Daten mit diesem File überein, dann kannst Du das Ding einlesen, anderenfalls musst Du das halt anpassen....


Grüße
Lemmy
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#8
  Alt 30. Sep 2002, 19:45
Hi Lemmy,

Zitat:
Erzeuge doch einfach mal ne External-File
Peinlich ! Da hätte ich auch drauf kommen können.

Bei numerischen Werten vermute ich, daß IB den Teilstring in die entsprechende Zahl umwandelt, wobei dann die nächste Frage ist : Wie wird das Komma behandelt ? Oje, das Datum brauch ich ja auch noch. Dann hab ich auch noch Arrays und Aufzählungstypen. Uff, aber da muß ich so oder so durch.

Desweiteren stellt sich noch die Hauptfrage, was mache ich mit den ID-Feldern der alten DB????

Gruß
Hansa
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#9
  Alt 1. Okt 2002, 09:26
Hi,

Zitat von Hansa:
Desweiteren stellt sich noch die Hauptfrage, was mache ich mit den ID-Feldern der alten DB????
Da bleibt Dir nur überig die referentielle Integrität von Hand wieder herzustellen, d.h. beim Einlesen einer Tabelle die mit ner anderen referenziert ist mit einer Select den entsprechenden Datensatz suchen und dessen ID zuweisen....

Grüße
Lemmy
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#10
  Alt 1. Okt 2002, 10:55
Hallo Lemmy,

Habs befürchtet. Was anderes fällt mir dazu auch nicht ein. Das Hauptproblem ist aber, daß die ID aus der externen table nichts mit der ID von IB zu tun hat.

Also muß ich doch tatsächlich ein eindeutiges Feld (z.B. Nr) des Stammsatzes in die externe table schreiben und anhand dieses Feldes die zugehörige IB-ID suchen und diese dann in die IB-DB schreiben..... Da legst di nieda.

Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 01:40 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