0
1

More than 3 years have passed since last update.

テストデータ作成用javaテンプレート

Last updated at Posted at 2021-02-06

(コピペしていつでも使えるよう、ソースを載せておく)

■実行して作成されるファイル例■
1ファイルあたりの行数:10
作成ファイル数:3

testdata_1.csv
00000001,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
00000002,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
00000003,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
00000004,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
00000005,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
00000006,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
00000007,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
00000008,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
00000009,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
00000010,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
testdata_2.csv
00000011,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
00000012,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
00000013,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
00000014,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
00000015,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
00000016,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
00000017,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
00000018,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
00000019,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
00000020,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
testdata_3.csv
00000021,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
00000022,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
00000023,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
00000024,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
00000025,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
00000026,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
00000027,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
00000028,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
00000029,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9
00000030,カラム1,カラム2,カラム3,カラム4,カラム5,カラム6,カラム7,カラム8,カラム9

■使い方■
★★★のところの値を指定して実行。

TestDataCreate.java

package test;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class TestDataCreate {

    public static void main(String[] args) {

        System.out.println("処理開始");
        long startTime = System.currentTimeMillis();

        //★★★出力先のフォルダを指定してください★★★
        String folder = "C:\\Users\\circu\\Downloads\\test\\";

        //★★★作成するファイル名を指定してください★★★
        String nameOfOutputFileName = "testdata";

        //★★★1ファイルあたりの作成行数を指定してください★★★
        int number = 500000;

        //★★★最初の出力ファイルの枝番を指定してください★★★
        int FileBranchNumber = 1;

        //★★★最後の出力ファイルの枝番を指定してください★★★
        int finalFileBranchNumber = 20;

        String extension = ".csv";
        int primary_key = 1;

        for (; FileBranchNumber <= finalFileBranchNumber; FileBranchNumber++) {

            String fileName = folder + nameOfOutputFileName +"_" + String.valueOf(FileBranchNumber) + extension;
            File file = new File(fileName);

            if(Files.exists(Paths.get(fileName))){
                System.out.println("※ファイルを上書きします。");
            }

            try (BufferedWriter bw = new BufferedWriter(new FileWriter(file))) {

                for (int i = 1 ; i <= number; i++,primary_key++) {

                    bw.append(String.valueOf(String.format("%08d", primary_key)));
                    bw.append(",");
                    bw.append("カラム1");
                    bw.append(",");
                    bw.append("カラム2");
                    bw.append(",");
                    bw.append("カラム3");
                    bw.append(",");
                    bw.append("カラム4");
                    bw.append(",");
                    bw.append("カラム5");
                    bw.append(",");
                    bw.append("カラム6");
                    bw.append(",");
                    bw.append("カラム7");
                    bw.append(",");
                    bw.append("カラム8");
                    bw.append(",");
                    bw.append("カラム9");
                    bw.append("\n");

                    if (i == number) {
                        System.out.print("このファイルの最後の番号は:");
                        System.out.println(primary_key);
                    }
                }

                bw.flush();
                System.out.print(Paths.get(fileName).normalize().toString());
                System.out.println("を出力しました。");
                System.out.println("------------------------");

            } catch (IOException ex) {
                ex.printStackTrace();
            } finally {

            }
        }
        System.out.println("処理終了");
        long endTime = System.currentTimeMillis();
        System.out.println("処理時間:" + (endTime - startTime) + " ms");
    }
}

備考:1ファイルあたりの行数は最大でも500万行くらいまでにしておいた方が良さそうか。
それより大きいとファイルサイズが大きすぎると感じる(普通に書き込みより読込みの方が時間がかかる)。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1