DataSpider & MongoDB 最終回です。
せっかくなので、もうちょっと遊んでみます。
MongoDB にデータを追加
MongoDB(ドキュメント指向DB)の良さを思い出してみましょう。
「スキーマ定義をしなくても良い」という点ですね!
前回は2つのデータを入れましたが、いずれも同じスキーマでしたので、
ちょっと違うスキーマを持つデータを入れてみます。
> use sample
switched to db sample
> db.books.insert({id:3,title:"初めての PIMSYNC",price:80,author:"連携 太郎"})})
WriteResult({ "nInserted" : 1 })
今度は author というスキーマと一緒にデータを入れてみます。
こんな時でも DataSpider を使っていると連携は簡単です。
設定済みのアイコンを開いて、右下の「スキーマ定義の更新」ボタンを押すと先ほど定義したスキーマが追加されます。
スキーマ定義がバラバラだった場合
ドキュメント指向DBの良さでもありますが、MongoDB はスキーマがいくらでも追加できてしまいます。
これは素人の想像ですが、似たようなスキーマを定義してしまう人がいるのではないでしょうか。例えばこんな感じに・・・
> use sample
switched to db sample
> db.books.insert({id:4,title:"DataSpider 問題集",kakaku:800})
WriteResult({ "nInserted" : 1 })
既に price というスキーマがあるのに kakaku というスキーマを作ってしまったとします。
当然、別々のスキーマのデータとして扱われますが、実際には kakaku も prise も同等に扱って欲しいデータのはずです。
ここで、DataSpider の「文字列連結」の機能を使います。
この機能を使うと、kakaku のデータと price のデータを結合して出力してくれるため、どちらかのスキーマにデータが入っていれば、出力時には1つのカラムに出力してくれます。
例えば、
id:2,title:"Thunderbus ガイドブック",price:300
id:4,title:"DataSpider 問題集",kakaku:800
のデータがあった場合、文字列連結をせずにCSVで出力した場合には
2,Thunderbus ガイドブック,300,
4,DataSpider 問題集,,800
というように、空白のカラムを含んで出力されますが「文字列連結」を行った後に出力すると
2,Thunderbus ガイドブック,300
4,DataSpider 問題集,800
といったイメージで、無駄なカラムの出力が無くなります。素晴らしい!
まとめ
DataSpider を使うとこのようにデータの加工もアイコンベースで設定できてしまうので、MongoDB のようにスキーマ定義が不規則な環境でもデータ連携が超簡単です!
ということで、私の Qiita デビュー作は以上で終了です。
DataSpider & MongoDB の組み合わせが気になった方は是非アプレッソまで。