大量のデータをCSVファイル等に出力する際は、出力データ作成用のプログラムを作成しておくと便利である。今回は、以下のUSER_DATAテーブルに取込を行うためのCSVファイルを出力するプログラムを作成してみたので、共有する。

前提条件
下記記事のIntelliJ IDEA Community版をダウンロード済であること。
また、下記のように、「demoJava」というJavaプロジェクトを作成済であること。

なお、IntelliJ IDEA上でJavaプロジェクトを作成する方法については、IntelliJ IDEA Community版をダウンロードする記事内の、「IntelliJ IDEA上でのJavaプロジェクトの作成・実行」を参照のこと。
サンプルプログラムの作成
作成したサンプルプログラムの構成は以下の通り。

なお、上記の赤枠は、今回新規で作成したプログラムである。
ソースコードの内容は以下の通りで、C:\tmpフォルダ下に、「user_data_(fileIdxの値).csv」というファイルを作成し、IDが(startIdxの値)から(dataCnt数)分のデータを出力するようになっている。
package demo.java;
import java.io.File;
import java.io.FileWriter;
public class MakeUserDataCsv {
/** ファイル名に付与するインデックス */
private static final int fileIdx = 1;
/** IDの開始位置 */
private static final int startIdx = 1;
/** 書き込みデータ数 */
private static final int dataCnt = 5;
/**
* テスト用CSVデータを作成するメイン処理
* @param args 起動時に受け取る引数
*/
public static void main(String[] args) {
// 書き込み用ファイルを作成する(ファイルが存在する場合は上書き)
String newFileName = "c:\\tmp\\user_data_" + fileIdx + ".csv";
File newFile = new File(newFileName);
try (FileWriter fw = new FileWriter(newFile)) {
// ファイルの先頭にカラム行を設置する
fw.write("ID,NAME,BIRTH_YEAR,BIRTH_MONTH,BIRTH_DAY,SEX,MEMO");
fw.write(System.lineSeparator());
// ファイルにテストデータを書き込む
// その際、生年月日は2012年1月15日で固定とする
for (int i = startIdx; i < startIdx + dataCnt; i++) {
String zenkakuNum = changeNumHalfToFull(i);
int sexCode = (i - 1) % 2 + 1;
fw.write(i + ",\"テスト プリン" + zenkakuNum + "\",2012,1,15,\""
+ sexCode + "\",\"テスト" + zenkakuNum + "\"");
fw.write(System.lineSeparator());
}
System.out.println("ファイルの書き込みが完了しました。ファイル名:"
+ newFileName + ",データ数:" + dataCnt);
} catch (Exception ex) {
System.err.println(ex);
}
}
/**
* 半角数字を全角数字に変換する.
* @param num 変換前の半角数字
* @return 全角数字
*/
private static String changeNumHalfToFull(int num) {
String result = null;
StringBuilder sb = new StringBuilder(String.valueOf(num));
for (int i = 0; i < sb.length(); i++) {
int c = (int) sb.charAt(i);
if (c >= 0x30 && c <= 0x39) {
sb.setCharAt(i, (char) (c + 0xFEE0));
}
}
result = sb.toString();
return result;
}
}サンプルプログラムの実行結果
サンプルプログラムの実行結果は、以下の通り。
1) fileIdx, startIdx, dataCntが以下の状態で実行したときのコンソールログと出力されたCSVファイルの内容は以下の通りで、「user_data_1.csv」というファイルにID=1~5のデータが出力されていることが確認できる。


2) fileIdx, startIdx, dataCntが以下の状態で実行したときのコンソールログと出力されたCSVファイルの内容は以下の通りで、「user_data_2.csv」というファイルにID=21~30のデータが出力されていることが確認できる。


要点まとめ
- 大量のデータをCSVファイル等に出力する際は、出力データ作成用のプログラムを作成しておくと便利である。









