(十一)MySQL数据库-MySQL 数据的导出导入、备份还原

版权声明:转载请注明原文地址 https://blog.csdn.net/Super_RD/article/details/89790486


我的系统版本为CentOS7.5,MySQL版本为5.7.26

INTO OUTFILE导出数据

你可以通过命令选项来设置数据输出的指定格式

#导出到TXT
SELECT * FROM c INTO OUTFILE '/var/lib/mysql-files/runoob.txt';
#导出到CSV,数据被双引号包裹,都好隔开,换行用\r\n
SELECT * FROM passwd INTO OUTFILE '/var/lib/mysql-files/runoob.csv'
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n';

如果报如下错误:

ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

原因:
mysql 默认对导出的目录有权限限制,也就是说使用命令行进行导出的时候,需要指定目录进行操作

#查看配置的目录
show global variables like '%secure%'; 
  1. LOAD DATA INFILE是SELECT … INTO OUTFILE的逆操作,SELECT句法。为了将一个数据库的数据写入一个文件,使用SELECT … INTO OUTFILE,为了将文件读回数据库,使用LOAD DATA INFILE

  2. SELECT…INTO OUTFILE 'file_name’形式的SELECT可以把被选择的行写入一个文件中。该文件被创建到服务器主机上,因此您必须拥有FILE权限,才能使用此语

  3. 输出不能是一个已存在的文件。防止文件数据被篡改

  4. 你需要有一个登陆服务器的账号来检索文件。否则 SELECT … INTO OUTFILE 不会起任何作用

mysqldump 导出数据和结构

mysqldump 导出的是SQL脚本,通过脚本可以重建数据库

#导出test库的a表,导出为a.sql
mysqldump -u root -p  --tab=/var/lib/mysql-files/ test a;


#导出test库的所以表,每个表一个文件,导出为表名.sql
mysqldump -u root -p  --tab=/var/lib/mysql-files/ test >;

#备份所有数据库,数据库备份策略
mysqldump -u root -p --all-databases > /var/lib/mysql-files/database_dump.txt

#导出并导入到远程主机,确保两台服务器是相通的,是可以相互访问的
mysqldump -u root -p database_name \ | mysql -h other-host.com database_name

#远程数据库备份到本地
mysqldump -h other-host.com -P port -u root -p database_name > dump.txt

mysql 命令导入

mysql -uroot -p123456 < runoob.sql

source 命令导入

source 命令导入数据库需要先登录到数库终端:

mysql> create database abc;      # 创建数据库
mysql> use abc;                  # 使用已创建的数据库 
mysql> set names utf8;           # 设置编码
mysql> source /home/abc/abc.sql  # 导入备份数据库

mysqlimport 导入数据

$ mysqlimport -u root -p --local database_name dump.txt
password *****

mysqlimport命令可以指定选项来设置指定格式,命令语句格式如下:

$ mysqlimport -u root -p --local --fields-terminated-by=":" \
   --lines-terminated-by="\r\n"  database_name dump.txt
password *****

mysqlimport 语句中使用 --columns 选项来设置列的顺序:

$ mysqlimport -u root -p --local --columns=b,c,a \
    database_name dump.txt
password *****

mysqlimport的常用选项介绍

选项 功能
-d or --delete 新数据导入数据表中之前删除数据数据表中的所有信息
-f or --force 不管是否遇到错误,mysqlimport将强制继续插入数据
-i or --ignore mysqlimport跳过或者忽略那些有相同唯一 关键字的行, 导入文件中的数据将被忽略。
-l or -lock-tables 数据被插入之前锁住表,这样就防止了, 你在更新数据库时,用户的查询和更新受到影响。
-r or -replace 这个选项与-i选项的作用相反;此选项将替代 表中有相同唯一关键字的记录。
–fields-enclosed- by= char 指定文本文件中数据的记录时以什么括起的, 很多情况下 数据以双引号括起。 默认的情况下数据是没有被字符括起的。
–fields-terminated- by=char 指定各个数据的值之间的分隔符,在句号分隔的文件中, 分隔符是句号。您可以用此选项指定数据之间的分隔符。 默认的分隔符是跳格符(Tab)
–lines-terminated- by=str 此选项指定文本文件中行与行之间数据的分隔字符串 或者字符。 默认的情况下mysqlimport以newline为行分隔符。 您可以选择用一个字符串来替代一个单个的字符: 一个新行或者一个回车。

mysqlimport命令常用的选项还有-v 显示版本(version), -p 提示输入密码(password)等

猜你喜欢

转载自blog.csdn.net/Super_RD/article/details/89790486