Einzelnen Beitrag anzeigen

Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#1

Firebird: viele Testdaten erzeugen

  Alt 3. Nov 2009, 09:34
Datenbank: Firebird • Version: 2.1 • Zugriff über: IBExpert Personal
Hallo,

für Wikibooks: Einführung in SQL möchte ich im Kapitel "Änderung der Datenbankstruktur" ein Verfahren einbauen, mit dem auf einfache Weise viele Testdatensätze erzeugt werden können, und zwar auch unter Berücksichtigung von ForeignKeys. Einer der möglichen Wege ist mir bekannt und (jedenfalls im Prinzip) vertraut:
  1. mehrere temporäre Tabellen mit Werten für die verschiedenen Spalten erzeugen
  2. mit dem kartesischen Produkt oder per Zufallsfunktion diese Werte mischen und in den Zieltabellen speichern
  3. die temporären Tabellen löschen
Dieses Verfahren könnte auch in einer StoredProcedure zusammengefasst und versteckt werden.

Da es sich um eine Einführung in SQL handelt, möchte ich nicht zu sehr in die Tiefe gehen und z.B. die Beispieldatenbank nicht zu sehr ändern. Deshalb interessiert mich:
  • Gibt es ein einfacheres Verfahren?
  • Können anstelle von temp. Tabellen Arrays in SELECT bzw. INSERT eingebaut werden?
  • Übersehe ich andere Möglichkeiten?
Zu den Arrays ist mir folgender Gedanke gekommen: Benutze für eine Namensliste einen String ähnlich diesem:
'Meyer Müller SchnackingGroß '; Also eine Anzahl von Werten mit gleicher Länge (hier: 10 Zeichen), auf die per Zufallswert und Index (1, 11, 21 usw.) zugegriffen wird. Das könnte die temp. Tabellen überflüssig machen, würde aber die Kombination von INSERT und SELECT bei 10 Spalten pro Tabelle ziemlich unübersichtlich machen.

Gibt es bessere Ratschläge und Hinweise? Danke! Jürgen

PS. Ich weiß, dass die Vollversion von IBExpert Testdaten generieren kann. Es geht mir um ein Verfahren, das auf andere SQL-Dialekte übertragbar sein soll und deshalb möglichst mit "reinem" SQL auskommen soll.
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat