..

mysql数据导入导出

第一次做mysql的数据导入导出工作,这里记录一下导入导出方法。标题中说mysql,实际上我使用的并不是mysql,而是mysql之父创作另一个数据库:MariaDBMariaDB完全兼容mysql的操作。这里要说明的是,我的MariaDB是跑在docker容器里面的,那么它的登录方式应该是这样的:

[infra@localhost]$ docker exec -it db mysql -uuser -ppasswd
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 43
Server version: 10.3.8-MariaDB-1:10.3.8+maria~bionic-log mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

导出整个数据到sql文件

[infra@localhost ~]$ docker exec -it snc_mysql mysqldump -uuser -ppasswd databasename > data.sql
[infra@localhost ~]$ ll
总用量 15160
-rw-rw-r-- 1 infra infra 15523218 8月  20 18:43 data.sql
[infra@localhost ~]$

这样数据就被导入到了data.sql这个文本文件中了.

导入数据库

[infra@hotfix01 ~]$ cat data.sql | docker exec -it snc_mysql mysqldump -usnc -pcn.360.b.snc
the input device is not a TTY
[infra@hotfix01 ~]$

这应报错了,原因是我们使用docker exec -it选项,去掉-t就好了。

cat data.sql | docker exec -i snc_mysql mysqldump -usnc -pcn.360.b.snc

或者

docker exec -i snc_mysql mysqldump -usnc -pcn.360.b.snc databasename < data.sql

这里要说明的是:导出的sql文件是没有数据库名字的,所以在导入数据的时候,需要提前保证数据库是存在的。

由上面的命令行可以看出,mysql在登录的时候,如果登录成功,那么就会读取标准输入的的命令来执行,所以我们还可以进行如下的操作:

echo 'use SNC;show tables;select * from t_manager' | docker exec -i db mysql -uuser -ppasswd;

这里进行了查表操作,当然你可以进行其他的任何操作。