Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数据分散在多行的mysql表导出到csv_Mysql_Csv_Export - Fatal编程技术网

将数据分散在多行的mysql表导出到csv

将数据分散在多行的mysql表导出到csv,mysql,csv,export,Mysql,Csv,Export,我有一个mysql表,其中填充了来自我网站上的webform的输入。表单中有姓氏、姓氏、电子邮件、电话、地址等字段。。。。当用户提交表单时,这些数据以一种非常奇怪的方式存储在mysql表中。 我的桌子看起来像这样: subission# | value | field | tstamp | and |many |more |columns =========================================================

我有一个mysql表,其中填充了来自我网站上的webform的输入。表单中有姓氏、姓氏、电子邮件、电话、地址等字段。。。。当用户提交表单时,这些数据以一种非常奇怪的方式存储在mysql表中。 我的桌子看起来像这样:

subission# | value                | field   | tstamp    | and   |many |more |columns
=====================================================================================
1          |john@server.com       |email    |1448898875 |       |     |     |
1          |john                  |firstname|1448898875 |       |     |     |
1          |doe                   |lastname |1448898875 |       |     |     |
1          |london                |city     |1448898875 |       |     |     |
2          |jane@aol.com          |email    |1448898870 |       |     |     |
2          |jane                  |firstname|1448898870 |       |     |     |
2          |doe                   |lastname |1448898870 |       |     |     |
2          |new york              |city     |1448898870 |       |     |     |
3          |tim @aol.com          |email    |1448838571 |       |     |     |
3          |tim                   |firstname|1448838571 |       |     |     |
3          |smith                 |lastname |1448838571 |       |     |     |
3          |paris                 |city     |1448838571 |       |     |     |
我需要将这些数据导出到csv文件,以便将其导入其他服务器上的新闻稿脚本,但服务器希望这些数据采用不同的格式:

submission#,email,firstname,lastname,tstamp,.....
1,john@server.com,john,doe,london,1448898875,,,,
2,jane@aol.com,jane,doe,1448898870,,,,

导出为csv不是问题,但是如何将一次提交的所有数据#放到一行中?有谁能告诉我正确的方向,如何使用SQL实现这一点吗?

如果您使用concat()和函数将字段内容连接到单个字段中,其中的值用逗号分隔,则可以实现所需的输出

唯一的问题是,对于特定提交,是否缺少任何属性。如果是这种情况,那么您将需要一个列出所有属性的helper表,并且您需要在该表上留下join。由于您的示例数据并非如此,因此我不提供此场景的代码

select concat(submission, ',', group_concat(`value` order by `field` asc), ',',tstamp)
from table group by submission, tstamp

如果您需要第1行中的字段名,则创建一个单独的查询,将以逗号分隔的字段名关联起来,并将2与union组合起来。

如果我是您,我会将字段值用作列而不是值。现在,您必须在要合并的所有行中至少有一个相同的值。我想说,使用
时间戳
不是很节省,因为如果添加两个用户并添加相同的时间戳会发生什么?我认为
子任务
列可以达到这个目的,不幸的是,您必须将表与每个字段连接一次,才能使用MySQL获得所有结果。然后只需
选择。。。进入outfile…
。非常感谢,这就像一个符咒。你刚刚救了我一天!