5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Talend】テストデータ作成

Last updated at Posted at 2019-06-03

概要

Talendで、テストデータを作成するジョブを作ります。
レコードを作成するコンポーネントとして用意されている
tRowGenerator を使用し、SQLiteのテーブルにテストデータを登録します。

環境準備

SQLiteのインストール

SQLiteのページからWindows用のバイナリをダウンロードしてください。
SQLite Download Page
sqlite-tools-win32-x86-3270200.zip
※サンプルテーブルの作成を行いたいので、コマンドライン付きをダウンロードします。

任意のフォルダ C:\talend\sqlite に展開します。

テーブル作成

データベース(sample.db)とテストデータ作成用のテーブル(TESTDATA)を作成します。

> cd C:\talend\sqlite
> sqlite3 sample.db
> sqlite> CREATE TABLE TESTDATA(
   ...>  ID        INT
   ...> ,ACCOUNT   TEXT
   ...> ,BDATA     TEXT
   ...> ,STATUS    INT
   ...> ,RES       TEXT);

※SQLiteは、カラムの桁数を持たないことに気付いたのですが、
 今回はこのままいくことにします。

tRowGenerator でのテストデータ作成

Talendジョブ作成

DB接続のメタデータ

テストデータテーブルのカラム情報については、
1カラムずつ登録することもできますが、
メタデータから一度に登録する方法で手間を省きます。

TalendOpendStudioを起動し、上記作成したSQLiteのテーブルに接続します。

testdata_01.jpg
メタデータ -> DB接続定義 -> 接続定義

testdata_02.jpg
名前に任意の接続名(sqlite3)を設定します。

testdata_03.jpg
データベース接続情報を設定して、テスト接続ボタンを押下します。

ファイル:C:/talend/sqlite/sample.db

testdata_04.jpg
接続成功することを確認して、Finishボタンを押下します。
任意の接続名(sqlite3)が作成されました。

testdata_05.jpg
任意の接続名(sqlite3)を選択、右クリックして、スキーマの取得を行います。

testdata_06.jpg

testdata_08.jpg

testdata_09.jpg
メタデータに追加されました。

コンポーネントからメタデータの使用

ジョブを作成し、「tSQLiteconnection」コンポーネントを追加します。
testdata_10.jpg
プロパティタイプに、リポジトリを選択し作成したメタデータからSQLiteを選択します。
testdata_12.jpg

tRowGeneratorの設定

「tRowGenerator」コンポーネントを追加し、スキーマにメタデータから
TESTDATAスキーマを選択します。

testdata_13.jpg

testdata_14.jpg

RowGeneratorエディターの設定
testdata_15.jpg

各カラムに指定したい値を設定します。
testdata_16.jpg

作成する行数は、「生成する行数」で指定します。

カラム        タイプ       関数 環境変数 備考
ID int Numeric.sequence
(String int,int)
「sequence identifier=s1」
「start value=1」
「step=1」
連番を設定
ACCOUNT String カスタマイズ
パラメータ
"ACOUNT" + String.format(
"%06d", Numeric.sequence("s2",1,1))
先頭に「ACCOUNT」という文字列と
6桁連番をゼロ埋め
BDATE String カスタマイズ
パラメータ
TalendDate.formatDate("yyyy-MM-dd",
TalendDate.getRandomDate("2017-01-01","2018-12-31") )
指定期間のランダムな日付を設定
STATUS int Numeric.sequence
(String int,int)
「min value=>0」
「max=>2」
最小値と最大値を設定
RES String TalendString.
getAsciiRandomString(int)
「length=>6」 ランダムな文字列を設定

結果は、プレビューや、tLogRowコンポーネントで確認できます。
※デフォルトで選択できる関数は、スキーマのタイプによって制限があります。
 一覧の一番上にある「・・・」を選択するとカスタマイズパラメータとして
 式ビルダで、自由に関数を設定することができます。

使用できる関数は、ルーチン一覧 を参考にしてください

SQLiteへの登録

「tRowGenerator」コンポーネントで作ったレコードを
「tSQLiteOutput」と「tSQLiteCommit」コンポーネントを使ってTESTDATAテーブルに登録します。

testdata_17.jpg

まとめ

下記のレコードが、登録されました。

sqlite>  select * from TESTDATA;
1|ACOUNT000001|2018-06-09|1|0kCEtY
2|ACOUNT000002|2017-02-28|2|yAFV18
3|ACOUNT000003|2017-10-20|0|RAlhVv
4|ACOUNT000004|2017-07-21|2|f1YKEZ
5|ACOUNT000005|2017-08-27|2|yt84HR
6|ACOUNT000006|2017-01-06|0|GrLCFa
7|ACOUNT000007|2017-05-07|1|OVs3ZO
8|ACOUNT000008|2018-11-11|0|o815fV
9|ACOUNT000009|2017-08-05|1|flR0ne
10|ACOUNT000010|2018-09-30|2|yKJuvb
sqlite>

関数になれると、テストデータ作りが、かなり簡単になりそうですね。

参照記事

SQLiteコマンドラインツールのダウンロードとインストール
手間がかかるテストデータもTOSを使えばノープログラミングで作成できる
サンプルデータを持ったテーブルを簡単に作成する
ルーチン一覧

5
2
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
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?