批量生成测试数据
本文将向您介绍如何使用 Shell 脚本、存储过程和 ODC 批量生成测试数据。
前提条件
- 您已部署 seekdb。更多有关部署 seekdb 的信息,请参见 部署概述。
- 您已拥有
CREATE、INSERT和SELECT权限。更多有关查看当前用户权限的相关操作信息,请参见 查看用户权限。如果不具备该权限,请联系管理员为您授权,用户授权的相关操作请参见 直接授予权限。
使用 Shell 脚本批量生成测试数据
通过编写 Shell 脚本来批量生成 SQL 脚本可以有效简化插入大量测试数据的过程,避免手动编写繁琐的 SQL 语句。这种方式可以根据需求生成大量的测试数据,提高效率并减少手动操作的工作量。
操作步骤
- 创建测试数据库和测试表。
- 创建 Shell 脚本。
- 运行 SQL 脚本。
- 查看数据。
步骤一:创建测试数据库和测试表
使用数据库管理工具(如命令行或图形化工具)创建一个用于存储测试数据的数据库,并在数据库中创建相应的测试表结构。
-
连接到 seekdb。
示例如下:
mysql -hxxx.xxx.xxx.xxx -P2881 -uroot -p****** -A -
创建测试数据库。
示例如下:
执行下面 SQL 语句,创建测试数据库
test_sql_file_db。CREATE DATABASE test_sql_file_db;更多有关创建数 据库的详细信息,请参见 创建数据库。
-
创建测试表。
示例如下:
执行下面 SQL 语句,创建测试表
test_sql_file_db.test_sql_file_tbl1。CREATE TABLE test_sql_file_db.test_sql_file_tbl1 (id INT, name VARCHAR(50), email VARCHAR(50));更多有关创建表的详细信息,请参见 创建表。
步骤二:创建 Shell 脚本
使用文本编辑器创建一个 Shell 脚本文件,可以使用 .sh 作为文件的扩展名。在 Shell 脚本中,使用输出重定向符号(> 或 >>)将生成的测试数据写入到一个 SQL 脚本文件中。在循环或遍历过程中,将生成的数据以 SQL(INSERT)语句的形式写入到 SQL 脚本文件中。
-
打开终端。
-
创建 Shell 脚本文件。
使用
vi或vim编辑器创建一个新的 Shell 脚本文件。示例如下:
执行以下命令,编写一个 Shell 脚本
generate_sql.sh。vi generate_sql.sh -
进入编辑模式。
按下 i 键或者 Insert 键进入
vi或vim编辑器的插入模式,可以在插入模式下编辑文件内容。 -
编写 Shell 脚本逻辑。
在编辑模式下,编写 Shell 脚本的逻辑和命令。这些命令可以是 Shell 命令、条件语句、循环结构、函数等。
示例如下:
generate_sql.sh脚本内容如下:#!/bin/bash
# 定义 SQL 文件名
SQL_FILE="insert_test_sql_file_tbl1.sql"
# 创建 SQL 文件
touch $SQL_FILE
# 定义 SQL 语句
INSERT_SQL="INSERT INTO test_sql_file_tbl1 (id, name, email) VALUES "
# 循环生成 100,000 条用户记录
for ((i=1; i<=100000; i++))
do
user_id=$i
user_name="user_$i"
user_email="user_$i@example.com"
values="($user_id, '$user_name', '$user_email')"
if (($i == 100000))
then
INSERT_SQL="$INSERT_SQL$values;"
else
INSERT_SQL="$INSERT_SQL$values, "
fi
done
# 将 SQL 语句写入 SQL 文件中
echo $INSERT_SQL >> $SQL_FILE信息-
该脚本将生成一个名为
insert_test_sql_file_tbl1.sql的 SQL 文件,并在其中插入了 100,000 条用户记录。您可以根据需要修改 SQL 语句和循环生成的用户记录数量。 -
在进行大量数据插入时,请提前关注相关服务器的资源使用情况,避免由于资源使用情况而导致数据插入失败或性能下降的情况。
-
-
保存文件。
按下 Esc 键退出插入模式,并输入
:wq命令保存文件并退出vi或vim编辑器。 -
运行 Shell 脚本文件。
在终端中执行创建的 Shell 脚本将生成一个 SQL 脚本。
示例如下:
执行以下命令,运行创建的 Shell 脚本。该命令会在当前目录生成一个包含 100,000 条
INSERT语句并且名为insert_test_sql_file_tbl1.sql的 SQL 脚本文件。sudo bash generate_sql.sh
步骤三:运行 SQL 脚本
可以使用命令行界面执行下面的命令来导入 SQL 脚本文件中的数据。
mysql -h$host -u$user_name -P$port -p$password -D$database_name < $sql_file
参数说明:
-
$host:提供 seekdb 连接 IP。 -
$port:提供 seekdb 连接端口。默认是2881,在部署 seekdb 时可自定义。 -
$database_name:需要访问的数据库名称。提示连接 seekdb 的用户需要拥有该数据库的
CREATE、INSERT和SELECT权限。更多有关用户权限的信息,请参见 权限分类。 -
$user_name:提供连接账户。格式:用户名。 -
$password:提供账户密码。 -
$sql_file:SQL 脚本文件名称。信息在执行 SQL 脚本文件时,请使用绝对路径指定 SQL 脚本文件的路径。
示例如下:
执行下面的命令,该命令将连接到指定的 seekdb 服务器,并将 SQL 脚本文件中的所有 INSERT 语句逐条导入到名为 test_sql_file_db 的数据库中,以向insert_test_sql_file_tbl1 表插入 100,000 条数据。
mysql -h127.0.0.1 -uroot -P2881 -p****** -Dtest_sql_file_db < /home/admin/test_data/insert_test_sql_file_tbl1.sql
步骤四:查看数据
执行下面 SQL 语句,查看 test_sql_file_db.test_sql_file_tbl1 中的数据行数。
SELECT count(*) FROM test_sql_file_db.test_sql_file_tbl1;
返回结果如下:
+----------+
| count(*) |
+----------+
| 100000 |
+----------+
1 row in set