Nachdem Sie während der Entwicklung mit MySQL DBs und Tabellen definiert haben, möchten Sie möglicherweise Testdaten. Hier werden wir das Verfahren von der Erstellung der Datenbank bis zur Registrierung der Testdaten vorstellen.
Bei der Erstellung einer großen Menge von Testdaten muss die Arbeit automatisiert werden. In MySQL können Sie neben der manuellen Eingabe von SQL-Befehlen auch Dateien mit SQL-Befehlen ausführen.
Wenn beispielsweise eine Datei vorhanden ist, die den folgenden SQL-Befehl beschreibt, lautet die Ausführungsmethode wie folgt.
SQLFile.sql
CREATE DATABASE CreateTestData;
SHOW DATABASES;
Terminal
#Melden Sie sich bei MySQL an
mysql -u root -p
Enter password:
・
・
・
# SQLFile.Führen Sie SQL aus
mysql> SOURCE SQLFile.sql
+--------------------+
| Database |
+--------------------+
| information_schema |
| CreateTestData |
| mysql |
| performance_schema |
+--------------------+
5 rows in set (0.03 sec)
Da Sie eine externe Datei lesen und SQL-Befehle auf diese Weise ausführen können, können Sie eine große Menge von Testdaten registrieren, wenn Sie eine Datei generieren können, die eine große Anzahl von SQL-Befehlen beschreibt, die Testdaten generieren.
Definieren Sie dieses Mal die folgende Benutzertabelle und erstellen Sie Beispieldaten.
CREATE.sql
CREATE TABLE user (
user_id INT PRIMARY KEY AUTO_INCREMENT,
user_name VARCHAR(45),
user_age INT,
created_at DATETIME
);
Unter dem Gesichtspunkt des Verstehens und Lesens des Inhalts wird unten das Programm gezeigt, das das SQL-Skript mit Python3 generiert.
createSQL.py
# coding:utf-8
import random
import time
#Generieren Sie einen Namen aus einer Liste mit Nach- und Vornamen
def randomName():
myouji = ["Tanaka", "Suzuki", "Sato", "Takahashi"]
namae = ["Taro", "Jiro", "Saburo", "Hanako"]
return random.choice(myouji) + random.choice(namae)
# 0~Generiere 100 Zufallszahlen
def randomAge():
return random.randint(0, 100)
#Zufällige Datumsgenerierung zwischen Start und Ende
def randomDate(start, end):
format = '%Y-%m-%d %H:%M:%S'
stime = time.mktime(time.strptime(start, format))
etime = time.mktime(time.strptime(end, format))
ptime = stime + random.random() * (etime - stime)
return time.strftime(format, time.localtime(ptime))
#Name der Ausgabedatei
OUTPUT_FILE = "TestData.sql"
#Anzahl der zu registrierenden Daten
RECORD_COUNT = 10
#Auszuführende SQL-Befehlszeichenfolge
sqlCommands = ""
#Geben Sie die zu verwendende Datenbank an(Diesmal CreateTestData)
sqlCommands += "USE CreateTestData;\n"
#Generieren Sie INSERT-Anweisungen für die Anzahl der zu registrierenden Daten
for _ in range(RECORD_COUNT):
#Erzeugung von zu registrierenden Zufallsdaten
name = randomName()
age = randomAge()
date = randomDate("2014-6-28 00:00:00", "2015-6-28 00:00:00")
#Generieren Sie eine Insert-Anweisung aus zufälligen Daten
sqlCommands += "INSERT INTO user " \
"(user_name, user_age, created_at) " \
"VALUES ('{}', '{}', '{}');\n"\
.format(name, age, date)
#Schreiben Sie den generierten SQL-Befehl in eine Datei
f = open(OUTPUT_FILE, 'w')
f.write(sqlCommands)
f.close()
Durch Ausführen des obigen Programms wird eine Datei mit dem Namen TestData.sql im selben Verzeichnis generiert. Wenn es erfolgreich generiert werden kann, lautet der Inhalt von TestData.sql wie folgt, und INSERT-Anweisungen für die Anzahl der registrierten Daten werden beschrieben.
TestData.sql
USE CreateTestData;
INSERT INTO user (user_name, user_age, created_at) VALUES ('Jiro Sato', '39', '2015-04-28 04:08:08');
INSERT INTO user (user_name, user_age, created_at) VALUES ('Jiro Suzuki', '60', '2015-06-25 23:37:52');
INSERT INTO user (user_name, user_age, created_at) VALUES ('Saburo Tanaka', '40', '2015-04-20 04:56:53');
・
・
・
Um die Testdaten zu registrieren, führen Sie die generierte Skriptdatei wie oben gezeigt aus und überprüfen sie.
Terminal
#Melden Sie sich bei MySQL an
mysql -u root -p
Enter password:
・
・
・
#Registrierung von Testdaten
mysql> SOURCE TestData.sql
Database changed
Query OK, 1 row affected (0.01 sec)
Query OK, 1 row affected (0.00 sec)
・
・
・
#Überprüfen Sie, ob die Daten registriert wurden
mysql> select * from user;
+---------+--------------+----------+---------------------+
| user_id | user_name | user_age | created_at |
+---------+--------------+----------+---------------------+
| 1 |Jiro Sato| 39 | 2015-04-28 04:08:08 |
| 2 |Jiro Suzuki| 60 | 2015-06-25 23:37:52 |
| 3 |Saburo Tanaka| 40 | 2015-04-20 04:56:53 |
| 4 |Saburo Sato| 77 | 2015-04-08 02:46:19 |
| 5 |Jiro Sato| 57 | 2014-11-17 11:21:06 |
| 6 |Taro Takahashi| 83 | 2014-09-20 07:57:11 |
| 7 |Hanako Tanaka| 24 | 2014-11-17 00:51:38 |
| 8 |Jiro Takahashi| 89 | 2014-11-29 20:22:24 |
| 9 |Taro Tanaka| 38 | 2015-02-26 18:04:42 |
| 10 |Jiro Sato| 13 | 2014-09-26 13:14:35 |
+---------+--------------+----------+---------------------+
10 rows in set (0.00 sec)
Es wurde bestätigt, dass 10 Probendaten erfolgreich registriert wurden.
Ich konnte die Daten registrieren, indem ich eine Skriptdatei generierte, um Testdaten zu erstellen und die Skriptdatei auszuführen. Mit zunehmender Anzahl von Tabellen und Spalten können Sie Testdaten für jede Tabelle und Spalte registrieren, indem Sie das Programm entsprechend erweitern.
Lassen Sie uns das Entwicklungsleben genießen!
Recommended Posts