![]() |
Datenbank: firebird • Version: 2.5 • Zugriff über: zeos
Tabelle mit sql erstellen
Hallo!
Ich habe eine csv-Datei und wandele diese mit BDE in dbf Format. Wie mache ich das mit Firebird? |
AW: Tabelle mit sql erstellen
-Insert-Skript erzeugen
-als externe Tabelle -Batch-Move von einem JSV-DataSet |
AW: Tabelle mit sql erstellen
Zitat:
Ich bin viel zu sehr Anfänger um zu wissen was damit gemeint ist. Anbei erstmal meine Erstellungsfunktion:
Delphi-Quellcode:
Kann man daran etwas verbessern? Ich bin dabei mein Programm auf Firebird umzustellen und möchte natürlich auch, daß das ganze schneller wird.
procedure TForm5.Datenbank1erstellen();
var i: integer; SL: TStringlist; begin with table1 do //Benenne Datenbanktabelle begin Active := false; DataBaseName := 'C:\DB'; TableName := 'Datenbank1.dbf'; { TableType := ttDbase;} with FieldDefs do //Benenne Tabellenfeld begin Clear; Add('Datenwort', ftString, 50, false); end; CreateTable; //Erzeuge Tabelle Open; //Öffne Tabelle with table1 do //Mache etwas mit Tabelle begin // Routine zum Einlesen der Daten SL:= TStringlist.Create; SL.LoadFromFile('C:\DB\datenw1.txt'); Active := false; DataBaseName := 'C:\DB'; TableName := 'Datenbank1.dbf'; Active := true; For i := 0 to SL.Count -1 do begin Append; // jeder Datensatz wird einzeln eingefügt (appended) Fields[0].AsString := SL.Strings[i]; end; Post; end; Close; table1.Exclusive :=true; with IndexDefs do begin Clear; AddIndex('Datenwort' , 'Datenwort',[]); end; end; {allererstes with table1 do} SL.Free; end; {procedure TForm1.Tabelleerstellen1Click} |
AW: Tabelle mit sql erstellen
Hallo...
das Prinzip ist im weitesten Sinne ähnlich. 1. Datenbank erstellen 2. Tabelle erstellen 3. Felder erstellen, Indexe anlegen 4. CSV einlesen (Stringlist) 5. Schleife über alle Einträge aus Pkt. 4 6. innerhalb der Schleife die Daten in die Datenbank per INSERT Statement (ggf. die Werte der Zeile aufsplitten und einzeln schreiben) Hinweise: - Pkt1-3 kann man auch vorher mit einem Tool wie IBExpert erledigen. Vorraussetzung, man weiß welche Felder die CSV Datei enthällt. Fragen: - Du sprichst von CSV lädst aber in deinem Beispiel eine TXT und liest nur die komplette Zeile ein. Eine Zeile eines CSV besteht aber in der Regel aus mehreren Werten. - willst du mit jedem Import eine neue Tabelle / Datenbank erstellen ? - sind die CSV vom Aufbau immer gleich ? :hi: PS: eine dbf ist keine Datenbank sondern nur eine Tabelle im "File Format". Hier hast du schon den Unterschied zu Firebird. Dort existieren keine Tabellen ohne Datenbank. Diese Datenbank ist ein File und enthällt mehrere Tabellen. |
AW: Tabelle mit sql erstellen
Die Datendefinition ist aber fix oder soll diese dynasmisch anhand der CSV-Datei erzeugt werden?
In FireBird kann man externe dateien als Tabellen einbinden und aus diesen dann daten kopieren. ![]() Mit Hilfe eines CSV-DataSets kann man eine CSV-Datei als Delphi-DataSet laden und dann delphiseitig die Daten in das mit Firebird verbundene DataSet kopieren. ![]() |
AW: Tabelle mit sql erstellen
Der Vorteil des manuellen Imports über die Schleife (mag diese Variante auch langsamer sein) ist, daß man während der Übernahme Überprüfungen der Daten vornehmen kann (ungültige Werte, Schreibfehlerkorrektur etc.)
|
AW: Tabelle mit sql erstellen
Zitat:
a) zweispaltige Open Office Datei als csv Speichern 1.Schritt: zweite Spalte innerhalb des Delphi Programms löschen, 2.Schritt: doppelte Begriffe entfernen. b) Datenbanktabelle (dbf) mit obigen Quelltext erstellen. - Ja, es soll jedesmal die komplette Tabelle neu erstellt werden. - im nachhinein soll der Importvorgang auf 2 und mehr Spalten (csv) erweitert werden. fl63 |
AW: Tabelle mit sql erstellen
Zitat:
Eine Datenbank ist eine "Sammlung" von Daten aus der man sich das suchen lassen kann was benötigt wird. (macht die Ddatenbank) Wenn du jedesmal eine neue Tabelle / Datenbank erzeugst mußt du selbst nach den Daten suchen (anhand des Datenbank Namens z.B) Was ist wohl übersichtlicher und effektiver ? 8-) |
AW: Tabelle mit sql erstellen
Zitat:
zB. werden zwischen den 200sten und dem 201sten Datensatz zwei Neue eingefügt,was bei 1000 und mehr Datensätzen nicht zu erkennen ist. |
AW: Tabelle mit sql erstellen
Auch nicht anhand des Inhalts?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:45 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 by Thomas Breitkreuz