首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从命令行将mysql数据库转储为明文(CSV)备份

从命令行将mysql数据库转储为明文(CSV)备份
EN

Stack Overflow用户
提问于 2009-01-21 23:13:15
回答 11查看 161.8K关注 0票数 97

我想避免mysqldump,因为它的输出形式只对mysql来说是方便阅读的。CSV似乎更通用(每个表一个文件就可以了)。但是,如果mysqldump有什么优点,我会洗耳恭听。另外,我想要一些可以从命令行运行的东西(linux)。如果这是一个mysql脚本,指向如何创建这样的东西的指针将会很有帮助。

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2009-01-21 23:18:03

如果您可以一次处理一个表,并且您的数据不是二进制的,那么可以使用mysql命令的-B选项。有了这个选项,它将生成TSV (制表符分隔)文件,这些文件可以很容易地导入到Excel等:

代码语言:javascript
复制
% echo 'SELECT * FROM table' | mysql -B -uxxx -pyyy database

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

代码语言:javascript
复制
SELECT * INTO OUTFILE 'table.csv'
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
FROM table
票数 148
EN

Stack Overflow用户

发布于 2009-01-21 23:39:00

在MySQL本身中,可以指定CSV输出,如下所示:

代码语言:javascript
复制
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/

票数 32
EN

Stack Overflow用户

发布于 2012-05-10 02:00:40

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

代码语言:javascript
复制
mysqldump --password  --fields-optionally-enclosed-by='"' --fields-terminated-by=',' --tab /tmp/path_to_dump/ database_name

该路径需要对mysql用户和运行命令的用户都是可写的,所以为了简单起见,我建议先写chmod 777 /tmp/path_to_dump/

票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/467452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档