1

プロジェクトを本番環境に移行するときにデータを入力する必要があるテーブルがいくつかあります。これらのテーブルにはそれぞれ数千行あります。現在、データを CSV ファイルに保存していますが、seed.rb ファイルを使用すると、CSV ファイルのデータをシード.rb 形式に合わせてフォーマットする必要があるため、面倒なようです。これがほんの一握りの行であれば、それほど問題にはなりません。このデータをロードするための最良/最も簡単な方法は何ですか?

4

5 に答える 5

1

おそらく、ちょっとしたカスタム スクリプトと、.csv ファイルをすばやく解析するための優れたツールを備えた、 faster_csv gemを使用するでしょう。次に、フィールドをモデル属性にマップできます。

これを TDD を介してモデル メソッドとして実装し、ActiveRecords の create メソッドを使用してインスタンスをインスタンス化します。これは、SQL を直接記述するよりも時間がかかりますが、データがすべてのモデル検証を通過するという点で安全であり、データの整合性に対する信頼が高まります。

レガシー データのインポートによるデータの整合性の問題を前もって洗い流すことで、後で多くの問題を解決できます。

于 2011-03-11T06:00:00.933 に答える
0

fast_seedergemが役に立ちます。複数の挿入を使用してCSVファイルからデータベースにデータを入力し、さまざまなDBアダプターをサポートします

于 2012-08-05T21:05:36.183 に答える
0

MySQL を使用してこれを行う場合、次のような MySQL のデータ読み込み関数を使用します。

load data infile '/my/rails/project/data.csv' テーブル table_name に置換 フィールドは ' field_terminator ' で終了 行は ' line_terminator 'で終了

テーブルのデザインが頻繁に変更されない場合は、そのようなステートメントを perl、ruby、またはシェル スクリプトに入れることができます。

于 2011-03-11T06:00:37.050 に答える
0

他の人が言及したように、多くのデータベースは一括読み込みをサポートしています。ただし、Rails スタイルのソリューションを探している場合は、ar-extensions には一括挿入があります

ActiveWarehouse をチェックアウトすることもできます

于 2011-03-11T06:09:23.167 に答える