【发布时间】:2019-09-03 21:31:03
【问题描述】:
对于我的游戏应用,我有一个 CSV 格式的数据表(其中一个)。 它目前有 40 多列,每个职业(战士、盗贼、巫师等)和技能名称各一列。
每行 (40+) 包含技能名称,以及一个字符串,表示每个职业该技能的成本。
来自原始 .csv 的 sn-p 包含如下所示的数据:
Skill,Fighter,Thief,Rogue
Armor-Heavy,2,4,3
Armor-Light,1,2,1
Armor-Medium,2,3,2
要将其输入标准化数据库,我应该有一个职业列表表、一个技能列表表和一个技能成本表。
我已经建立并填充了技能列表和职业列表:
CREATE TABLE "skills" ("_id" INTEGER, "skill" TEXT)
CREATE TABLE "professions" ("_id" INTEGER, "profession" TEXT)
我可以创建一个表来保存标准化数据:
CREATE TABLE "skillCostByProfession" ("skill_id" INTEGER, "profession_id" INTEGER, "cost" INTEGER)
skillCostByProfession 将整理数据:
profession_id, skill_id, cost
1 | 1 | 2 (Fighter, Armor-Heavy, cost (2))
1 | 2 | 1 (Fighter, Armor-Light, cost (1))
1 | 3 | 2 (Fighter, Armor-Medium, cost (2))
2 | 1 | 4 (Thief, Armor-Heavy, cost (4))
2 | 2 | 2 (Thief, Armour-Light, cost (2))
2 | 3 | 3 (Thief, Armour-Medium, cost (3))
3 | 1 | 3 (Rogue, Armor-Heavy, cost (3))
3 | 2 | 1 (Rogue, Armour-Light, cost (1))
3 | 3 | 2 (Rogue, Armour-Medium, cost (2))
等
我正在努力寻找一种方法将原始 .csv 中的数据放入新的 SkillCostByProfession 表中
我正在使用 LibreOffice Calc 和 DB Browser (SQLite) 的组合来为我的 Android 应用程序准备数据库。
如何在不手写 1600 行的情况下将我拥有的数据表转换为我需要的格式?
【问题讨论】:
-
通过 SQL
update通过查询设置表。 PSminimal reproducible example -
@philipxy 我需要完全改变表格的结构,而不是更新条目。我不确定如何将示例表上传到我的问题中,并认为我提供了足够的信息。
-
您想要具有不同列的新表,UPDATE 可以将新表设置为对旧表的查询。鉴于您提供的详细程度,我也“认为我提供了足够的信息”。如果没有示例代码,很难描述您到底需要什么以及您能做什么。此外,我们可以预期,一旦您获得具体的所有步骤,您需要的所有步骤都将成为常见问题解答。
-
好的,我明白了。编写一个(一组/循环?)查询以提取数据并放入新表中。我不知道从哪里开始,但我想我明白你的意思
-
你基本上想要做的是一个非透视操作。看来 Sqlite 没有 unpivot。但类似的问题和答案显示here
标签: database-design android-sqlite