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

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

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

```txt: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
```

```txt: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
```

```txt: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
```

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


```java: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万行くらいまでにしておいた方が良さそうか。
それより大きいとファイルサイズが大きすぎると感じる（普通に書き込みより読込みの方が時間がかかる）。