..
mysql数据导入导出
第一次做mysql
的数据导入导出工作,这里记录一下导入导出方法。标题中说mysql
,实际上我使用的并不是mysql
,而是mysql
之父创作另一个数据库:MariaDB
。MariaDB
完全兼容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;
这里进行了查表操作,当然你可以进行其他的任何操作。