我想将数据库中的每个表导出到一个单独的csv文件中,并按commom列对所有表进行排序。我使用的是mysql、phpmyadmin和windows10
我是mysql的新手,在stackoverflow上搜索,我可以得到以下代码,将一个表导出为csv文件,完全符合我的要求:
SELECT * INTO OUTFILE 'c://path/name_of_table.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY ''
LINES TERMINATED BY '\n'
FROM `name_of_table` ORDER BY name_of_column;
我可以在上面的查询中使用表名作为变量来迭代特定数据库中的所有表吗?
比如:
FOREACH my_table IN my_database
SELECT * INTO OUTFILE 'c://path/' .my_table.table_name. '.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY ''
LINES TERMINATED BY '\n'
FROM `my_table.table_name` ORDER BY name_of_column;
END FOREACH;
任何其他的方法也很好
谢谢!
1条答案
按热度按时间c9qzyr3d1#
你已经走到一半了。
一种解决方案是使用带有游标的存储过程来获取表名,并使用一些动态sql来生成select into outfile语句。
这样的办法应该行得通。
显然,我已经在linux上测试过了,所以您可以将自己的可写路径放进去(允许设置@@global.secure\u file\u priv),然后应该更改
yrcolname
到适当的值。