【发布时间】:2017-03-29 16:19:31
【问题描述】:
您好,我需要对包含重复数据的 MySQL 表进行一些非规范化处理。
我的“出版物”表目前是这种格式:
Publications Source Table
| title | author
--------------------------------------------
| my paper | michael
| my paper | bill
| my paper | jill
| other paper | tom
| other paper | amy
| third paper | ben
| third paper | sophie
我需要把它改成这种格式:
Publications Destination Table
| title | author | author2 | author 3
|-----------------------------------------------------------------
| my paper | michael | bill | jill
| other paper | tom | amy |
| third paper | ben | sophie |
现在,为了您的信息,我需要这样做,以便最终获得 CSV 文件,以便可以将数据从旧系统导出到需要这种格式的 CSV 文件的新系统。
表中还有许多其他字段,源表中有大约 60,000 行,但只有大约 15,000 个唯一标题。在源表中,每个作者有一行。在目的地中,title 将是一个唯一标识符。每个唯一的出版物标题我需要一行。此外,我还可以提前计算出任何一份出版物上最多的作者数量,如果这会使问题变得更容易的话。
如何在 MySQL 中做到这一点?谢谢
【问题讨论】:
-
你的谷歌搜索字符串是
mysql pivot query -
上面的第一个表格设计比您要创建的表格要好,但仍需努力。我希望出版物表只包含标题和出版物只能具有一个值的任何其他信息。然后为发布可能有多个值的每条信息创建一个单独的表。
-
请不要说我试图获取的格式只是其他人已经为其编写了导入程序的格式。数据最终将存储在高度规范化的企业数据库系统中,但供应商已为我们提供了使用此特定 CSV 格式将数据导入其中的选项。
标签: mysql sql export-to-csv denormalization