大数据与云计算作为当今时代,数据要素发展的“动力引擎”
,已经走进了社会生活的方方方面。而背后承载的云服务或数据服务的高效运转,起了决定作用。
作为数据存储的重要工具,数据库的品类和特性也日新月异。从树型、网络型到关系型,从集中式到分布式,均可胜任不同的业务场景和数据存储要求。
在这个云时代(Cloud Age
),作为“轻、快、高”
的代表,MySQL
作为RDB的优等生,备受各行各业的青睐。从今天开始,博主也谈一谈MySQL的相关话题。
那么,首先聊聊什么呢? 博主先从一个文件讲起。
当你遇到数据库迁移时,最可能遇到哪些困难?(温馨提示:文末有投票环节,欢迎有兴趣的同学参与
)。
比如文件太大,导入太慢了;
比如编码不一致,导入导出乱码了;
比如数据跨区,导入重复了;
比如…等等,不胜枚举。
而今天,我们先看看文件太大怎么办,博主可为大家支一招,希望有所帮助。
数据的导入导出是我们日常工作的常见操作,那么我们又该掌握其中的必杀技呢?
当我们在做数据的导入导出时,可能会想到一组常用的命令:
操作工具 | 操作简介 |
---|---|
mysqldump | 负责将数据从数据库导出或导入,支持对SQL文件的处理 |
source | 负责将数据导入数据库,支持对SQL文件的处理 |
mysqldump是MySQL自带的逻辑备份工具,可供选择的操作有:
1.mysqldump [选项] 数据库名 [表名] > 导出文件名
2.mysqldump [选项] --数据库名 [选项 表名] > 导出文件名
3.mysqldump [选项] --all-databases [选项] > 导出文件名
mysql source命令主要用来导入较大的文件。
执行命令形如:
连接 MySQL Server
>source /usr/local/test.sql
一般我们通过以上一组操作,可满足日常的数据导入导出的需要。不过还有一种选择,可支持大文件的导入导出,当然该方式一般针对excel/csv/txt处理(是不是太常见了?
)。
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%';
导出后,即可进行导入了,此刻,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文件的导入了。
数据库的导入导出是必修课,作为经常用来实现数据备份和恢复的工具,以上两组命令各有特色,且支持不同类型的文件操作,所以各位盆友可按需选择。
好了,今日话题到此为止,下一篇是啥,继续期待!