RDBよりデータを取得し当日日付のデータのみを別のRDBに書き込む

ASTERIA Warpでこんなことできる?…と思うことなど、ご遠慮なく...(^_-)

RDBよりデータを取得し当日日付のデータのみを別のRDBに書き込む

投稿記事by masa102 » 2012年8月20日(月) 10:58

ある、RDBよりデータを取得し、それを他のRDBに書き込む際に
当日日付のものだけinsertしたいと思っております。

具体的には、
①RDB get コンポーネントよりデータを取得
②マッパー関数RDB Putとのマッピングを行う。
③RDB Putコンポーネントの配置
④End

とコンポーネントを配置しております。

様々な方法があると思いますが、
①Rdb get でのSQLでの条件選択は行いたくない。
②RDBに書き込む際に条件を指定したいと
思っております。

マッパー内で分岐を行うのかはたまた、マッパー関数の後に何かコンポーネントを入れるのか?
何かヒントがあればお願い致します
masa102
 
記事: 14
登録日時: 2012年8月17日(金) 08:53

Re: RDBよりデータを取得し当日日付のデータのみを別のRDBに書き込む

投稿記事by itete » 2012年8月23日(木) 14:04

RDBGet - Mapper - RecordSQL - Mapper - RDBPut と接続します。
Mapper内ではNow関数からEmbed関数へ接続し、動的に
select * from in[1] where field[2] >= '2012-08-23' and field[2] < '2012-08-24'
のような文字列を作成して RecordSQL のSQL文にマッピング。指定した日付のレコードのみを残します。

または、RDBGet - Mapper - RecordFilter - Mapper - RDBPut と接続し、
同様に、$record.DATETIME ~= "2012-08-23" のような文字列を作成して RecordFilter の条件式にマッピング。
日付項目に「2012-08-23」という文字を含むレコードのみを残す方法も考えられます。

いずれも、RDBGetで条件指定しないと大量のデータを読み込むことになり、メモリ不足で異常終了と
なる可能性が考えられるため、RDBGetでループを開始すべきだと思います。
また、データが無かった場合に RDBPut を行わないよう、BranchStart で分岐させるなども必要かと思います。

通常は、RDBGet のSQL文にDBサーバのシステム日付と比較する条件を指定しておく、またはSQLパラメータを
使用して RDBGet前のマッパーで Now関数からSQLパラメータに日付をマッピングするなどして、
必要なレコードのみをSELECTする方法をとると思います。
itete
 
記事: 157
登録日時: 2007年1月09日(火) 12:15

Re: RDBよりデータを取得し当日日付のデータのみを別のRDBに書き込む

投稿記事by masa102 » 2012年8月24日(金) 20:10

ご返答ありがとうございます。

私のほうで変なこだわりがあるということがご返答からわかりました。

RDBGETのほうで制御を行いたいと思います。

その後、Insert時2重にデータが入らないように制御を考えたいと思います。

ありがとうございました。
masa102
 
記事: 14
登録日時: 2012年8月17日(金) 08:53


Return to ビギナールーム

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[3人]