2016-05-25 6 views
0

私は、次のフィールドを持つテーブルがある:列名を持たないファイルからデータを保存する方法は?

# == Schema Information 
# 
# Table name: scheme_details 
# 
# id    :integer   not null, primary key 
# scheme_id  :integer   not null 
# nav_date   :datetime 
# nav_price  :float 
# repurchase_price :float 
# sale_price  :float 
# closing_date  :datetime 
# net_change  :float 
# prev_nav   :float 
# prev_nav_date :datetime 
# upd_flag   :string(1) 
# created_at  :datetime   not null 
# updated_at  :datetime   not null 
# change   :float 
# 

今私は、列名を持っていないFTPサーバからaceファイル拡張子を持つデータファイルを取得しています。

以下は、ファイルのサンプルデータです。

<<row>>1|5/24/2016 12:00:00 AM|1000.49|1000.49|1000.49||0|0|1000.49|5/23/2016 12:00:00 AM|A<</row>> 
<<row>>2|5/24/2016 12:00:00 AM|2350.0193|2350.0193|2350.0193||0.0210084954593086|0.493599999999788|2349.5257|5/23/2016 12:00:00 AM|A<</row>> 
<<row>>3|5/24/2016 12:00:00 AM|1005.4653|1005.4653|1005.4653||0.0210096133902824|0.211199999999963|1005.2541|5/23/2016 12:00:00 AM|A<</row>> 
<<row>>4|5/24/2016 12:00:00 AM|1001.2549|1001.2549|1001.2549||0.0210080549857693|0.210300000000075|1001.0446|5/23/2016 12:00:00 AM|A<</row>> 
<<row>>9|5/24/2016 12:00:00 AM|1005.428|1005.428|1005.428||0.0208611403115122|0.209699999999998|1005.2183|5/23/2016 12:00:00 AM|A<</row>> 
<<row>>10|5/24/2016 12:00:00 AM|2226.3533|2226.3533|2226.3533||0.0208725620468016|0.464600000000246|2225.8887|5/23/2016 12:00:00 AM|A<</row>> 
<<row>>11|5/24/2016 12:00:00 AM|1001.2478|1001.2478|1001.2478||0.0208683199024505|0.208899999999971|1001.0389|5/23/2016 12:00:00 AM|A<</row>> 
<<row>>14|5/24/2016 12:00:00 AM|14.369|14.369|14.369||-0.567434779600033|-0.0820000000000007|14.451|5/23/2016 12:00:00 AM|A<</row>> 
<<row>>15|5/24/2016 12:00:00 AM|33.37|33.37|33.37||-0.566150178784281|-0.190000000000005|33.56|5/23/2016 12:00:00 AM|A<</row>> 
<<row>>22|5/24/2016 12:00:00 AM|15.87|15.87|15.87||-0.501567398119123|-0.0800000000000001|15.95|5/23/2016 12:00:00 AM|A<</row>> 
<<row>>23|5/24/2016 12:00:00 AM|64.37|64.37|64.37||-0.54079110|-0.349999999999994|64.72|5/23/2016 12:00:00 AM|A<</row>> 
<<row>>115|5/24/2016 12:00:00 AM|10.1146|10.1146|10.1146||-0.00197730058924853|-0.00020000000000131|10.1148|5/23/2016 12:00:00 AM|A<</row>> 
<<row>>116|5/24/2016 12:00:00 AM|25.8745|25.8745|25.8745||-0.00193236714975395|-0.000499999999998835|25.875|5/23/2016 12:00:00 AM|A<</row>> 
<<row>>117|5/24/2016 12:00:00 AM|10.3195|10.3195|10.3195||-0.00193804083451587|-0.000199999999999534|10.3197|5/23/2016 12:00:00 AM|A<</row>> 
<<row>>118|5/24/2016 12:00:00 AM|10.317|10.317|10.317||-0.0019385104485668|-0.000199999999999534|10.3172|5/23/2016 12:00:00 AM|A<</row>> 
<<row>>119|5/24/2016 12:00:00 AM|10.0863|10.0863|10.0863||-0.00198284836166692|-0.000199999999999534|10.0865|5/23/2016 12:00:00 AM|A<</row>> 
<<row>>160|5/24/2016 12:00:00 AM|10.0729|10.0729|10.0729||0.0148936592727928|0.00150000000000006|10.0714|5/23/2016 12:00:00 AM|A<</row>> 
<<row>>165|5/24/2016 12:00:00 AM|17.3863|17.3863|17.3863||0.0155318806231003|0.00269999999999726|17.3836|5/23/2016 12:00:00 AM|A<</row>> 
<<row>>166|5/24/2016 12:00:00 AM|10.0315|10.0315|10.0315||0|0|10.0315|5/23/2016 12:00:00 AM|A<</row>> 

私は、ファイルを解析し、|を使用してrowと分割データなどの不要なデータを削除することができています。

問題サンプルデータファイルに列名とデータだけが含まれているため、データを列名にマップする方法を検討しています。

私が持っていた解決策の1つは、データのマップに使用できるファイルの最上部にダミーの列名の行を追加することでした。

しかし、正しい方法であるかどうかはわかりません。

この問題を解決する方法についての助けや助言があれば助かります。

ありがとうございました!

注:私が作成したコードを参照する必要がある場合は、私が提供して喜んでします。

+2

どの列をどのように決定するか尋ねていますか?私は誰もそれを行うことは非常に困難だと思う - いくつかのドキュメントのデータの作成者に尋ねて –

+1

あなたは配列を定義し、各行のためにその中のすべての分割された値をプッシュすることができます。今度はあなたのスキーマを持つ配列のインデックス値に従ってマップします。 –

+0

thankx @PraveshKhatriあなたが言ったように私はまさにやりました。 – VoidZero

答えて

1
  1. もし

  2. は、行ごとに、すべてのsplited値その内部プッシュアレイを定義することができます。

  3. あなたのスキーマを持つ配列のインデックス値に従ってマップするようになりました。

1

テーブルの定義からそのシーケンスを知っているので、インデックス番号で列を参照します。行が変数rowに格納されている場合、idフィールドはrow[0]になります。もちろん

これは読みやすいではなく、より良い読書のためにあなたは、定数を使用できます:あなたは列番号と定数名の間のマッピングを手動で定義するように、しかし、持っていない場合は

ID = 0 
..... 
this_rows_id = row[ID] 

をスキーマ定義にアクセスすれば、それを解析して小さなRubyファイルを生成し、プログラムにrequireという小さなRubyファイルを生成することができます。これは、スキーマ定義が変更される可能性のあるプロジェクトの初期段階では便利な場合があります。

関連する問題