MySQL数据导入导出的三种办法总结!
MySQL数据导入导出的三种办法总结!
当我们需要切换数据库或备份数据时,导入和导出数据库是一个常见的操作,下面这篇文章主要给大家介绍了关于MySQL数据导入导出的三种办法,文中通过代码介绍的非常详细,需要的朋友可以参考下。
基本概述
目前常用的有3中数据导入与导出方法:
- 使用mysqldump工具:
- 优点:
- 简单易用,只需一条命令即可完成数据导出。
- 可以导出表结构和数据,方便完整备份。
- 支持过滤条件,可以选择导出部分数据。
- 生成的文件可以用于跨平台、跨版本的数据迁移。
- 缺点:
- 导出的数据包含额外的INSERT语句,可能导致导入速度较慢。
- 不能使用复杂的JOIN条件作为过滤条件。
- 推荐场景:
- 需要备份和迁移表结构和数据。
- 需要导出部分数据到其他系统或进行数据分析。
- 优点:
- 导出CSV文件:
- 优点:
- CSV格式通用,易于在不同应用程序间交换数据。
- 可以利用文本编辑器查看和编辑数据。
- 支持所有SQL写法的过滤条件。
- 缺点:
- 导出的数据保存在服务器本地,可能受到
secure_file_priv
参数限制。 - 每次只能导出一张表的数据。
- 需要单独备份表结构。
- 导出的数据保存在服务器本地,可能受到
- 推荐场景:
- 需要将数据导出到本地文件系统或共享网络位置。
- 需要将数据导入到其他非MySQL系统或应用程序。
- 优点:
- 物理拷贝表空间:
- 优点:
- 速度极快,尤其是对于大表数据的复制。
- 可以直接复制整个表的数据,不需要逐条插入。
- 缺点:
- 需要服务器端操作,无法在客户端完成。
- 必须是全表拷贝,不能选择性导出数据。
- 仅限于InnoDB引擎的表。
- 推荐场景:
- 需要快速复制大表数据到另一个数据库或服务器。
- 源表和目标表都使用InnoDB引擎。
- 有服务器文件系统的访问权限。
- 优点:
在选择使用哪种方法时,还需要考虑数据的大小、是否需要跨平台迁移、是否有权限访问服务器文件系统、是否需要保留表结构等因素。通常,如果需要快速迁移大量数据并且对数据的完整性有高要求,物理拷贝表空间是一个好选择。如果数据量较小或者需要跨平台迁移,使用mysqldump
或导出CSV文件可能更合适。
mysqldump工具
- 使用
mysqldump
导出数据:12345678910111213mysqldump
-h
$host
-P
$port
-u
$user
-
-add
-locks
=0 -
-no
-create
-info
-
-single
-transaction
-
-set
-gtid
-purged
=OFF db1 t -
-where
=
"a>900"
-
-result
-file
=/client_tmp/t.sql
-h
: 指定MySQL服务器的主机名。
$host
: 替换为实际的主机名。
-P
: 指定MySQL服务器的端口号。
$port
: 替换为实际的端口号。
-u
: 指定登录MySQL的用户名。`
$user
`: 替换为实际的用户名。
-
-add
-locks
=0: 导出时不增加额外的锁。
-
-no
-create
-info
: 不导出表结构。
-
-single
-transaction
: 在导出数据时不需要对表加表锁。
-
-set
-gtid
-purged
=OFF: 不输出与GTID相关的信息。
db1: 指定要导出的数据库名。
t: 指定要导出的表名。
-
-where
=
"a>900"
: 导出满足条件a>900的数据。
-
-result
-file
=/client_tmp/t.sql: 指定导出结果的文件路径。
- 将数据导入到目标数据库:
1234567
mysql -h127.0.0.1 -P13000
-uroot
db2
-e
"source /client_tmp/t.sql"
`
-h
`: 指定MySQL服务器的主机名。`root`: 使用root用户登录。
`
-P
`: 指定MySQL服务器的端口号。
`
-u
`: 指定登录MySQL的用户名。
`db2`: 指定要导入数据的数据库名。
`
-e
`: 后面跟随要执行的命令。
`
"source /client_tmp/t.sql"
`: 执行source命令导入之前导出的SQL文件。
文件导入导出
- 导出为CSV文件:
12345
SELECT
*
FROM
db1.t
WHERE
a > 900
INTO
OUTFILE
'/server_tmp/t.csv'
;
SELECT
*
FROM
db1.t: 指定要导出的查询。
WHERE
a > 900: 导出满足条件的数据。
INTO
OUTFILE
'/server_tmp/t.csv'
: 指定导出结果的CSV文件路径。
- 导入CSV文件到目标表:
12345
LOAD
DATA INFILE
'/server_tmp/t.csv'
INTO
TABLE
db2.t;
LOAD
DATA INFILE: 加载数据的命令。
'/server_tmp/t.csv'
: 指定CSV文件的路径。
INTO
TABLE
db2.t: 指定要导入数据的目标表。
在MySQL中secure_file_priv
用于限制LOAD DATA INFILE
和SELECT ... INTO OUTFILE
这两个命令生成或读取文件的位置。这个参数的目的是为了增强安全性,防止意外或恶意地读取或写入服务器上的敏感文件。
如果secure_file_priv
被设置为空字符串(''
)或者NULL
,则表示没有文件路径限制,可以使用任意文件路径。但是,这种设置降低了系统的安全性,因此不推荐在生产环境中使用。
物理拷贝表空间
- 物理拷贝表空间:
- 首先创建一个相同结构的空表:
1
CREATE
TABLE
db2.r
LIKE
db1.t;
- 然后丢弃表空间:
1
ALTER
TABLE
db2.r DISCARD TABLESPACE;
- 导出表文件:
1
FLUSH TABLES db1.t
FOR
EXPORT;
- 拷贝文件:
12
cp
/path/to/db1/t.ibd /path/to/db2/
r
.ibd
cp
/path/to/db1/t.cfg /path/to/db2/
r
.cfg
- 解锁表并导入表空间:
12
UNLOCK TABLES;
ALTER
TABLE
db2.r IMPORT TABLESPACE;
- 首先创建一个相同结构的空表:
总结
到此这篇关于MySQL数据导入导出的三种办法总结的文章就介绍到这了。
学习资料见知识星球。
以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。
快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利!
更多技巧, www.excelbook.cn
欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;
1、价值上万元的专业的PPT报告模板。
2、专业案例分析和解读笔记。
3、实用的Excel、Word、PPT技巧。
4、VIP讨论群,共享资源。
5、优惠的会员商品。
6、一次付费只需99元,即可下载本站文章涉及的文件和软件。
共有 0 条评论