我有一個自己制作的 rake 任務,它應該匯入我的 CSV 檔案,這個檔案是我用 Pandas 和 Python 合并 3 個 CSV 檔案制作的(我是 Ruby 和 Rails 的新手,所以這就是為什么我用 Pandas 做這部分作業)。
這是我用rails generate task import_csv創建的rake任務,當我運行rake -T時可以看到。
namespace :import do
描述 "將finalCsv.csv匯入資料庫"。
任務 import_csv: :環境 do
require 'csv'/span>
filename = "#{Rails.root}/db/finalCsv.csv"
CSV.foreach(filename, headers: true) do |row
WorkOrder.create! (row.to_hash)
結束
end
end end
下面是我的python腳本,將3個原始CSV合并在一起。
import pandas as pd
locations = pd.read_csv("location.csv"/span>)
technicians = pd.read_csv("technants.csv")
workOrders = pd.read_csv("work_orders.csv")
workOrders = workOrders.merge(technologies, how="inner", left_on="technician_id", right_on="id")
workOrders = workOrders.merge(location, how="right"/span>, left_on="location_id", right_on="id")
workOrders = workOrders.rename(columns={"name_x": "全名", "name_y": "公司"})
workOrders = workOrders.drop(labs = ["id_x"/span>, "id_y"/span>, "id"/span>], axis=1)
finalCsv = workOrders.to_csv("finalCsv.csv"/span>, encoding="utf-8"/span>)
print(finalCsv)
另外,這里是我的遷移和模式檔案。
遷移:
def change<
create_table :work_orders do |t|
t.整數 :technician_id
t.integer :location_id :location_id
t.時間 :時間[/span
t.integer :duration :duration
t.整數 :價格[/span
t.string :FullName :FullName
t.string :City :City
t.時間戳
end[/span
end end
end end
模式:
create_table "work_orders", force: :cascade do |t|
t.integer "technician_id">整數 "location_id" 時間 "時間"
t.整數 "時間"
t.整數 "價格"
t.string "FullName"/span>
t.string "Company"
t.string"City"
t.datetime "created_at", precision: 6, null: false[/span]。
t.datetime "uped_at", precision: 6, null: 假的。
end: end
end end
最后,當我在rails控制臺運行WorkOrder.all(我的模型)或WorkOrder.new時,兩者都是有效的,所以我對這里發生的問題有點困惑。 有什么想法嗎?
uj5u.com熱心網友回復:
這個錯誤是在告訴你,你正在嘗試添加屬性""。例如,WorkOrder.new(" " => "foo")應該產生同樣的錯誤。
WorkOrder.create!(row.to_hash)檢查row,其中一個鍵是空白。你的CSV列中可能缺少一個標題。
uj5u.com熱心網友回復:
你的CSV可能有額外的單元格,沒有標題。如果你100%肯定資料是正確的,你可以用以下方法跳過這些額外的資料:
WorkOrder.create!(row.to_hash.except('')
在你的rake任務的相應部分。
uj5u.com熱心網友回復:
向大家表示感謝。我最終修改了我的Python腳本,以便在將Pandas資料框架寫入CSV時沒有id列。 然后我又遇到了一些不可預見的問題......,最后我重新生成了我的模型并重新開始。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/322758.html
標籤:
上一篇:如何從資料庫中統計記錄并將它們放入List<Long>中,每行用字母表示?
下一篇:查找json物件中的出現次數
