澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

将MySQL数据导入到SQL,导入数据

2019-07-28 作者:数据库网络   |   浏览(165)

乘势一代的进化,社会的进化,种种技巧不乏先例丰富多彩乌烟瘴气数不清(写作文吗!!!)

13.1、数据备份

MySQL命名准绳
http://www.jb51.net/article/47617.htm
1) 表名类同接纳小写,若是有八个单词,使用下划线作为分割
2) 字段名和表名同样的命名准绳

前文已经涉及过 MySQL 选择 LOAD DATA 导入文本文件,本节将对 MySQL 导入/导出多少实行介绍,毕竟数据的操作和治本都离不开与外场的雅量新闻沟通。

不扯废话,简单来讲,比很多商厦都会同期选择二种数据库,由此数据在不一样数据库之间导入导出就产生三个令人蛋疼的主题材料,对于周期行的须求,能够支付特意的程序管理,不过对于突发性不猛烈的急需,就到了特殊须求DBA投身的时候啊,当供给将MySQL数据导入到SQL Server中时,该怎么搞呢?

数据备份:指标用于苏醒;必须对备份数据做复苏测验。

1.DATE 和 DATETIME 区别

导出数据

MySQL 中你可以选取 SELECT...INTO OUTFILE 语句来大约的导出数据到文本文件上。

本来使用工具最轻易易行,可是本人就忽略工具!!!

  备份类型:

DATE: 唯有日期 二零一五-12-12
DATETIME: 日期 具体时刻 二零一五-12-12 23:25:02

应用 SELECT ... INTO OUTFILE 语句导出多少

以下实例中大家将数据表 EMPLOYEE 数据导出到 /tutorials.txt 文件中:

mysql> SELECT * FROM EMPLOYEE
    -> INTO OUTFILE '/tutorials.txt';

您能够因而命令选项来安装数据输出的内定格式,以下实例为导出 CSV 格式:

mysql> SELECT * FROM EMPLOYEE INTO OUTFILE '/tutorials.txt'
    -> FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    -> LINES TERMINATED BY 'rn';

SELECT ... INTO OUTFILE 语句有以下属性:

  • LOAD DATA INFILE是SELECT ... INTO OUTFILE的逆操作,SELECT句法。为了将二个数据库的数额写入一个文书,使用SELECT ... INTO OUTFILE,为了将文件读回数据库,使用LOAD DATA INFILE。
  • SELECT...INTO OUTFILE 'file_name'情势的SELECT能够把被挑选的行写入二个文书中。该文件被创设到服务器主机上,因而你必须具有FILE权限,才具动用此语法。
  • 出口不可能是贰个已存在的文件。幸免文件数量被歪曲。
  • 您需求有一个登录服务器的账号来搜寻文件。不然 SELECT ... INTO OUTFILE 不会起任何效果。
  • 在UNIX中,该公文被创设后是可读的,权限由MySQL服务器所怀有。那代表,固然您就足以读取该公文,但大概无法将其删除。

在MySQL中开创测量试验数据:

  热备份:在线备份,读、写不受影响;

  温备份:仅可以执行读操作;

  冷备份:离线备份;读、写操作均中止;

2.修改表名

导出表作为原有数据

mysqldump 是 MySQL 用于转存储数据库的实用程序。它最主要产生三个 SQL 脚本,当中包罗从头重新创造数据库所必需的授命CREATE TABLE INSERT等。
选取mysqldump导出多少供给选用 --tab 选项来钦命导出文件钦点的目录,该指标必须是可写的。以下实例将数据表 EMPLOYEE 导出到 /tmp 目录中:

$ mysqldump -u root -p --no-create-info 
            --tab=/tmp pi EMPLOYEE
password ******
create table tb001(c1 int auto_increment primary key,c2 varchar(2000));
insert into tb001(c2) select 'abcrn';
insert into tb001(c2) select '你好啊rn';
insert into tb001(c2) select '你好啊n';
insert into tb001(c2) select '双引号"';
insert into tb001(c2) select '全角双引号“';
insert into tb001(c2) select '单引号''';
insert into tb001(c2) select '全角单引号’';

  物理备份和逻辑备份:

ALTER TABLE dinnertable RENAME TO dinnerTable;

导出 SQL 格式的数码

导出SQL格式的多少到钦命文件,如下所示:

$ mysqldump -u root -p pi EMPLOYEE > database_dump.txt
password ******

就算你须要导出整个数据库的数目,能够行使以下命令:

$ mysqldump -u root -p pi > database_dump.txt
password ******

一旦供给备份全数数据库,能够应用以下命令(该办法可用于完毕数据库的备份战略):

$ mysqldump -u root -p --all-databases > database_dump.txt
password ******

##=====================================================================##
运用mysqldump来导出与MS SQL SETiguanVE中华V包容的INSERT 语句:

  物理备份:复制数据文件;速度快

  逻辑备份:将数据导出至文本文件中;速度慢、丢失浮点数精度,需要重建索引;方便使用文本处理工具直接对其处理、可移植能力强。

3.Can't write; duplicate key in table 错误的化解:

导入数据

MySQL中得以采纳二种轻巧的点子来导入MySQL导出的数码。

mysqldump --host='192.168.166.169' --port=3358 --user='mysql_admin' --password='mysql@Admin@Pwd' --skip-add-locks --compatible=mssql --complete-insert --compact --extended-insert=false --default-character-set=utf8 -t --databases 'test' --table 'tb001' >/tmp/t4.sql

  完全备份、增量备份和反差备份;

[SQL] ALTER TABLE orders ADD CONSTRAINT fk_orders_table_id FOREIGN KEY(dinnertable_id) REFERENCES dinnerTable(id);
[Err] 1022 - Can't write; duplicate key in table '#sql-72c_3'

应用 LOAD DATA 导入数据

MySQL 中提供了LOAD DATA INFILE语句来插入数据。 以下实例准将从当前目录中读取文件 dump.txt ,将该文件中的数据插入到当下数据库的 mytbl 表中。

mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;

若是钦赐LOCAL关键词,则申明从客户主机上按路线读取文件。若无一些名,则文件在服务器上按路径读取文件。

越多选项包括分隔符、导入的列等
mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl
-> FIELDS TERMINATED BY ':'
-> LINES TERMINATED BY 'rn';

mysql> LOAD DATA LOCAL INFILE 'dump.txt'
 -> INTO TABLE mytbl (b, c, a);

下面脚本的有的注演声明:

  完全备份:备份全部数据;

  差异备份:仅备份上次完全备份以来变化的数据;

  增量备份:仅备份上次完全备份或增量备份以后变化的数据;

内需修改外键约束的名字:

选用 mysqlimport 导入数据

mysqlimport客户端提供了LOAD DATA INFILEQL语句的三个下令行接口。mysqlimport的大多数摘取直接对应LOAD DATA INFILE子句。从文件 dump.txt 上将数据导入到 mytbl 数据表中, 能够行使以下命令:

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

mysqlimport命令能够指定选项来设置内定格式,命令语句格式如下:

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

mysqlimport 语句中行使 --columns 选项来设置列的一一:

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

--compatible=mssql ##导出的SQL与MS SQL Server兼容
--complete-insert ##导出的INSERT语句包蕴列名
--compact ##利用轻松情势,不出口各个MySQL新闻
--extended-insert=false ##行使一行数据一条INSERT的艺术
--default-character-set=utf8 ##内定导出的字符集
-t ##-t代表只导出多少,-d表示只导出数据结构
--databases 'test' ##数据库名称
--table 'CityMatchup' ##表名

  备份战术:选用备份格局;选取备份时间;思考到复苏资本(复苏时间长度);备份开销(锁时间、备份时间长度、备份负载)

ALTER TABLE orders ADD CONSTRAINT fk_orders_dinnertable_id FOREIGN KEY(dinnertable_id) REFERENCES dinnerTable(id);

小结

行使本节介绍的办法能够落到实处 MySQL 的多寡导出和导入,也能够整合起来落成分歧数据库之间的数量拷贝、转移等。

时至明日,《MySQL学习笔记》类别就停止了。学习笔记以列表的款式记录了 MySQL 的常用管理和操作命令,希望在继续的实施中能够以手册方式多多发挥功用……

导出结果为:

  备份对象:数据、配置文件代码(存款和储蓄进程,存款和储蓄函数,触发器)、OS相关的布局文件,如crontab配置安插及有关的脚本。

之前是fk_orders_table_id

INSERT INTO "tb001" ("c1", "c2") VALUES (1,'abcrn');
INSERT INTO "tb001" ("c1", "c2") VALUES (2,'你好啊rn');
INSERT INTO "tb001" ("c1", "c2") VALUES (3,'你好啊n');
INSERT INTO "tb001" ("c1", "c2") VALUES (4,'双引号"');
INSERT INTO "tb001" ("c1", "c2") VALUES (5,'全角双引号“');
INSERT INTO "tb001" ("c1", "c2") VALUES (6,'单引号'');
INSERT INTO "tb001" ("c1", "c2") VALUES (7,'全角单引号’');

  mysql备份工具:

4.MySQL where 子句

对此列名用双引号的标题,能够选取SET QUOTED_IDENTIFIEOdyssey ON 来拍卖,也得以利用SQLCMD加-I参数来管理
只是对文本中的单引号就无解了,MySQL中动用""来作为转义符,而SQL Server中应用三个单引号来表示二个单引号。

  mysqldump: 逻辑备份工具、MyISAM(温)、InnoDB(热备份)

  mysqldumper: 多线程的mysqldump,很难实现差异或增量备份;

  mysqlhotcopy:物理备份工具、几乎冷备;仅适用于MyISAM存储引擎

  lvm-snapshot: 接近于热备的工具:因为要先请求全局锁,而后创建快照,并在创建快照完成后释放全局锁;备份和恢复速度较快;很难实现增量备份,并且请求全局需要等待一段时间。数据文件和事务日志要在同一个逻辑卷上。

大家了解从MySQL表中央银行使SQL SELECT 语句来读取数据。
如需有条件地从表中甄选数据,可将 WHERE 子句增加到 SELECT 语句中。

MySQLdump能够将数据导成INSERT语句,并提供配置包容其余数据库的参数,但由于不相同数据库转义字符不一样,因而即使选用compatible=mssql也不能够担保导出的剧本能在SQL Server中平常实践。

接纳mysqldump命令备份

查询语句中你能够动用一个大概多少个表,表之间接选举拔逗号(,)分割,并使用WHERE语句来设定查询条件。
您能够在WHERE子句中内定别的条件。
你可以选择AND大概OCRUISER钦定三个或多少个标准。
WHERE子句也足以利用于SQL的 DELETE 大概 UPDATE 命令。
WHERE 子句看似于程序语言中的if条件,依照 MySQL 表中的字段值来读取钦点的数目。

##===========================================================================##

  MySQLdump是MySQL提供的三个极其有效的数据备份工具。MySQLdump命令实行时,可以将数据库备份成贰个文书文件,该公文中实际包涵了几个CREATE和INSERT语句,使用那个话语能够重复成立表和插入数据。

澳门新萄京官方网站 1

利用SELECT INTO OUTFILE来导出多少

  MySQLdump备份数据库语句的基本语法格式为:

图片.png

SELECT * INTO OUTFILE '/tmp/tb001.txt' 
FIELDS TERMINATED BY '||--||' 
LINES TERMINATED BY '||==||' FROM test.tb001;
mysqldump -u user -h host -p password dbname [tbname,[ tbname...]] >filename.sql

借使大家想再MySQL数据表中读取钦命的多少,WHERE 子句是特别管用的。
采纳主键来作为 WHERE 子句的原则查询是十三分高效的。
借使给定的规格在表中尚无其他相称的记录,那么查询不会重临任何数据。

在Linux下看看的是那般:

  • 备份单个数据库中的全体表

5.使用 LIKE 子句

澳门新萄京官方网站 2

接纳mysqldump命令备份数据库全体表

WHERE runoob_author LIKE '%jay';

虽说有个别乱,可是忍啦!

#创建样例数据库
mysql> CREATE DATABASE booksDB;
Query OK, 1 row affected (0.00 sec)

mysql> USE booksDB
Database changed
mysql> CREATE TABLE books
    -> (
    ->   bk_id  INT NOT NULL PRIMARY KEY,
    ->   bk_title VARCHAR(50) NOT NULL,
    ->   copyright YEAR NOT NULL
    -> );
Query OK, 0 rows affected (0.05 sec)

mysql> INSERT INTO books
    -> VALUES (11078, 'Learning MySQL', 2010),
    -> (11033, 'Study Html', 2011),
    -> (11035, 'How to use php', 2003),
    -> (11072, 'Teach youself javascript', 2005),
    -> (11028, 'Learing C  ', 2005),
    -> (11069, 'MySQL professional', 2009),
    -> (11026, 'Guide to MySQL 5.5', 2008),
    -> (11041, 'Inside VC  ', 2011);
Query OK, 8 rows affected (0.03 sec)
Records: 8  Duplicates: 0  Warnings: 0

mysql> CREATE TABLE authors
    -> (
    ->   auth_id     INT NOT NULL PRIMARY KEY,
    ->   auth_name  VARCHAR(20),
    ->  auth_gender CHAR(1)
    -> );
Query OK, 0 rows affected (0.04 sec)

mysql> INSERT INTO authors  
    -> VALUES (1001, 'WriterX' ,'f'),
    -> (1002, 'WriterA' ,'f'),
    -> (1003, 'WriterB' ,'m'),
    -> (1004, 'WriterC' ,'f'),
    -> (1011, 'WriterD' ,'f'),
    -> (1012, 'WriterE' ,'m'),
    -> (1013, 'WriterF' ,'m'),
    -> (1014, 'WriterG' ,'f'),
    -> (1015, 'WriterH' ,'f');
Query OK, 9 rows affected (0.04 sec)
Records: 9  Duplicates: 0  Warnings: 0

mysql> CREATE TABLE authorbook
    -> (
    ->   auth_id  INT NOT NULL,
    ->   bk_id   INT NOT NULL,
    ->   PRIMARY KEY (auth_id, bk_id),
    ->   FOREIGN KEY (auth_id) REFERENCES authors (auth_id),
    ->   FOREIGN KEY (bk_id) REFERENCES books (bk_id)
    -> );
Query OK, 0 rows affected (0.10 sec)

mysql> INSERT INTO authorbook
    -> VALUES (1001, 11033), (1002, 11035), (1003, 11072), (1004, 11028),
    -> (1011, 11078), (1012, 11026), (1012, 11041), (1014, 11069);
Query OK, 8 rows affected (0.02 sec)
Records: 8  Duplicates: 0  Warnings: 0

6.MySQL UNION 操作符
MySQL UNION 操作符的语法和实例。

然后下载文件,使用notepad 张开,接纳“格式”>> "转为ANSI编码格式" ,然后另存为新文件,在SQL Server中利用BULK INSERT来导入:

变成多少插入后,输入备份命令:

MySQL UNION操作符用于连接多个以上的 SELECT 语句的结果组合到三个结实会集中。四个 SELECT语句会删除重复的数据。

CREATE TABLE tmp_tb001(id NVARCHAR(2000),c1 NVARCHAR(2000))
GO
BULK INSERT tmp_tb001
FROM 'D:tb002.txt'
WITH(FIELDTERMINATOR='||--||',
ROWTERMINATOR='||==||'
)
GO
SELECT * FROM tmp_tb001
[root@mylinux ~]# mysqldump -u root -p booksDB > books.sql
Enter password:
SELECT country FROM Websites
UNION
SELECT country FROM apps
ORDER BY country;

也能够采用SQL Server的导入导出工具来拍卖,首要修改分隔符。

备份实现后的公文差相当的少内容为:

澳门新萄京官方网站 3

专注运用SELECT INTO OUTFILE导出文件时,NULL值被代表为N,而N在导入SQL Server时会被当场字符串“N”来管理,由此提议先制造多少个一心由NVARCHAOdyssey类型列组成的表来“暂存”导入的时候,然后经过多少清理后再导入正式表中,对于懒与一列一列折腾的人来讲,能够拼下SQL来收获表的装有列转变:

[root@mylinux ~]# cat books.sql 
-- MySQL dump 10.13  Distrib 5.5.56, for Linux (x86_64)
--
-- Host: localhost    Database: booksDB
-- ------------------------------------------------------
-- Server version       5.5.56-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE=' 00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `authorbook`
--

DROP TABLE IF EXISTS `authorbook`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `authorbook` (
  `auth_id` int(11) NOT NULL,
  `bk_id` int(11) NOT NULL,
  PRIMARY KEY (`auth_id`,`bk_id`),
  KEY `bk_id` (`bk_id`),
  CONSTRAINT `authorbook_ibfk_1` FOREIGN KEY (`auth_id`) REFERENCES `authors` (`auth_id`),
  CONSTRAINT `authorbook_ibfk_2` FOREIGN KEY (`bk_id`) REFERENCES `books` (`bk_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
...

图片.png

SELECT 
'CASE WHEN [' T1.name ']=''N'' THEN NULL ELSE [' T1.name '] END AS [' T1.name '],'
FROM sys.all_columns T1
WHERE T1.object_id=OBJECT_ID('tmp_tb001')

  可以窥见,备份文件包蕴部分消息,文件伊始首先申明了备份文件使用的mysqldump版本号;然后是备份账号的称谓和主机音信,以及备份的数据库的名称,最终是MySQL服务器的版本号。

评释:UNION 不可能用于列出五个表中具有的country。假若有个别网址和电脑软件来自同一个国家,每一种国家只会列出三遍。UNION 只会挑选不一致的值。请使用 UNION ALL 来挑选重复的值!

是因为大家强行将N当成NULL来更改,难免会产生风险,将忠实数据就为’N‘的值变为NULL,由此导完数据后检查是必须的。

  备份文件接下去的有的是部分SET语句,那么些讲话将一些种类变量值赋值给用户定义变量,以保障被苏醒的数据库的系统变量和原先备份时的变量一样。

SQL UNION ALL 实例

最终语句为:

  备份文件中的'--'发轫的是注释语句,以'/*!'开头,以'*/'结尾的言语为可执行的mysql注释,那些言辞能够被MySQL推行。

SELECT country FROM Websites
UNION ALL
SELECT country FROM apps
ORDER BY country;
SELECT 
CASE WHEN [id]='N' THEN NULL ELSE [id] END AS [id],
CASE WHEN [c1]='N' THEN NULL ELSE [c1] END AS [c1]
FROM tmp_tb001
  • 备份数据库中的某些表

澳门新萄京官方网站 4

施行结果为:

备份booksDB数据库中的books表

图片.png

澳门新萄京官方网站 5

[root@mylinux ~]# mysqldump -u root -p booksDB books > books_20170810.sql          
Enter password: 
[root@mylinux ~]# cat books_20170810.sql 
-- MySQL dump 10.13  Distrib 5.5.56, for Linux (x86_64)
--
-- Host: localhost    Database: booksDB
-- ------------------------------------------------------
-- Server version       5.5.56-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE=' 00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `books`
--

带有 WHERE 的 SQL UNION ALL

##=======================================================================##

  • 备份八个数据库
SELECT country, name FROM Websites
WHERE country='CN'
UNION ALL
SELECT country, app_name FROM apps
WHERE country='CN'
ORDER BY country;

导出INSERT脚本存在转义字符单引号的难点,同临时间导出数据不含有GO,在供给多量数量导入到SQL SE中华VVEQX56时存在严重的性训斥题,能够品尝参照他事他说加以考察本人的《Powershell--批量拆分SQL语句为业务并批管理》来拍卖,但也是主题材料多多。

使用mysqldump备份booksDB和test数据库

7.MySQL GROUP BY 语句
分组

而导出文件然后导入的情势,必要对文本实行一回调换,文件不小时notepad 或然无法打卡,UE能稍微给力点,但面前碰到少数个G的文书文件也是不能,同有的时候间NULL值管理也亟需审慎对待。

[root@mylinux ~]# mysqldump -u root -p --databases  booksDB test> books_testDB_20170710.sq
l
Enter password:
SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

##========================================================================##

行使mysqldump备份服务器中的全体数据库

8.Mysql 连接的使用

好啊,是时候上妹子啊。

[root@mylinux ~]# mysqldump  -u root -p --all-databases > alldbinMySQL.sql          
Enter password:

INNE福特Explorer JOIN(内接连,或等值连接):获取四个表中字段相配关系的记录。
LEFT JOIN(左连接):获取左表全部记录,即便右表未有对应合作的记录。
酷路泽IGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表全部记录,即便左表没有对应极其的笔录。

澳门新萄京官方网站 6

  mysqldump还会有一点别样选型能够用来钦赐备份进程,常用选项有:

澳门新萄京官方网站 7


–all-databases , -A
导出全部数据库
mysqldump -uroot -p –all-databases

–all-tablespaces , -Y
导出全部表空间
mysqldump -uroot -p –all-databases –all-tablespaces

–no-tablespaces , -y
不导出任何表空间信息
mysqldump -uroot -p –all-databases –no-tablespaces

–add-drop-database
每个数据库创建之前添加drop数据库语句
mysqldump -uroot -p –all-databases –add-drop-database

–add-drop-table
每个数据表创建之前添加drop数据表语句。(默认为打开状态,使用–skip-add-drop-table取消选项)
mysqldump -uroot -p –all-databases (默认添加drop语句)
mysqldump -uroot -p –all-databases –skip-add-drop-table (取消drop语句)

–add-locks
在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(默认为打开状态,使用–skip-add-locks取消选项)
mysqldump -uroot -p –all-databases (默认添加LOCK语句)
mysqldump -uroot -p –all-databases –skip-add-locks (取消LOCK语句)

–comments
附加注释信息。
默认为打开,可以用–skip-comments取消mysqldump -uroot -p –all-databases (默认记录注释)mysqldump -uroot -p –all-databases –skip-comments (取消注释)

–compact
导出更少的输出信息(用于调试),去掉注释和头尾等结构,可以使用选项:–skip-add-drop-table –skip-add-locks –skip-comments –skip-disable-keys
mysqldump -uroot -p –all-databases –compact

–complete-insert, -c
使用完整的insert语句(包含列名称)。这么做能提高插入效率,但是可能会受到max_allowed_packet参数的影响而导致插入失败。
mysqldump -uroot -p –all-databases –complete-insert

–compress, -C在客户端和服务器之间启用压缩传递所有信息mysqldump -uroot -p –all-databases –compress

–databases, -B
导出几个数据库。参数后面所有名字参量都被看作数据库名。
mysqldump -uroot -p –databases test mysql

–debug
输出debug信息,用于调试。
默认值为:d:t:o,/tmp/mysqldump.trace
mysqldump -uroot -p –all-databases –debug
mysqldump -uroot -p –all-databases –debug="d:t:o,/tmp/debug.trace"

–debug-info
输出调试信息并退出
mysqldump -uroot -p –all-databases –debug-info

–default-character-set
设置默认字符集,默认值为utf8
mysqldump -uroot -p –all-databases –default-character-set=latin1

–delayed-insert
采用延时插入方式(INSERT DELAYED)导出数据
mysqldump -uroot -p –all-databases –delayed-insert

–events, -E
导出事件
mysqldump -uroot -p –all-databases –events

–flush-logs
开始导出之前刷新日志
请注意:假如一次导出多个数据库(使用选项–databases或者–all-databases),将会逐个数据库刷新日志。除使用–lock-all-tables或者–master-data外。在这种情况下,日志将会被刷新一次,相应的所以表同时被锁定。因此,如果打算同时导出和刷新日志应该使用–lock-all-tables 或者–master-data 和–flush-logs。
mysqldump -uroot -p –all-databases –flush-logs

–flush-privileges
在导出mysql数据库之后,发出一条FLUSH PRIVILEGES 语句。为了正确恢复,该选项应该用于导出mysql数据库和依赖mysql数据库数据的任何时候。
mysqldump -uroot -p –all-databases –flush-privileges

–force
在导出过程中忽略出现的SQL错误
mysqldump -uroot -p –all-databases –force

–host, -h
需要导出的主机信息
mysqldump -uroot -p –host=localhost –all-databases

–ignore-table
不导出指定表。
指定忽略多个表时,需要重复多次,每次一个表。每个表必须同时指定数据库和表名。
例如:–ignore-table=database.table1 –ignore-table=database.table2 ……
mysqldump -uroot -p –host=localhost –all-databases –ignore-table=mysql.user

–lock-all-tables, -x
提交请求锁定所有数据库中的所有表,以保证数据的一致性。
这是一个全局读锁,并且自动关闭–single-transaction 和–lock-tables 选项。
mysqldump -uroot -p –host=localhost –all-databases –lock-all-tables

–lock-tables, -l
开始导出前,锁定所有表。
用READ LOCAL锁定表以允许MyISAM表并行插入。对于支持事务的表例如InnoDB和BDB,–single-transaction是一个更好的选择,因为它根本不需要锁定表。
请注意当导出多个数据库时,–lock-tables分别为每个数据库锁定表。因此,该选项不能保证导出文件中的表在数据库之间的逻辑一致性。不同数据库表的导出状态可以完全不同。
mysqldump -uroot -p –host=localhost –all-databases –lock-tables

–no-create-db, -n
只导出数据,而不添加CREATE DATABASE 语句。
mysqldump -uroot -p –host=localhost –all-databases –no-create-db

–no-create-info, -t只导出数据,而不添加CREATE TABLE 语句
mysqldump -uroot -p –host=localhost –all-databases –no-create-info

–no-data, -d
不导出任何数据,只导出数据库表结构
mysqldump -uroot -p –host=localhost –all-databases –no-data

–password, -p
连接数据库密码

–port, -P
连接数据库端口号

–user, -u
指定连接的用户名。



作者:HoLau
链接:http://www.jianshu.com/p/18db0fbb02b8

图片.png


行使mysqlhotcopy工具飞速备份

澳门新萄京官方网站 8

  MySQLhotcopy是二个Perl脚本。它利用LOCK TABLES、FLUSH TABLES和cp或scp来火速备份数据库。它是备份数据库后单个表的最快的门道,然则只好运营在数据库目录所在的机械上,何况不得不备份MyISAM类型的表,其语法格式为:

将MySQL数据导入到SQL,导入数据。图片.png

mysqlhotcopy db_name_1,...db_name_n /[ath/to new_directory

澳门新萄京官方网站 9

应用mysqlhotcopy备份test数据库到/usr/backup目录下

将MySQL数据导入到SQL,导入数据。图片.png

mysqlhotcopy  -u root -p test /usr/backup

= 和 != 运算符对NULL是不起功用的:

推断值是或不是为 NULL,必须选择IS NULL和IS NOT NULL

13.2、数据恢复

MySQL正则表明式

选取MySQL命令恢复生机

MySQL 事务

 对于早就备份的盈盈CREATE 、INSERT语句的公文,可以选用MySQL命令导入到数据库中。MySQL命令直接施行文书汇总的那个话语,其语法为:

MySQL 事务首要用以拍卖操作量大,复杂度高的数据。举个例子说,在职员管理种类中,你剔除一位员,你即供给删除职员的基本资料,也要删减和该人士相关的新闻,如信箱,小说等等,那样,那么些数据库操作语句就构成三个事情!

mysql -u user -p [dbname] <filename.sql
在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务
事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行
事务用来管理insert,update,delete语句

将books.sql文件中的备份导入到数据库中

一般的话,事务是必须满意4个尺码(ACID):Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性)

mysql -u root-p booksDB < books.sql

在Mysql调整台使用工作来操作
1,先导多个事情

 试行该语句前,必须先在MySQL服务器中开创booksDB数据库,固然不设有复苏进程将会出错。如若已经报到MySQL服务器,能够动用source命令导入SQL文件,语法格式为:

start transaction
source filename

澳门新萄京官方网站,2, 做保存点

选拔root用户登入到服务器,然后利用souce导入本地的备份文件books.sql

savepoint 保存点名称
use booksdb;
source books.sql;

3, 操作
4,能够回滚,能够提交,没不正常,就交给,有毛病就回滚。

MySQL 复制表

选拔mysqlhotcopy飞快回涨

品味以下实例来复制表 runoob_tbl 。
步骤一:
赢得数据表的总体结构。

 MySQLhotcopy备份后的公文能够用来还原数据库,在MySQL服务器结束运营时,将备份的数据库文件复制到MySQL存放数据的岗位,重启MySQL服务器即可。若是以根用户实行该操作,必须钦赐数据库文件的持有者,输入语句为:

步骤二:
修改SQL语句的数码表名,并实施SQL语句。

chown -R mysql.mysql /var/lib/mysql/dbname

步骤三:
实践完第二步骤后,你将要数据库中创建新的克隆表 clone_tbl。 假若你想拷贝数据表的数码你能够选取 INSERT INTO... SELECT 语句来兑现。

从mysqlhotcopy拷贝的备份苏醒数据库

MySQL 元数据

cp –R  /usr/backup/test usr/local/mysql/data

查询结果信息: SELECT, UPDATE 或 DELETE语句影响的记录数。
数据库和数据表的新闻: 包蕴了数据库及数据表的结构音信。
MySQL服务器音讯: 饱含了数据库服务器的近些日子情状,版本号等。

实践该语句,重启服务器,MySQL将东山再起到备份状态。

收获服务器元数据

13.3、表的导入和导出

SELECT VERSION( )   服务器版本信息
SELECT DATABASE( )  当前数据库名 (或者返回空)
SELECT USER( )  当前用户名
SHOW STATUS 服务器状态
SHOW VARIABLES  服务器配置变量

应用SELECT...INTO  OUTFILE导出文本文件

MySQL 系列使用
MySQL连串是一组整数:1, 2, 3, ...,由于一张数据表只可以有三个字段自增主键, 若是你想完结任何字段也落到实处活动扩大,就能够利用MySQL类别来落到实处。
使用AUTO_INCREMENT

 MySQL数据库导出数据时,允许使用带有导出定义的SELECT语句实行多少的到处操作。该文件被创制到服务器主机上,因而必须持有文件写入权限,才干利用此语法。SELECT..INTO OUTFILE语句基本格式为:

MySQL中最简单易行利用系列的主意正是选用 MySQL AUTO_INCREMENT 来定义列。

SELECT columnlist FROM table WHERE condition INTO OUTFILE 'file_name' [OPTIONS]
 --OPTIONS 选项
  FIELDS TERMINATED BY ‘value’
  FIELDS [OPTIONALLY] ENCLOSED BY 'value'
  FIELDS ESCAPED BY 'value'
  LINES STARTING BY 'value'
  LINES TERMINATED BY 'value'

MySQL 及 SQL 注入

FIELDS TERMINATED BY ‘value’:设置字段间的分隔符

FIELDS [OPTIONALLY] ENCLOSED BY 'value':设置字段的包围符,只能为单个字符

FIELDS ESCAPED BY 'value':设置如何写入或读取特殊字符,只能为单个字符

LINES STARTING BY 'value':设置每行数据开头的字符

LINES TERMINATED BY 'value':设置每行数据结尾的字符

纵然经过网页获取用户输入的多少并将其插入二个MySQL数据库,那么就有望发生SQL流入安全的主题材料。
卫戍SQL注入,并经过脚本来过滤SQL中注入的字符。
所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面央浼的询问字符串,最后达到期骗服务器实践恶意的SQL命令。
咱俩祖祖辈辈不要相信用户的输入,大家必须断定用户输入的数额都以不安全的,咱们都急需对用户输入的多少举办过滤管理。

 FIELDS和LINES五个子句自行选购,假若都被内定,FIELDS必须放在LINES的先头。

// 设定$name 中插入了我们不需要的SQL语句
$name = "Qadir'; DELETE FROM users;";
mysql_query("SELECT * FROM users WHERE name='{$name}'");

  SELECT..INTO OUTFILE语句能够急忙地把三个表转储到服务器上。假如想要在服务器主机之外的片段客户主机上创设结果文件。不可能应用SELECT..INTO OUTFILE。应该在主机上利用诸如'mysql -e 'SELECT...' > fine_name'的命,来变化文书。

防止SQL注入

运用SELECT...INTO OUTFILE将test数据库中的books表中的记录导出到文本文件

Like语句中的注入

mysql> SELECT *  FROM booksDB.books INTO OUTFILE "/tmp/book0.txt";  
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
mysql> 
mysql>  show global variables like '%secure%';  
 ------------------ ------- 
| Variable_name    | Value |
 ------------------ ------- 
| secure_auth      | OFF   |
| secure_file_priv | NULL  |
 ------------------ ------- 
2 rows in set (0.00 sec)

[root@mylinux ~]# vim /etc/my.cnf
   添加 secure_file_priv=/tmp/
[root@mylinux ~]# service mysqld restart
Shutting down MySQL.. SUCCESS! 
Starting MySQL.. SUCCESS! 
[root@mylinux ~]# 
[root@mylinux ~]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 1
Server version: 5.5.56-log Source distribution

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql>  show global variables like '%secure%';                     
 ------------------ ------- 
| Variable_name    | Value |
 ------------------ ------- 
| secure_auth      | OFF   |
| secure_file_priv | /tmp/ |
 ------------------ ------- 
2 rows in set (0.00 sec)

mysql> SELECT *  FROM booksDB.books INTO OUTFILE "/tmp/book0.txt";            
Query OK, 8 rows affected (0.00 sec)

[root@mylinux tmp]# cat book0.txt 
11026   Guide to MySQL 5.5      2008
11028   Learing C       2005
11033   Study Html      2011
11035   How to use php  2003
11041   Inside VC       2011
11069   MySQL professional      2009
11072   Teach youself javascript        2005
11078   Learning MySQL  2010

like查询时,假使用户输入的值有""和"%",则会冒出这种情景:用户本来只是想询问"abcd",查询结果中却有"abcd_"、"abcde"、"abcdf"等等;用户要询问"三成"(注:五分三)时也会并发难点。

$sub = addcslashes(mysql_real_escape_string("%something_"), "%_");
// $sub == %something_
mysql_query("SELECT * FROM messages WHERE subject LIKE '{$sub}%'");

使用SELECT...INTO OUTFILE将booksDB数据库中的books表中的记录导出到文本文件,使用FIELDS选项和LINES选项,供给字段之间利用逗号‘,’间隔,全体字段值用双引号括起来,定义转义字符定义为单引号‘’’

MySQL 导出多少

mysql> SELECT * FROM booksDB.books INTO OUTFILE "/tmp/book1.txt"
    ->   FIELDS 
    ->     TERMINATED BY ','
    ->     ENCLOSED BY '"'
    ->     ESCAPED BY '''
    ->   LINES 
    ->     TERMINATED BY 'rn';
Query OK, 8 rows affected (0.00 sec)

[root@mylinux tmp]# cat book1.txt 
"11026","Guide to MySQL 5.5","2008"
"11028","Learing C  ","2005"
"11033","Study Html","2011"
"11035","How to use php","2003"
"11041","Inside VC  ","2011"
"11069","MySQL professional","2009"
"11072","Teach youself javascript","2005"
"11078","Learning MySQL","2010"

MySQL中您能够应用SELECT...INTO OUTFILE语句来简单的导出数据到文本文件上。
运用 SELECT ... INTO OUTFILE 语句导出多少
以下实例中大家将数据表 runoob_tbl 数据导出到 /tmp/tutorials.txt 文件中:

运用SELECT...INTO OUTFILE将booksDB数据库中的books表中的记录导出到文本文件,使用LINES选项,须求每行记录以字符串“> ”初叶,以“<end>”字符串结尾

mysql> SELECT * FROM runoob_tbl 
    -> INTO OUTFILE '/tmp/tutorials.txt';
mysql> SELECT * FROM booksDB.books INTO OUTFILE "/tmp/book2.txt"
    ->   LINES 
    ->     STARTING BY '> '
    ->     TERMINATED BY '<end>rn';
Query OK, 8 rows affected (0.00 sec)

[root@mylinux tmp]# cat book2.txt  
> 11026 Guide to MySQL 5.5      2008<end>
> 11028 Learing C       2005<end>
> 11033 Study Html      2011<end>
> 11035 How to use php  2003<end>
> 11041 Inside VC       2011<end>
> 11069 MySQL professional      2009<end>
> 11072 Teach youself javascript        2005<end>
> 11078 Learning MySQL  2010<end>

你能够由此命令选项来设置数据输出的内定格式,以下实例为导出 CSV 格式:

mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/tutorials.txt'
    -> FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    -> LINES TERMINATED BY 'rn';

动用mysqldump导出文本文件

SELECT ... INTO OUTFILE 语句有以下属性:

 mysqldump成立三个包括创制表的CREATE TABLE语句的tablename.sql文件和二个带有其数额的tablename.txt文件,其导出文本文件的主干语法为:

LOAD DATA INFILE是SELECT ... INTO OUTFILE的逆操作,SELECT句法。为了将二个数据库的数目写入三个文书,使用SELECT ... INTO OUTFILE,为了将文件读回数据库,使用LOAD DATA INFILE。
SELECT...INTO OUTFILE 'file_name'形式的SELECT能够把被采用的行写入八个文本中。该文件被成立到服务器主机上,由此你必须持有FILE权限,工夫采用此语法。
出口不可能是一个已存在的文件。幸免文件数量被曲解。
您须求有二个登录服务器的账号来找出文件。否则 SELECT ... INTO OUTFILE 不会起任何功效。
在UNIX中,该公文被创造后是可读的,权限由MySQL服务器所持有。那表示,纵然您就足以读取该公文,但或许无法将其删除。

mysqldump -T path -u root -p dbname [tables] [options] #指定T才可以导出纯文本文件
--options 选项
--fields-terninated-by=value
--fields-enclosed-by=value
--fields-optionally-by=value
--fields-escaped-by=value
--lines-terninated-by=value

导出SQL格式的数目
导出SQL格式的数额到钦点文件,如下所示:

运用mysqldump将booksDB数据库中的books表中的记录导出到文本文件

$ mysqldump -u root -p RUNOOB runoob_tbl > dump.txt
password ******
[root@mylinux ~]# mysqldump -T /tmp -u root -p booksDB books
Enter password: 
[root@mylinux ~]# cd /tmp
[root@mylinux tmp]# ls
agent_cmd.sock  book1.txt  books.sql  dir    person0.txt
book0.txt       book2.txt  books.txt  fstab
[root@mylinux tmp]# cat books.sql 
-- MySQL dump 10.13  Distrib 5.5.56, for Linux (x86_64)
--
-- Host: localhost    Database: booksDB
-- ------------------------------------------------------
-- Server version       5.5.56-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE=' 00:00' */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `books`
--

DROP TABLE IF EXISTS `books`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `books` (
  `bk_id` int(11) NOT NULL,
  `bk_title` varchar(50) NOT NULL,
  `copyright` year(4) NOT NULL,
  PRIMARY KEY (`bk_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2017-08-11 17:51:06
[root@mylinux tmp]# cat books.txt 
11026   Guide to MySQL 5.5      2008
11028   Learing C       2005
11033   Study Html      2011
11035   How to use php  2003
11041   Inside VC       2011
11069   MySQL professional      2009
11072   Teach youself javascript        2005
11078   Learning MySQL  2010

将数据表及数据库拷贝至其余主机

比方你必要将数据拷贝至另外的 MySQL 服务器上, 你可以在 mysqldump 命令中钦定数据库名及数据表。
在源主机上施行以下命令,将数据备份至 dump.txt 文件中:

运用mysqldump命令将test数据库中的person表中的记录导出到文本文件,使用FIELDS选项,须求字段之间利用逗号‘,’间隔,全体字符类型字段值用双引号括起来,定义转义字符定义为问号‘?’,每行记录以回车换行符“rn”结尾

$ mysqldump -u root -p database_name table_name > dump.txt
password *****
[root@mylinux tmp]# mysqldump -T /tmp  -u root -p booksDB books --fields-terminated-by=, -
-fields-optionally-enclosed-by=" --fields-escaped-by=? --lines-terminated-by=rn
Enter password: 
[root@mylinux tmp]# ls
agent_cmd.sock  book1.txt  books.sql  dir    person0.txt
book0.txt       book2.txt  books.txt  fstab
[root@mylinux tmp]# cat book.txt
cat: book.txt: 没有那个文件或目录
[root@mylinux tmp]# cat books.txt
11026,"Guide to MySQL 5.5",2008
11028,"Lea?ring C  ",2005
11033,"Study Html",2011
11035,"How to use php",2003
11041,"Inside VC  ",2011
11069,"MySQL p?rofessional",2009
11072,"Teach youself javasc?ript",2005
11078,"Lea?rning MySQL",2010
[root@mylinux tmp]#

举例完全备份数据库,则没有须求使用一定的表名称。
若果您要求将备份的数据库导入到MySQL服务器中,能够使用以下命令,使用以下命让你须求断定数据库已经创办:

运用mysql命令导出文本文件

$ mysql -u root -p database_name < dump.txt
password *****

  假若MySQL服务器是独自的机器,用户是在多少个client上海展览中心开操作,用户要把数据结果导入到client机器上,可以利用mysql -e语句,其语法格式为:

你也足以采取以下命令将导出的数量直接导入到远程的服务器上,但请保管两台服务器是相通的,是足以互相拜见的:</p>

mysql -u root -p --execute="SELECT 语句" dbname >filename.txt
$ mysqldump -u root -p database_name 
       | mysql -h other-host.com database_name

运用mysql语句导出booksDB数据库中books表中的记录到文本文件

上述命令中使用了管道来将导出的数额导入到钦定的长途主机上。

[root@mylinux tmp]# mysql -u root -p --execute="SELECT * FROM books;" booksDB > /tmp/books
4.txt
Enter password: 
[root@mylinux tmp]# cat books4.txt
bk_id   bk_title        copyright
11026   Guide to MySQL 5.5      2008
11028   Learing C       2005
11033   Study Html      2011
11035   How to use php  2003
11041   Inside VC       2011
11069   MySQL professional      2009
11072   Teach youself javascript        2005
11078   Learning MySQL  2010

MySQL 导入数据

MySQL中能够动用二种轻巧的主意来导入MySQL导出的数码。

利用mysql命令导出booksDB数据库中books表中的记录到文本文件,使用--vertical参数字展现示结果

动用 LOAD DATA 导入数据
MySQL 中提供了LOAD DATA INFILE语句来插入数据。 以下实例师长从当前目录中读取文件 dump.txt ,将该文件中的数据插入到这段时间数据库的 mytbl 表中。

[root@mylinux tmp]# mysql -u root -p --vertical --execute="SELECT * FROM books;" booksDB >
 /tmp/books5.txt 
Enter password: 
[root@mylinux tmp]# cat books5.txt 
*************************** 1. row ***************************
    bk_id: 11026
 bk_title: Guide to MySQL 5.5
copyright: 2008
*************************** 2. row ***************************
    bk_id: 11028
 bk_title: Learing C  
copyright: 2005
*************************** 3. row ***************************
    bk_id: 11033
 bk_title: Study Html
copyright: 2011
*************************** 4. row ***************************
    bk_id: 11035
 bk_title: How to use php
copyright: 2003
*************************** 5. row ***************************
    bk_id: 11041
 bk_title: Inside VC  
copyright: 2011
*************************** 6. row ***************************
    bk_id: 11069
 bk_title: MySQL professional
copyright: 2009
*************************** 7. row ***************************
    bk_id: 11072
 bk_title: Teach youself javascript
copyright: 2005
*************************** 8. row ***************************
    bk_id: 11078
 bk_title: Learning MySQL
copyright: 2010
mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;

选取LOAD DATA INFILE导入文本文件

应用 mysqlimport 导入数据
mysqlimport客户端提供了LOAD DATA INFILEQL语句的三个指令行接口。mysqlimport的大相当多增选直接对应LOAD DATA INFILE子句。
从文件 dump.txt 中将数据导入到 mytbl 数据表中, 能够利用以下命令:

LOAD DATA语句基本格式为:

$ mysqlimport -u root -p --local database_name dump.txt
password *****
LOAD DATA INFILE 'filename.txt' INTO TABLE tablename  [OPTIONS] [IGNORE number LINES]
 --OPTIONS 选项
  FIELDS TERMINATED BY ‘value’
  FIELDS [OPTIONALLY] ENCLOSED BY 'value'
  FIELDS ESCAPED BY 'value'
  LINES STARTING BY 'value'
  LINES TERMINATED BY 'value'

动用LOAD DATA命令将/tmp/books0.txt文件中的数据导入到booksDB数据库中的books表

mysql> USE booksDB;
Database changed

mysql> DELETE FROM books;
Query OK, 8 rows affected (0.02 sec)

mysql> LOAD DATA  INFILE '/tmp/book0.txt' INTO TABLE booksDB.books; 
Query OK, 8 rows affected (0.01 sec)
Records: 8  Deleted: 0  Skipped: 0  Warnings: 0

mysql> SELECT *FROM books;
 ------- -------------------------- ----------- 
| bk_id | bk_title                 | copyright |
 ------- -------------------------- ----------- 
| 11026 | Guide to MySQL 5.5       |      2008 |
| 11028 | Learing C                |      2005 |
| 11033 | Study Html               |      2011 |
| 11035 | How to use php           |      2003 |
| 11041 | Inside VC                |      2011 |
| 11069 | MySQL professional       |      2009 |
| 11072 | Teach youself javascript |      2005 |
| 11078 | Learning MySQL           |      2010 |
 ------- -------------------------- ----------- 
8 rows in set (0.00 sec)

应用mysqlimport导入文本文件

  使用MySQLimport能够导入文本文件,并无需登入MySQL客户端,其命令的基本语法格式为:

mysqlimport -u root -p dbname filename.txt [options]
--options 选项
--fields-terninated-by=value
--fields-enclosed-by=value
--fields-optionally-by=value
--fields-escaped-by=value
--lines-terninated-by=value

利用mysqlimport命令将/tmp目录下的books.txt文件内容导入到booksDB数据库中,字段之间采纳逗号‘,’间隔,字符类型字段值用双引号括起来,定义转义字符定义为问号‘?’,每行记录以回车换行符“rn”结尾

mysqlimport -u root -p booksDB /tmp/books.txt --fields-terminated-by=, --fields-optionally-enclosed-by=" --fields-escaped-by=? --lines-terminated-by=rn

本文由澳门新萄京官方网站发布于数据库网络,转载请注明出处:将MySQL数据导入到SQL,导入数据

关键词: