MySQL两种原生数据导入方式有何区别及用法

  

不知道大家之前对类似MySQL两种原生数据导入方式有何区别及用法的文章有无了解,今天我在这里给大家再简单的讲讲。感兴趣的话就一起来看看正文部分吧,相信看完MySQL两种原生数据导入方式有何区别及用法你一定会有所收获的。

MySQL中有2种原生的数据导入方式,负载和来源。先看下两种方式的过程和特点。

,

为演示方便,使用测试表tb1,表结构如下:

mysql>显示创建表tb1 \ G

* * * * * * * * * * * * * * * * * * * * * * * * * * * 1。行* * * * * * * * * * * * * * * * * * * * * * * * * * *

,,,,,,表:tb1

创建表:创建表“tb1”(

,“id 'bigint(20)无符号NOT NULL AUTO_INCREMENT,

,“用户名'varchar (20) NOT NULL默认& # 39;& # 39;,

,的年龄'tinyint(3)无符号NOT NULL默认& # 39;0 & # 39;,

,主键(id),

,唯一键'uniq_username”(“用户名”)

)引擎=InnoDB默认字符集=utf8mb4

1行组(0.00秒)

,

表中有若干测试数据:

mysql>SELECT * FROM tb1;

+ - - - + - - - - - - - - - - - +——+

|用户名年龄| | | id

+ - - - - - - - - - - - - - - - - +——+

|,1 | aa ,,,,| | 22日

|,2 | bb ,,,,20 | |

|,3 | cc ,,,,24 | |

|,4 | dd ,,,,20 | |

+——+ + - - - - - - - - - - - - - - - - - +

4行组(0.00秒)

,

将tb1表中数据导出成CSV格式的文件tb1.csv:

mysql>SELECT * FROM tb1 OUTFILE"/tmp/tb1.csv"& # 39;字段终止,& # 39;选择封闭的# 39;“& # 39;行终止由& # 39;\ n # 39;;

查询好,4行影响(0.00秒)

,

tb1.csv的内容是:

1,“aa", 22日

2,“bb", 20

3,“cc", 24

4,“dd", 20

,

将tb1表截断后,负载导入:

mysql>截断表tb1;

查询好,0行影响(0.02秒)

,

mysql——登录路径=mytest测试——执行=癓OADDATA INFILE & # 39;/tmp/tb1.csv& # 39;tb1字段到表被& # 39;终止,& # 39;OPTIONALLYENCLOSED & # 39; \“& # 39;行终止由& # 39;\ n # 39;“

,

为测试报错,把tb1。csv文件修改为如下(第1、4行):

9日“ff", 22日

2,“bb", 20

3,“cc", 24

14日“gg", 25

,

负载导入出错时,会终止导入过程,提示出错位置和原因,但这个位置行并不能直接对应到原文件中(应在2行)为:

mysql——登录路径=mytest测试——执行=癓OADDATA INFILE & # 39;/tmp/tb1.csv& # 39;tb1字段到表被& # 39;终止,& # 39;OPTIONALLYENCLOSED & # 39; \“& # 39;行终止由& # 39;\ n # 39;“

错误1062(23000)1号线:重复条目& # 39;2 & # 39;关键& # 39;主要# 39;

,

查看tb1表的数据,没有变化:

mysql>SELECT * FROM tb1;

+ - - - + - - - - - - - - - - - +——+

|用户名年龄| | | id

+ - - - - - - - - - - - - - - - - +——+

|,1 | aa ,,,,| | 22日

|,2 | bb ,,,,20 | |

|,3 | cc ,,,,24 | |

|,4 | dd ,,,,20 | |

+——+ + - - - - - - - - - - - - - - - - - +

4行组(0.00秒)

,

这里可看的出,负载导入数据时,遇到错误会立刻终止,提示错误的位置和原因,出错之前的数据也不会导入。

,

导入速度如何控制呢,暂无办法;另外一点、负载导入数据时,要指定自增主键值,这在数据表中已有数据的情况下,可能会遇到麻烦。

,

接着看下源的表现,将tb1表中数据转储成SQL文件tb1.sql(这里只需要插入语句):

, mysqldump——登录路径=mytest add-drop-database——skip-add-drop-table add-drop-trigger——complete-insert default-character-set=utf8mb4——事件——skip-extended-insert——力——hex-blob no-create-db——no-create-info——快——结果文件=tb1。sql例程,单独的事务——触发器测试tb1

,

tb1。sql的内容是:

插入“tb1”(“id”,“用户名”,“年龄”)值(1 & # 39;aa # 39;, 22);

插入“tb1”(“id”,“用户名”,“年龄”)值(2 & # 39;bb # 39;, 20);

插入“tb1”(“id”,“用户名”,“年龄”)值(3 & # 39;cc # 39;, 24);

插入“tb1”(“id”,“用户名”,“年龄”)值(4日& # 39;dd # 39;, 20);

,

将tb1表截断后,源导入:

mysql>截断表tb1;

查询好,0行影响(0.02秒)

,

mysql——登录路径=mytest测试——执行=霸?tmp/tb1.sql"

,

为测试报错,把tb1。sql文件修改为如下(第1、4行):

插入“tb1”(“id”,“用户名”,“年龄”)值(9日& # 39;ff # 39;, 22);

插入“tb1”(“id”,“用户名”,“年龄”)值(2 & # 39;bb # 39;, 20);

插入“tb1”(“id”,“用户名”,“年龄”)值(3 & # 39;cc # 39;, 24);

MySQL两种原生数据导入方式有何区别及用法