mysql 管道 tee 缓冲输出

msb*_*msb 4 mysql pipe

当我以非交互模式运行 mysql 命令行工具并查看结果时,我会在执行每个查询时看到它们。但是如果我将它通过管道传输到“tee”,mysql 就会缓冲结果,我只能在最后看到这一切。如何让mysql立即输出结果?我已经尝试过“-q”但没有成功,我在帮助页面中找不到正确的选项。:(

示例:query_dates.txt 包含 200 个查询,每个查询大约需要 30 秒。

head -4 query_dates.txt | mysql -u tester -h 172.16.77.30 myDB -ss
2015-05-01      375398346
2015-05-02      375704957
2015-05-03      375992591
2015-05-04      376193384
Run Code Online (Sandbox Code Playgroud)

在本例中,我每 30 秒查看一次每一行,时间跨度为 2 分钟。

head -4 query_dates.txt | mysql -u tester -h 172.16.77.30 myDB -ss | tee 001.date_itemid.txt
2015-05-01      375398346
2015-05-02      375704957
2015-05-03      375992591
2015-05-04      376193384
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我必须等待 2 分钟,最后我得到 4 个结果。

PS:我发现这个并在 mysql 中使用stdbuf是有效的,但我仍然想知道哪个 mysql 选项可以解决这个问题......如果有的话。

Bar*_*mar 5

从手册页:

  • --unbuffered, -n
    每次查询后刷新缓冲区。