1,将mysql中某个表的数据导入到文件:
首先,将要执行的sql写在一个后缀为“.sql”的文件(比如:sql20170720.sql,内容为:select * from db_deb.t_low where create_time between "2017-06-19 00:00:00" and "2017-07-20 23:59:59" ;)。
然后执行:mysql -h100.11.111.20 -Pabvf.--default-character-set=utf8 -A<sql20170720.sql>sxf_result01.txt
其中mysql -h100.11.111.11 -P4049 -uu -pp --default-character-set=utf8 -A表示数据库的链接(包含mysql的服务器地址,用户名,密码以及编码类型)
<sql20170720.sql>sxf_result01.txt表示要执行的sql文件,和最后将导出是数据保存到sxf_result01.txt中(此文件会自动在当前目录下生成,执行上边命令之后便可以在当前目录下看到)
然而,当文件生成后,那该如何将在这个服务上的sxf_result01.txt文件下载到本地呢。
如果当前服务器上安装有又下载文件的软件那么直接使用sz即可将文件下载到本地。但是如果没有,那这就变得比较麻烦了。现在就来说一下本人遇到的一个问题,有a,b,c三个服务器,只有a上安装了可以下载文件的软件就是可以使用sz命令进行文件下载,但是a并不能直接连接到c,而是要通过b才能跳转到c(这是服务器设置的网关与网段的问题),所以现在就需要通过b将c中的文件下载到b服务,再通过a将b服务中的文件下载下来,最后才能通过a使用sz命令将文件下载到本地。
具体命令流程:1,在服务c中执行mysql -h100.11.111.20 -Pabvf.--default-character-set=utf8 -A<sql20170720.sql>sxf_result01.txt命令后,在c服务上便有了sxf_result01.txt;
2,在c服务上执行exit退出命令便进入了b服务,便能在b服务上执行“sftp 用户名@c服务地址”(sftp 用户名@地址:表示通过sftp连接c服务,b,c之间就可以进行文件传输了。quit退出sftp),再执行“get sxf_result01.txt”(表示从c中将文件下载到b上),此时b服务器上就有了sxf_result01.txt文件了。同样的操作,将b中的文件下载到a上,a有了此文件,再在a上执行“sz sxf_result01.txt ”,选择本地保存的路径,便可以将文件下载到本地了。
注意:如果文件比较大建议先压缩之后在进行传输(查看文件大小 ls -lht ,压缩命令:zip 文件名.ZIP 要压缩的文件。一般一百多兆的文件可以压缩到只有几兆),如果服务器使用的人比较多,最好对你的文件传输进行限速,不然被众矢之的了也是活该的。