MySQL将输出重定向到文件方法汇总
重定向sql输出
今天在做数据导入的需求的时候,用的source命令,发现差了两条数据,但是source的输出太多,查不到具体的出问题的数据,如何能将日志进行重定向就比较容易定位问题了。
下面是总结的一些方法:
- 连接时指定:
mysql -uroot -p -Dtest -tee=/tmp/mysql.log
# 注:这种如果在连接后删除了文件,日志文件不会被重建,除非重新连接
- 在mysql终端内执行:
tee /tmp/mysql.log
-- 取消输出到日志
notee
- 使用系统重定向:
mysql -uroot -p -e 'select * from t1;' > /tmp/mysql.log
- 在mysql终端执行,注意,大于号与系统重定向一样,追加需要用两个:
pager cat > '/tmp/mysql.log'
-- 取消写入
pager
- 执行sql的时候:
select * from t1 into outfile '/tmp/mysql.log'
-- 这种方法的输出跟上面的不一样,上面的都是原样输出,和终端上一样,这种的格式默认像是csv
因为我的问题是收集source命令的输出,经测试只有前两种方法可以,第五种执行source会报错,其他的都不行。
update 2019-03-23
在mysql5.7之后添加了个配置项,into outfile这个语句输出的文件目录由该选项指定:
-- [mysqld]下添加配置
secure-file-priv = /tmp
这样into outfile和load data只能指定该目录下的文件。
(完)
- 本文作者:吴泽辉
- 本文链接:https://mutex.top/posts/c5e355aa/
- 发表日期:2018年8月22日
- 版权声明:本文章为原创,采用《知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议》进行许可