我需要以CSV格式转储MySQL中的所有表。
是否有mysqldump用于仅以 CSV格式输出每个表的每一行的命令?
首先,我可以为您提供一个表的答案:
所有这些INTO OUTFILE或--tab=tmpfile(和-T/path/to/directory)答案的问题在于,它需要在与 MySQL服务器相同的服务器上运行mysqldump ,并具有这些访问权限。
我的解决方案是简单地使用mysql(NOT mysqldump)和-B参数,用内联SELECT语句-e,然后用按摩ASCII输出sed,并用CSV结束,包括标题字段行:
例:
mysql -B -u username -p password database -h dbhost -e "SELECT * FROM accounts;"
| sed "s/"/""/g;s/'/'/;s/\t/","/g;s/^/"/;s/$/"/;s/\n//g" “ id”,“登录”,“密码”,“文件夹”,“电子邮件”,“ 8”,“ mariana”,“ xxxxxxxxxx”,“ mariana”,“” 3“,” squaredesign“,” xxxxxxxxxxxxxxxxx“,” squaredesign”,“ mkobylecki@squaredesign.com”,“ 4”,“ miedziak”,“ xxxxxxxxxx”,“ miedziak”,“ miedziak@mail.com”“ 5”,“ Sarko”,“ xxxxxxxxx”,“ Sarko”,“ “” 6“,” Logitrans Poland“,” xxxxxxxxxxxxxx“,” LogitransPoland“,”“” 7“,” Amos“,” xxxxxxxxxxxxxxxxxxxx“,” Amos“,”“” 9“,” Annabelle“,” xxxxxxxxxxxxxxxx“, “ Annabelle”,“”“ 11”,“Brandfathers and Sons“,” xxxxxxxxxxxxxxxxx“,” BrandfathersAndSons“,”“” 12“,” Imagine Group“,” xxxxxxxxxxxxxxxx“,” ImagineGroup“,”“”“ 13”,“ EduSquare.pl”,“ xxxxxxxxxxxxxxxxx”,“ EduSquare .pl“,”“” 101“,” tmp“,” xxxxxxxxxxxxxxxxxxxxx“,” “,” WOBC-14.squaredesign.atlassian.net@yoMama.com““,” WOBC-14.squaredesign.atlassian.net@yoMama.com“_“,” WOBC-14.squaredesign.atlassian.net@yoMama.com“
outfile.csv在该单行代码的末尾添加一个,以获取该表的CSV文件。
接下来,获取所有表的列表
mysql -u username -ppassword dbname -sN -e "SHOW TABLES;" 从那里开始,例如,仅循环一个步骤。在bash外壳中迭代这些表:
for tb in $(mysql -u username -ppassword dbname -sN -e "SHOW TABLES;"); do echo .....; done 在do和之间; done 插入我在上面的第1部分中编写的long命令,但是用您的表名$tb代替。来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。