当前位置:  开发笔记 > 后端 > 正文

从命令行将mysql数据库转储到纯文本(CSV)备份

如何解决《从命令行将mysql数据库转储到纯文本(CSV)备份》经验,为你挑选了5个好方法。

我想避免使用mysqldump,因为它以一种只便于mysql读取的形式输出.CSV似乎更通用(每个表一个文件很好).但如果mysqldump有优势,我全都耳朵.另外,我想从命令行(linux)运行一些东西.如果这是一个mysql脚本,指向如何制作这样的东西会有所帮助.



1> Alnitak..:

如果您可以一次处理表,并且数据不是二进制,请使用命令-B选项mysql.使用此选项,它将生成TSV(制表符分隔)文件,可以很容易地导入到Excel等中:

% echo 'SELECT * FROM table' | mysql -B -uxxx -pyyy database

或者,如果您可以直接访问服务器的文件系统,请使用SELECT INTO OUTFILE它可以生成真正的CSV文件:

SELECT * INTO OUTFILE 'table.csv'
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
FROM table


请注意,当给出相对路径(或简称文件名)时,该文件将出现在您的MYSQL目录中,而不是您当前的shell目录(即`\.file.sql`读取的位置).因此,根据您的安装,您可能会在`/ var/lib/mysql/[db_name]/table.csv找到它.

2> Paul Tomblin..:

在MySQL本身,您可以指定CSV输出,如:

SELECT order_id,product_name,qty
FROM orders
INTO OUTFILE '/tmp/orders.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'

来自http://www.tech-recipes.com/rx/1475/save-mysql-query-results-into-a-text-or-csv-file/


我似乎无法在我指定的目录中找到转储文件,为什么会这样?

3> chmac..:

您可以使用mysqldump的--tab选项一次性转储整个数据库.您提供了一个目录路径,它创建一个带有CREATE TABLE DROP IF EXISTS语法的.sql文件和一个带有内容的.txt文件,制表符分隔.要创建逗号分隔文件,您可以使用以下内容:

mysqldump --password  --fields-optionally-enclosed-by='"' --fields-terminated-by=',' --tab /tmp/path_to_dump/ database_name

mysql用户和运行命令的用户都需要写入该路径,因此为了简单起见,我建议chmod 777 /tmp/path_to_dump/先使用.



4> Sri..:

select into outfile选项对我来说不起作用,但是下面通过SED管道制表符分隔文件的迂回方式做了:

mysql -uusername -ppassword -e "SELECT * from tablename" dbname | sed 's/\t/","/g;s/^/"/;s/$/"/' > /path/to/file/filename.csv



5> minhas23..:

这是最简单的命令

mysql -h -u -p -e 'select * from databaseName.tableNaame' | sed  's/\t/,/g' > output.csv

如果列值中有逗号,那么我们可以使用以下命令生成.tsv而不是.csv

mysql -h -u -p -e 'select * from databaseName.tableNaame' > output.csv

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有