2010-12-21 12 views
8

Ich habe eine MySQL-Datenbank mit InnoDB-Tabellen, von denen viele Fremdschlüssel haben.Füllen Sie Tabellen mit Testdaten unter Beibehaltung der relationalen Integrität

Ich würde ein Skript schreiben, um die Tabellen mit Testdaten (10-20k Zeilen oder mehr) zu füllen, aber ich dachte, ich sollte fragen, ob es schon etwas gibt, das Testdaten basierend auf den Feldtypen aber generieren kann gleichzeitig die relationale Integrität sicherstellen?

Ich habe gesehen und habe das Skript bei generatedata.com heruntergeladen, aber soweit ich sehen kann, es ist schlau, aber es wird nicht lesen Sie die Tabellen innerhalb Ihrer Datenbank und generieren Daten auf der Grundlage, was es findet- müssen Sie tun alles manuell.

Antwort

0

BEARBEITEN: Wie von Mark Byers angegeben, ist das Red-Gate-Tool nur SQL Server.

Red-Gate haben ihre SQL Data Generator, die "Fremdschlüssel Unterstützung für die Erzeugung konsistenter Daten über mehrere Tabellen" bietet, aber es ist nicht billig.

Es gibt ein Produkt von Datanamic mit der Bezeichnung DB Data Generator.

Ich habe keines dieser Produkte benutzt, aber ich habe andere Werkzeuge von beiden Firmen verwendet und fand sie sehr gut.

+0

Ich dachte, SQL Data Generator war nur für SQL Server. Wird es mit MySQL funktionieren? –

-1

Ich verwende ein separates Verbindungsskript. Auf diese Weise kann ich eine Testdatenbank erstellen (ein Duplikat der realen Datenbank). Ich füge meine Testdaten dort hinzu.

Dann ist es eine Zeile im Verbindungsskript, um die Test-db auszuwählen, und wenn ich fertig bin, eine Zeile, um wieder auf die Live-db zu wechseln.

Es ist toll zum Spielen, Entwerfen, Testen usw.

Hier ein Beispiel:

Dateiname: includes/connection.php

<?php 

    $DB_USER='username';   
    $DB_PASS='password';    
    $DB_HOST='localhost';     
    $DB_NAME='dbname'; 

?> 

Um beim Test db aussehen, ich ändern die letzte Zeile an:

$DB_NAME='testdbname'; 

Dann schließe ich diese Verbindungsdatei in jedem PHP ein Skript.

Hoffe, das hilft.

1

Dieser ist so einfach wie:

call procedurename('DATABASE','TABLE',1000,''); 

1000 zufällige Zeilen füllen und Aufzeichnungen nach Ihren Bedürfnissen füllen.

+0

Respektiert es Fremdschlüssel? – bcmcfc

+0

Ich habe es ausprobiert, und ich bekomme ERROR 1172 (42000): Ergebnis bestand aus mehr als einer Zeile : / –