回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一系列文本文件(每年一份),其中包含年度调查/问卷的答案。文件中的列标题指的是问题编号,每行代表一个人对问题的答案,例如</p>
<pre><code>Q1, Q2, Q3, ...
P1A1, P1A2, P1A3, ...
P2A1, P2A2, P2A3, ...
etc.
[where Q1 is Question 1, P1 is Person 1 and A1 is Answer 1].
</code></pre>
<p>问卷每年使用相同的核心问题集,但每年都会增加新问题,并删除一些旧问题。因此,我的表有许多共同的字段,但它们并不都是相同的</p>
^{pr2}$
<p>在本例中,Q1和Q2是核心问题,而Qs 3、4和5取决于调查年份。在</p>
<p>删除的问题编号永远不会重复使用:如果添加了一个新的问题,它将被赋予一个全新的编号。真正的调查有300到500个问题,每年大约有4万人回答。在</p>
<p>我想将所有这些数据合并到一个表中,其中的列标题将是原始文件中的一组不同的标题,再加上一个表示年份的列。多年来,当一个问题不相关的时候,我希望有空的,例如</p>
<pre><code>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
</code></pre>
<p>本质上,我只想在它们匹配的地方添加列,否则会有空值,但是如果可能的话,我希望自动(从输入表)为最终表生成一组列标题,因为调查中的问题数量很大,并且得出并键入<code>Create Table</code>语句的前景非常可怕!我想我想要的是<code>UNION ALL</code>上的某种变体,它不需要我按顺序指定所有列,并且可以处理不匹配的列。在</p>
<p><strong>有人有什么建议吗?</strong>我最初希望使用SQLite,但我愿意尝试几乎任何东西。我不是数据库专家,但我对SQL有基本的了解,如果有帮助的话,我可以做一些Python脚本。在</p>
<p>如果你能做到这一点,谢谢你的阅读!我原以为这是一个非常简单的问题,但很难详细描述。在</p>