mysql---数据导入导出的几种情况汇总

数据导出成.sql文件
第一种方式使用 mysqldump工具:
(linux 和window 下是同样的语法只是路径的写法不同而已)
1、导出mysql 中的数据库 databaseName

(1)、进入mysql的安装目录  …….bin

(2)、mysqldump  –hlocalhost –uroot –p databaseName >d:\dump.sql  (window)

mysqldump  –hlocalhost –uroot –pdatabaseName >/dump.sql     (linux)
(3)、mysqldump  -hlocalhost  -uroot  -padmin  --databases  databaseName > d:\dump.sql (2 3 是一样的)

2、导出数据库服务器上的所有数据库
  mysqldump   -hlocalhost  -uroot  -padmin   --all-databases  > dump.sql
3、导出mysql数据库databaseName的tb_user表及数据

进入mysql安装目录C:\Program Files\MySQL\MySQLServer 5.5\bin>

mysqldump –hlocalhost  –uroot  –padmin  databaseName  tb_user > d:\dump.sql

mysqldump  -hlocalhost -uroot -padmin  databaseName  tb_user   --result-file=dump.sql

( 这样写是为了在windows下方便)

4、导出mysql数据库databaseName的结构未实现

进入mysql安装目录C:\ProgramFiles\MySQL\MySQL Server 5.5\bin>

mysqldump –hlocalhost –uroot  –padmin   databaseName  -add-drop-table>d:\dump.sql

5、mysql对导入文件大小有限制,最大为2M,可修改配置

在php.ini中修改参数:memory_limit=128M,upload_max_filesize=2M,post_max_size=8M

修改upload_max_filesize=200M;memory_limit=250M,post_max_size=2000M

第二种方式 使用 : select   into  outfile  :SQL命令如下
(这种格式也是在linux下,window修改路劲书写方式)
   // 将你选中的数据导出到这个指定的目录下
 select  * into  outfile  '/tmp/bump.txt'

//  属性使用 逗号分开
 fields terminated  by ','

//   
 optionally   enclosed  by ' " '

//  一行结束的标志位换行符
 lines   terminated  by '\n'

//  这是你要导出的数据库表

from  linuxtest.test2  ;

使用select   into outfile  以及load data   infile  这种方式比 导出 .sql这种文件更加紧凑,而且速度也更快!
数据导入导出到csv文件
MySQL: 使用 load data 快速导入数据
建表
USE test;
CREATE TABLE test_table (
id bigint NOT NULL AUTO_INCREMENT,
name varchar(32) NOT NULL DEFAULT '' COMMENT '名字',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
生成数据
生成 2000w 条记录。

Python 代码:

// 文件名: gen_test_table_data.py

for i in range(1, 2000_0000):
print('{},name{}'.format(i, i))
生成文件:

$ python3 gen_test_table_data.py > /tmp/data.csv
/tmp/data.csv中的内容长这个样子:

1,name1
2,name2
配置 MySQL
默认情况下,MySQL 禁止导入/导出数据,可以通过配置secure_file_priv 解决。

找到 my.cnf(linux 下的位置是/etc/my.cnf),添加secure_file_priv=''。然后重启MySQL。

如果只允许处理 /tmp目录下的文件,可以配置成secure_file_priv='/tmp'。

在mysql客户端中,可以通过select @@secure_file_priv; 或者show variables like '%secure%';查询配置的值。

导入数据
LOAD DATA INFILE '/tmp/data.csv' INTO TABLE test_table FIELDS TERMINATED BY ','
2000w条数据导入,在我的电脑上耗时约40秒。

// 导出数据
select * from test_table
into outfile '/tmp/test_table.csv'
fields terminated by ',' optionally enclosed by '"'
lines terminated by '\r\n';
查看导出文件的内容:

$ cat /tmp/test_table.csv
1,"name01"
2,"name02"

将数据导入到指定的数据库
第一种导入方式:
(linux下和Windows 下语法是一样的,只是路劲的书写方式不同而已)
 1、创建一个空数据库

2、进入mysql安装目录bin下

3、导入命令 mysql  -uroot –p密码 数据库名 <  要导入的表数据(d:\bbs.sql)(将选定的表导入到指定的数据库)

mysql   -uroot  –padmin  databaseName  <d:\dump.sql         (window)

mysql   -uroot  –padmin databaseName <  /dump.sql        (linux)

(将备份的整个数据库导入)
             4、导入命令: mysql -u用户名    -p密码    <  要导入的数据库数据

mysql   -uroot  -padmin       <  d:\dump.sql        (window)

mysql   -uroot  -padmin       <  /dump.sql        (linux)

(将备份出来的数据库导入,这里没有写数据库名,也可以写但要求是要写同样的名称)

第二种使用Load  Data  infile  命令导入:
             (这里的格式是在 linux下的在window 下修改路劲的写法就可以)
            // 要导入的数据
           Load data infile  '/tmp/dump.txt'

// 数据要导入到那个 数据库的那个表,  前提是要有这个表,否则会报 表不存在错误!

into  table    linuxtest1.test

// fields (属性 字段)    terminated (终止,结束) 属性之间的分隔符 为逗号

fields  terminated  by  ','

//  optionally(需要,可选择 )  enclosed(封闭)   也就是字符串使用引号

optionally  enclosed by '  " '

//   换行符结束一行

lines   terminated  by '\n' ;

第三种导入方式即 使用source命令:
   Mysql> Use databasename;

Mysql>Source d:\dump.sql

posted @ 2021-07-15 22:09  AnthonyWang  阅读(313)  评论(0)    收藏  举报