MYSQL库表导出,文件CSV、TXT导入

目录

一、mysqldump 

选项说明

二、导入SQL文件:

soure 方法导入

三、导入文件CSV、TXT:


一、mysqldump 

mysqldump 是 MySQL 自带的逻辑备份工具。 它的备份原理是通过协议连接到 MySQL 数据库,将需要备份的数据查询出来,将查询出的数据转换成对应的insert 语句,当我们需要还原这些数据时,只要执行这些 insert 语句,即可将对应的数据还原。

命令:

mysqldump [选项] 数据库名 [表名] > 脚本名

or

mysqldump [选项] --数据库名 [选项 表名] > 脚本名

选项说明

参数名缩写含义
--host-h服务器IP地址
--port-P服务器端口号
--user-uMySQL 用户名
--pasword-pMySQL 密码
--databases指定要备份的数据库
--all-databases备份mysql服务器上的所有数据库
--compact压缩模式,产生更少的输出
--comments添加注释信息
--complete-insert输出完成的插入语句
--lock-tables备份前,锁定所有数据库表
--no-create-db/--no-create-info禁止生成创建数据库语句
--force当出现错误时仍然继续备份操作
--default-character-set指定默认字符集
--add-locks备份数据库表时锁定数据库表

示例:

备份所有数据库:

mysqldump -uroot -p --all-databases > /backup/mysqldump/all.sql

备份指定数据库:

mysqldump -uroot -p db_test > /backup/mysqldump/test.sql

备份指定数据库指定表(多个表以空格间隔)

mysqldump -uroot -p mysql db_ads table_test> /backup/mysqldump/table_test.sql

备份指定数据库排除某些表

mysqldump -uroot -p test --ignore-table=test.t1 --ignore-table=test.t2 > /backup/mysqldump/test2.sql


二、导入SQL文件:

mysqladmin -uroot -p create db_name 
mysql -uroot -p  db_name < /db_name.sql

注:在导入备份数据库前,db_name如果没有,是需要创建的; 而且与db_name.sql中数据库名是一样的才可以导入。

soure 方法导入

mysql > use db_name
mysql > source /backup/mysqldump/db_name.sql


三、导入文件CSV、TXT:

首先二步

1、如果没有开启这个功能时执行LOAD DATA INFILE报错我们通过命令,查看一下是否开启和关闭

show global variables like 'local_infile';

2、如果是关闭状态的,就把它开启一下(1为开启,0为关闭 )

set global local_infile=1;

LOAD DATA语句以非常高的速度将文本文件中的行读入表中

LOAD DATA
    [LOW_PRIORITY | CONCURRENT] [LOCAL]
    INFILE 'file_name'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [PARTITION (partition_name [, partition_name] ...)]
    [CHARACTER SET charset_name]
    [{FIELDS | COLUMNS}
        [TERMINATED BY 'string']
        [[OPTIONALLY] ENCLOSED BY 'char']
        [ESCAPED BY 'char']
    ]
    [LINES
        [STARTING BY 'string']
        [TERMINATED BY 'string']
    ]
    [IGNORE number {LINES | ROWS}]
    [(col_name_or_user_var
        [, col_name_or_user_var] ...)]
    [SET col_name={expr | DEFAULT}
        [, col_name={expr | DEFAULT}] ...]

根据官方的资料和网上搜集的资料,对上面的语法格式一一解释一下:如

1、LOW_PRIORITY
如果你指定关键词LOW_PRIORITY, 这个只对那些只采用了表级别锁(如MYISAM)的引擎有影响,比如InnoDB使用的是行锁,不受这个影响,具体的来说,使用了LOW_PRIORITY,则本操作会在其它线程完成之后再操作。

2、CONCURRENT:会和其它线程同时进行,这个对性能是有一些影响

3、LOCAL
        这是个非常重要的关键字,指明了文件的位置,简单的说,如果指定了local,则表示文件位于客户端,如果没有,则表示文件在Server端。同时,这个关键字的使用还会影响到load data命令对于错误数据的处理方式

        A) 如果是指定了local,则数据从客户端读取,文档中的说法是会在服务端的临时目录下创建一份文件的copy,但我在测试的时候并没有发现,如果file_name中是绝对路径就不用解释,如果是相对路径,则文件的位置应该是在客户端程序启动的位置,所以为了保险,一般使用绝对路径。由于涉及到数据传输,所以这种方式会相对来说慢一些。

        B) 如果未指定local,则文件应该是直接在服务端,这种情况下如果文件名使用的是相对路径,则又分两种情况,一种是文件名前没有相对目录,则直接是在默认数据库的data目录下查找,如果是指定了相对目录,则从server的data目录下寻找。

        C) 如果指定了local,则当某条数据处理有误时,系统把这个错误记录为一个warning,不会影响下一条数据的处理,因为涉及到数据传输。而如果没有指定local,则默认情况下,遇到错误后不会继续执行。

        所以,如果我们是在客户端执行load data命令,一定记得加上local参数。

4、REPLACE | IGNORE
        如果指定了,那么,当前的数据跟表中的数据有惟一性冲突的时候,采用什么样的方式,是替换已有还是忽略当前。特别需要说明的是,当这两种方式都未指定时,如果数据来自于客户端,则重复的数据会忽略,如果来源于服务端,则命令将终止执行。

5、PARTITION
        指定具体的分区,由于之前数据库中没用到过分区,个人对这块也不熟悉,所以暂时不解释,等到了解了再补充

6、CHARACTER SET
         指定编码集,如果文件的编码跟数据库的编码不一致,可能会出现乱码的问题。所以要注意的是,这里指定的是文件的编码集,而不是数据库的编码集

7、[{FIELDS | COLUMNS} [TERMINATED BY ‘string’][[OPTIONALLY] ENCLOSED BY ‘char’][ESCAPED BY ‘char’]]

[{FIELDS | COLUMNS}
        [TERMINATED BY 'string']
        [[OPTIONALLY] ENCLOSED BY 'char']
        [ESCAPED BY 'char']
    ]

这些指定了对于字段的处理方式
FIELDS和COLUMNS指定其中一个即可。
TERMINATED表示字段间的分隔符,
ENCLOSED BY 的意思是字段值由什么符号包围
ESCAPED 表示指定转义字符。
在不指定这个参数的情况下,默认的字段分隔符是\t, 默认字段值无任何值包围,默认转义字符为\.(反斜)

8、 [LINES [STARTING BY ‘string’] [TERMINATED BY ‘string’]]
        指定每一行的起始符与终止符,默认情况下,起始符为空,终止符为’\n’,对于windows产生的文本文件来说,需要指定换行符为’\r\n’.

9、IGNORE number LINES
         忽略文件中的前 number 行,通常情况下,我们生成的文件可能有列名,那么要忽略的放在,这儿的值设置为1即可。需要注意的是这里是行的数量,而不是行号

10、[(col_name_or_user_var,…)]
        有的时候我们不需要给所有的字段都填充值,这个时候就可以指定列名,以()将列名括起来,注意这里也可以是用户自定义的用户表达式。

11、[SET col_name = expr,…]
        如果在前一步中指定了用户表达式,那么相应就可以使用列名等于用户表达式的方式来指定,这个我没有用过,给出一个官方的示例如下:

LOAD DATA INFILE 'file.txt' INTO TABLE t1(column1, @var1) SET column2 = @var1/100;

示例:

-- 以换行为一条数据插入到对应的字段
LOAD

        DATA LOCAL

        INFILE 'D:/test.txt'

        INTO TABLE tb0

        FIELDS TERMINATED BY '\n'

        (`username`,`age`,`description`);

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值