MySQL系列之数据导入导出

发布时间:2024年01月14日

前言

大数据与云计算作为当今时代,数据要素发展的“动力引擎”,已经走进了社会生活的方方方面。而背后承载的云服务或数据服务的高效运转,起了决定作用。

作为数据存储的重要工具,数据库的品类和特性也日新月异。从树型、网络型到关系型,从集中式到分布式,均可胜任不同的业务场景和数据存储要求。

在这个云时代(Cloud Age),作为“轻、快、高”的代表,MySQL作为RDB的优等生,备受各行各业的青睐。从今天开始,博主也谈一谈MySQL的相关话题。

在这里插入图片描述

那么,首先聊聊什么呢? 博主先从一个文件讲起。

当你遇到数据库迁移时,最可能遇到哪些困难?(温馨提示:文末有投票环节,欢迎有兴趣的同学参与)。

比如文件太大,导入太慢了;
比如编码不一致,导入导出乱码了;
比如数据跨区,导入重复了;
比如…等等,不胜枚举。

而今天,我们先看看文件太大怎么办,博主可为大家支一招,希望有所帮助。


Q:如何导入导出

数据的导入导出是我们日常工作的常见操作,那么我们又该掌握其中的必杀技呢?

一、mysqldump和source

当我们在做数据的导入导出时,可能会想到一组常用的命令:

操作工具操作简介
mysqldump负责将数据从数据库导出或导入,支持对SQL文件的处理
source负责将数据导入数据库,支持对SQL文件的处理
1. mysqldump

mysqldump是MySQL自带的逻辑备份工具,可供选择的操作有:

1.mysqldump [选项] 数据库名 [表名] > 导出文件名
2.mysqldump [选项] --数据库名 [选项 表名] > 导出文件名
3.mysqldump [选项] --all-databases [选项] > 导出文件名

2. source

mysql source命令主要用来导入较大的文件。
执行命令形如:

连接 MySQL Server
>source  /usr/local/test.sql

二、select …into outfile和load data infile

一般我们通过以上一组操作,可满足日常的数据导入导出的需要。不过还有一种选择,可支持大文件的导入导出,当然该方式一般针对excel/csv/txt处理(是不是太常见了?)。

1. select …into outfile
SELECT ... INTO OUTFILE '文件路径' //导出文件的绝对路径
[CHARACTER SET 字符集] //指定文件编码
[FIELDS [TERMINATED BY '分隔符']
         [ENCLOSED BY '括号字符']
         [ESCAPED BY '转义字符']
]
[LINES [STARTING BY '行首字符']
      [TERMINATED BY '行尾字符']
]

使用时,需开通mysql的文件处理权限,一般使用secure_file_priv指定的目录,可通过以下命令查看:

show variables like '%secure_file_priv%';
2. load data infile

导出后,即可进行导入了,此刻,load data infile派上用场了。

LOAD DATA
    [LOW_PRIORITY | CONCURRENT] [LOCAL] //一般选择local,意味着从本地导入
    INFILE '文件路径' //绝对路径
    [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}] ...]

通过以上命令,我们可以实现非SQL文件的导入了。


结语

数据库的导入导出是必修课,作为经常用来实现数据备份和恢复的工具,以上两组命令各有特色,且支持不同类型的文件操作,所以各位盆友可按需选择。

好了,今日话题到此为止,下一篇是啥,继续期待!


在这里插入图片描述

文章来源:https://blog.csdn.net/splendid_java/article/details/135547087
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。