mysql数据转储格式

时间:2011-07-20 17:08:36

标签: mysql

我的任务是创建一个.sql批处理文件来查询包含用户/服务器/组信息的MySQL数据库(版本:4.1.13-standard),例如。

user1 server1 group1,group2

user1 server2 group1,group3

user1 server3 group5

user2 server2 group2

user2 server5 group2

user3 server4 group4

诀窍是,输出文件的格式必须是每个用户有一行,并且所有服务器和组信息组合在一起。所以上面的例子看起来像是:

“用户1”, “服务器1:组1-组2;服务器2:组1-组3; server1的:组5”

“用户2”, “服务器2:组2;服务器5:组2”

“用户3”, “服务器4:组4”

如果之前已经回答了这个或类似的问题,我道歉。我保证我花了几个小时寻找解决方案,但没有找到解决方案。或者当我看到它时我没有意识到这一点。通过交易,我不是任何想象力的DBA,我对mysql知之甚少还不足以解决这个问题。

到目前为止,我得到的最接近的是:

select concat(name,',',group_concat(concat(trim(hostname),':',replace(trim(groups),',','-'))separator ';'))

感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:0)

我尝试了一下我的一个数据库,我得到的结果与你的预期结果非常相似,因为我没有像你这样的结构化数据库。

尝试

SELECT CONCAT(
  t.name, ',', GROUP_CONCAT(
      DISTINCT CONCAT(TRIM(t.hostname),':', REPLACE(TRIM(t.groups),',','-'))
  SEPARATOR ';')
) FROM table_name t GROUP BY t.name

我猜,DISTINCT和GROUP BY t.name可能是神奇的词;)