我有一系列包含年度調查/問卷答案的文本文件(每年一個)。文件中的列標題是指問題編號,每行代表一個人對問題的回答,例如將幾個表格和一些常見字段合併到一張表中
Q1, Q2, Q3, ...
P1A1, P1A2, P1A3, ...
P2A1, P2A2, P2A3, ...
etc.
[where Q1 is Question 1, P1 is Person 1 and A1 is Answer 1].
問卷採用了相同的核心,每年設置的問題,而且還每年新增新的問題和一些舊的被刪除。因此我的桌子有許多共同的領域,但它們並不完全相同,例如
Year 1 | Year 2 | Year 3 etc.
Q1, Q2, Q3 | Q1, Q2, Q4 | Q1, Q2, Q5
P1A1, P1A2, P1A3 | P1A1, P1A2, P1A4 | P1A1, P1A2, P1A5
P2A1, P2A2, P2A3 | P2A1, P2A2, P2A4 | P2A1, P2A2, P2A5
在這個例子中Q1和Q2是核心問題,而Qs的3,4 & 5取決於調查的一年。
刪除的問題編號永遠不會被重複使用:如果添加新問題,它會被賦予一個全新的編號。真正的調查有300到500個問題,每年約有40,000人回答。
我想將所有這些數據合併到一個表中,其中的列標題將是原始文件中不同標題的集合以及年份的列。多年來,如果問題不相關,我希望有空值,例如
Year, Q1, Q2, Q3, Q4, Q5
1, P1A1, P1A2, P1A3, Null, Null
1, P2A1, P2A2, P2A3, Null, Null
2, P1A1, P1A2, Null, P1A4, Null
2, P2A1, P2A2, Null, P2A4, Null
3, P1A1, P1A2, Null, Null, P1A5
3, P2A1, P2A2, Null, Null, P2A5
從本質上講,我只是想追加他們匹配列,否則值爲空,但如果可能的話,我想自動生成的決賽桌組列標題(輸入表)作爲調查中的問題數量很大,解決問題的可能性很大,然後輸入Create Table
聲明是可怕的!我想我以後是UNION ALL
的某種變化,不需要我按順序指定所有列,並且可以處理不匹配的列。
有沒有人有任何提示或建議,請?我最初希望使用SQLite,但我願意嘗試幾乎任何東西。我不是數據庫專家,但我對SQL有一個基本的瞭解,如果有任何幫助,可以執行一些Python腳本。
如果你已經做到了這一點,感謝閱讀!我認爲這將是一個非常簡單的問題,但是要詳細描述卻很難。
感謝你們所有人的答覆 - 他們都很有用,並幫助我重新走上正軌。來自pyInTheky和spinning_plate的建議使我開始走向類似於S.Lott所提出的星型模式。最終,我希望這會比我最初的「超級桌面」理念更好的解決方案。再次感謝! – JamesS