2014-09-29 57 views
0

我想導出有關我的Rails應用程序(由Heroku託管)的用戶的信息。我跟着本教程中導出CSV文件:從Rails導出CSV postgres數據庫 - 添加關聯

https://coderwall.com/p/jwtxjg

這包括以下內容:

  1. 連接到後GRES數據庫:

    PSQL「DBNAME = FOO主機= bar.compute-1.amazonaws.com user = abc password = 123 port = 5432 sslmode = require「

  2. 運行查詢:

    \複印件(選擇ID,sign_in_count,last_sign_in_at,created_at從用戶)dump.csv CSV DELIMITER ''

這導出CSV文件到我的當前目錄。

但是,我還想在查詢中包含關聯的模型 - 例如,在我的應用程序中,用戶創建的項目,並且我想導出每個用戶創建的項目數量。

如何更新我的查詢來執行此操作?

+0

用戶創建的項目是否存儲在數據庫中? – 2014-09-29 21:40:59

+0

是的,項目存儲在同一個數據庫 – scientiffic 2014-09-29 21:47:51

回答

0

您可以嘗試添加與給定的user_id匹配的註冊表的計數(假設有一個名爲user_id的字段)。這樣的事情:

\copy (SELECT u.id, u.sign_in_count, u.last_sign_in_at, u.created_at, count(p.project) FROM users u, projects p WHERE p.user_id = u.id GROUP BY u.id, u.sign_in_count, u.last_sign_in_at u.created_at) TO dump.csv CSV DELIMITER ','

假設每個用戶只有一個註冊表在用戶表,這應該工作。

+0

感謝您的幫助。一個項目可以有很多用戶,所以我沒有一個列(user_id)來引用特定項目的用戶。我嘗試更新查詢,如下所示: \ copy(SELECT u.id,u.sign_in_count,u.last_sign_in_at,u.created_at,count(p.project)FROM users u,projects p WHERE p.users.pluck(: id).include?u.id GROUP BY u.id,u.sign_in_count,u.last_sign_in_at,u.created_at)到dump.csv CSV DELIMITER',' 但是我得到錯誤: 錯誤:語法錯誤處於或接近「:」 LINE 1:...)FROM用戶u,項目p WHERE p.users.pluck(:id).inc ... 錯誤信息:id – scientiffic 2014-09-30 14:23:41

+0

如何使用戶和項目之間的關係?它基於哪一列? – 2014-09-30 14:31:57

+0

用戶擁有並屬於許多項目,並且項目擁有並屬於許多用戶 – scientiffic 2014-09-30 14:40:44