我有一系列包含年度调查/问卷答案的文本文件(每年一个)。文件中的列标题是指问题编号,每行代表一个人对问题的回答,例如将几个表格和一些常见字段合并到一张表中
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