如何在Java中生成大量随机CSV文件

Ťhis post was originally posted on my blog

The CSV format is a simple but commonly used format for exchanging data. Many applications support the import and export of information as CSV files. Due to the popularity of this format, there is a requirement for developers to generate large amounts of CSV files for testing. This is where my latest open source project SDGen comes into play.

小号DGen is a Java library that helps developers generate randomized data files for testing purposes. It supports CSV and Fixed Width formats, with more formats such as JSON planned for the future.

This guide will show you how to generate a simple CSV file using SDGen and Faker. Faker will be used to assist creating random values.

Maven

对于Maven项目,我们可以通过将以下xml插入项目的pom.xml文件中来添加所需的库。

<dependencies>
    <dependency>
        <groupId>au.com.anthonybruno</groupId>
        <artifactId>SdGen</artifactId>
        <version>0.3.0</version>
    </dependency>
    <dependency>
        <groupId>com.github.javafaker</groupId>
        <artifactId>javafaker</artifactId>
        <version>0.14</version>
    </dependency>
</dependencies>

Instructions

首先,我们需要通过编写以下代码来获取Faker实例:

    Faker faker = Faker.instance();

然后,我们可以使用fakerr实例生成诸如URL之类的值faker。internet()。url()和行星的名字faker。space()。planet()。

接下来,我们将使用SDGen的流利的构建器,可以为我们要创建的CSV文件创建架构。 首先,我们写:

    Gen.start()

然后,我们可以使用addField方法。addField接受2个参数:A串名称,它将用来标识产生的文件中的字段和一个发电机。 一种发电机是具有单一方法的简单界面生成。 这是创建随机值并将其添加到字段的方式。

我们将制作一个简单的CSV文件。 为此,我们将使用相应的名称添加“名”和“姓”列骗子为这些值生成值的方法:

    Gen.start()
        .addField("First Name", () -> faker.name().firstName())
        .addField("Last Name", () -> faker.name().lastName())

注意:使用lambdas(例如() -> faker.name().firstName()相当于写作:

new Generator() {
    @Override
    public Object generate() {
        return faker.name().firstName();
    }
}

我们还想添加一个“年龄”字段。 为此,我们可以使用SDGen的内置生成器。 我们可以给它一个合理的最小值和最大值,以限制它将生成的数字范围。SDGen提供所有原始类型的生成器。

Gen.start()
    .addField("First Name", () -> faker.name().firstName())
    .addField("Last Name", () -> faker.name().lastName())
    .addField("Age", new IntGenerator(18, 80))

接下来,我们指定使用生成多少行生成 method. We also want to select the format of the 生成d data. We will be using CSV to 生成 the data in CSV format. SDGen还支持固定宽度格式,并且将来将支持其他数据格式,例如JSON。

Gen.start()
    .addField("First Name", () -> faker.name().firstName())
    .addField("Last Name", () -> faker.name().lastName())
    .addField("Age", new IntGenerator(18, 80))
    .generate(1000) //1000 rows will be generated
    .asCsv()

最后,我们指定如何输出数据。 我们将使用到文件将信息放入文件的方法。

Gen.start()
    .addField("First Name", () -> faker.name().firstName())
    .addField("Last Name", () -> faker.name().lastName())
    .addField("Age", new IntGenerator(18, 80))
    .generate(1000)
    .asCsv()
    .toFile("people.csv");

就是这样! 运行代码将在项目的工作目录中生成一个CSV文件。 这是我运行时生成的一些数据:

First Name,Last Name,Age
Corrine,Berge,78
Gerald,Carter,63
Enid,Padberg,66
Eleanora,Murray,79
Coy,Okuneva,76
Jovan,Reynolds,77
Lane,Haag,48

For more information about SDGen, please visit it on Github.

Details

from: https://dev.to//aussieguy/how-to-generate-tons-of-random-csv-files-in-java-56e4

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值