简体   繁体   English

如何使用java生成带有随机数据的大型csv

[英]How to generate large csv with random data using java

如何使用带有一些独特数据的 java 以 csv 格式生成百万行记录。

This can give you an idea of how to build a generator.这可以让您了解如何构建生成器。 The random data can be generated using Random class and adapting it to the data you need to generate.可以使用 Random 类生成随机数据,并将其调整为您需要生成的数据。

public interface ICsvRandomRenerator{
  /* Adds the field definition to an array list that describes the csv */
  public void addFieldDefinition(FieldDefinition fieldDefinition);

  /* Runs a loop for the number of records needed and for each one it
     goes through the FieldDefinition ArrayList, generates the random
     data based on field definition, and adds it to the curret
     record. Last field changes to a new record*/

  public void generateFile(String fileName);
};

public class FieldDefinition(){
    String fieldName;
    String fieldType; //Alphabetic, Number, Date, etc..
    int length;
    <getters and setters>
}

public abstract class CsvRandomGenerator implements ICsvRandomGenerator{
    ArrayList<FieldDefinition> fields = new ArrayList<>();

    <@Override interface classes to implement them >.

    private String generateRandomAlpha();

    private String generateRandomDate();

    private String generateRandomNumber();

    ...
}

Check out this tutorial .查看本教程

The code can be quite simple:代码可以很简单:

MockNeat m = MockNeat.threadLocal();
final Path path = Paths.get("./test.csv");

m.fmt("#{id},#{first},#{last},#{email},#{salary}")
 .param("id", m.longSeq())
 .param("first", m.names().first())
 .param("last", m.names().last())
 .param("email", m.emails())
 .param("salary", m.money().locale(GERMANY).range(2000, 5000))
 .list(1000)
 .consume(list -> {
            try { Files.write(path, list, CREATE, WRITE); }
            catch (IOException e) { e.printStackTrace(); }
 });

And the possible result is:可能的结果是:

0,Ailene,Greener,auldsoutache@gmx.com,4.995,59 €
1,Yung,Skovira,sereglady@mail.com,2.850,23 €
2,Shanelle,Hevia,topslawton@mac.com,2.980,19 €
3,Venice,Lepe,sagelyshroud@mail.com,4.611,83 €
4,Mi,Repko,nonedings@email.com,3.811,38 €
5,Leonie,Slomski,plumpcreola@aol.com,4.584,28 €
6,Elisabeth,Blasl,swartjeni@mail.com,2.839,69 €
7,Ernestine,Syphard,prestoshod@aol.com,3.471,93 €
8,Honey,Winfrey,pseudpatria@email.com,4.276,56 €
9,Dian,Holecek,primbra@att.net,3.643,66 €
10,Mitchell,Lawer,lessjoellen@yahoo.com,3.260,92 €
11,Kayla,Labbee,hobnailmastella@mail.com,2.504,99 €
12,Jann,Grafenstein,douremile@verizon.net,4.535,70 €
13,Shaunna,Uknown,taughtclifton@gmx.com,3.028,81 €
...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM