mysql(48) : java生成随机测试数据

代码 


import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;

public class 生成随机测试数据 {

    private static Mysql8Instance m;
    private static List<String> tables = new ArrayList<>();
    private static Integer line;


    public static void main(String[] args) {
        生成随机测试数据 t = new 生成随机测试数据();
        t.m = new Mysql8Instance("127.0.0.1", 3306, "test", "root", "123456");
        t.m.setReturnColumnName(true);
        t.tables.add("test1");
        t.line = 100;
        t.handle();
    }

    private static void handle() {
        for (String table : tables) {
            run(table);
        }
    }

    private static void run(String table) {
        String db = m.getDatabase();
        if (table.contains(".")) {
            String[] strings = table.split("[.]");
            db = strings[0];
        }
        String sql = "select\n" +
                "\ttable_schema as '库名',\n" +
                "\ttable_name as '表名',\n" +
                "\tcolumn_name as '字段名',\n" +
                "\tcolumn_type as '字段类型',\n" +
                "\tcolumn_comment as '字段说明' ,\n" +
                "\tIS_NULLABLE '是否可为空'\n" +
                "from\n" +
                "\tinformation_schema.columns\n" +
                "where\n" +
                "\ttable_schema = '" + db + "'\n" +
                "\tand table_name = '" + table + "' ;";
        List<List<String>> query = m.query(sql);
        query.remove(0);
        StringBuffer in = new StringBuffer();
        in.append("insert into ").append(table).append(" (");
        for (List<String> list : query) {
            in.append("`").append(list.get(2)).append("`,");
        }
        in.delete(in.length() - 1, in.length());
        in.append("\n)values");
        for (Integer i = 1; i <= line; i++) {
            in.append("(");
            for (List<String> list : query) {
                String rs = generate(list.get(3));
                if (rs != null) {
                    rs = "'" + rs + "'";
                } else {
                    rs = "null";
                }
                in.append(rs).append(",");
            }
            in.delete(in.length() - 1, in.length());
            in.append(")\n,");
        }
        in.delete(in.length() - 1, in.length());
        in.append(";");
        m.execute(in.toString());
        System.out.println("表[" + table + "]生成测试数据完成 size:" + line);
    }

    private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:ss:mm");
    private static Random r = new Random();


    public static String generate(String columnType) {
        if (columnType.contains("bigint")) {
            return String.valueOf(r.nextInt(1000) * 10000L);
        }
        if (columnType.contains("datetime")) {
            return sdf.format(new Date());
        }
        if (columnType.contains("double")) {
            return String.valueOf(r.nextDouble() * 10000);
        }
        if (columnType.contains("varchar")) {
            return generateRandomString(4);
        }
        if (columnType.contains("int")) {
            return String.valueOf(r.nextInt(1000));
        }
        return null;
    }

    private static final String[] CHARS = new String[]{"1", "2", "3", "4", "5",
            "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H",
            "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "U", "V",
            "W", "X", "Y", "Z"};

    public static String generateRandomString(int bit) {
        StringBuilder sb = new StringBuilder(20);
        Random r = new Random();
        for (int i = 0; i < bit; i++) {
            int num = r.nextInt(CHARS.length);
            sb.append(CHARS[num]);
        }
        return sb.toString();
    }
}

Mysql8Instance类如下

mysql(30) : java管理mysql8(开发用轻量版)_java mysql8-CSDN博客

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 生成 MySQL 测试数据的工具是一种能够帮助开发者生成大量数据并快速向数据库中插入数据的工具。这种工具可以帮助开发者加快开发进程,减小因为数据不足而造成的测试问题。以下是一些常见的生成 MySQL 测试数据的工具: 1. Mockaroo:Mockaroo 是一个在线的数据生成器,可以生成多种格式的数据,并通过 API 或 CSV 导出数据。开发者可以根据需要轻松设定数据类型并生成大量的假数据。 2. DataFactory:DataFactory 是一款流行的免费数据生成器,可以生成 SQL、CSV 和 XML 格式的数据。它支持均匀或随机生成数据、舍入、分布等多种选项,并可以通过 Web UI 或 REST API 使用。 3. dbForge Data Generator for MySQL:dbForge Data Generator for MySQL 是一款强大的工具,专门用于生成大量数据用于测试。它提供了许多配置选项,包括数据类型、约束、表关系和自定义函数。 4. SQL Data Generator:SQL Data Generator 是一款面向 MySQL 和其他流行数据库的数据生成器。它提供了多种数据类型、数据生成方法和数据集选项,并可以轻松生成数百万条数据。 这些生成 MySQL 测试数据的工具,可以帮助开发者更好的测试数据库架构,并能够加快开发周期,提高开发效率。开发者可以根据需求选择不同的工具,以便满足测试需求。 ### 回答2: MySQL是一种常用的数据库,它的测试数据对于软件开发过程中的测试非常重要。为了生成MySQL测试数据,我们可以使用一些工具。 首先,MySQL自带了一些生成测试数据的函数,例如RAND()和UUID()等。这些函数可以生成随机的数字和唯一的标识符,用于测试数据的填充和建表。 其次,还有一些第三方工具可用于生成MySQL测试数据,例如DataFiller、dbForge Data Generator和dbForge Studio等,这些工具具有可视化的用户界面和丰富的选项。使用这些工具可以生成指定数量、范围和规则的测试数据,并且可以自动填充整个数据库中的数据。 最后,我们还可以编写脚本和程序来生成MySQL测试数据。例如,我们可以使用Python和SQLAlchemy编写脚本来生成测试数据,或者使用Java和JDBC编写程序来批量插入数据。这些方法需要一定的编程知识和技能,但是可以灵活地生成各种类型的测试数据。 总之,生成MySQL测试数据的工具有很多种,我们可以根据实际需求选取最合适的工具来进行数据生成。在软件开发过程中,测试数据的质量和数量往往直接影响到软件质量和稳定性,因此生成好的测试数据对于保证软件的质量和稳定性是非常重要的。 ### 回答3: 生成MySQL测试数据的工具有很多,其中比较常用的有以下几种: 1. 数据库自带工具:MySQL提供了很多工具来生成测试数据,如mysqldump、mysqlslap、mysqladmin等。其中mysqldump是备份和恢复MySQL数据库中常用的命令,也可以利用其生成测试数据。 2. 第三方开源工具:比较流行的有faker、dbForge Data Generator、DataFly、Test Data Generator等。这些工具可以根据用户需求自动生成各种测试数据,如随机生成姓名、性别、邮箱、地址等。 3. 编程语言自带库:比如Python的faker库、Java的随机数类等,可以方便地生成各种测试数据,且可以在程序中方便地使用。 无论采用哪种工具,生成MySQL测试数据的目的都是为了保证系统在真实数据环境下的正常运行。因此,在使用这些工具的时候,需要注意生成数据的规模、数据类型的正确性以及数据的有效性等问题,以便为系统性能测试或数据分析提供准确的基础数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值