(コピペしていつでも使えるよう、ソースを載せておく)
■実行して作成されるファイル例■
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万行くらいまでにしておいた方が良さそうか。
それより大きいとファイルサイズが大きすぎると感じる(普通に書き込みより読込みの方が時間がかかる)。