2009-03-17 31 views
1

&を生成するスクリプトをいくつか用意しています。大量のデータを収集して、データベースを大量に追加するために、また今後大量のデータベースを追加する必要があります。リレーショナルデータの多くを、シードデータとして、および製造中に断続的にレールデータベースにインポートする最良の方法は何ですか?Rails:データをインポートするスクリプト

まだ私のスクリプトの出力フォーマットは決まっていませんが、データの構造は主に私のレールモデルを反映しており、インポートを保存したいhas_manyアソシエーションが含まれています。

私はかなりのグーグルグーグルで、ar拡張子とseed_fuと灯具の使用のアイデアを見てきました。

ar拡張子を使用すると、すべての例は、関連性を扱うことや重複した更新を避けることに言及していない、staightforward csv imports(主な使用例であると思われる表ダンプの可能性が高い)のようです。私の場合、私は自分の複雑さを自分自身で処理する用意ができていない限り、私のスクリプトにはID、外部キー、またはテーブルを結合する必要はありません。

seed_fuを使用すると、データ作成の関係性を扱うことができるように見えますが、IDを指定する必要があります(どれがプロダクションで利用できるのかをどのように知ることができますか)。

でも、オブジェクトに名前を付ける必要がありますが(名前には数字だけを使用することになります)、偶然の重複を避ける方法がわかりません。

または、ローカルのsqliteデータベースにデータを入れてからストレートテーブルのダンピングテクニックを使用する方が良いでしょうか?

答えて

1

最近、いくつかのインポートされたデータが必要なレールアプリが手渡され、すべてレーキタスクで処理されました。すべてのデータはCSV形式のファイル形式で提供され、必要に応じてクラス/モデルなどで処理されました。これは、データがどこに行き、どのように適用されているかを非常に簡単に知ることができたため、私がシステムを初めて使用しているときには比較的うまく機能しました。データをインポートする際に、IDの競合や衝突をチェックし、それに応じて処理することができます。

2

これまではCSVファイルを使用していました。私はデータを収集し、アクセス可能なCSVファイルに配置するcronジョブを持っています。次に、CSVを探すrakeタスク(cronでは、しかし別のボックスにも)があります。もしあれば、CSV行からオブジェクトを作成するモデルメソッドを呼び出します。

モデルには、CSV行をとるcsv_create_or_updateメソッドがあります。この手法では、IDの問題を回避し、データの入力を検証することもできます。

関連する問題