将数据连续插入linux中的FIFO管道中的mysql表数据

时间:2011-01-20 22:15:06

标签: mysql linux bash named-pipes mkfifo

我想将fifo管道中的数据插入到mysql表中,现在对我来说,这可能直到fifo管道进程被终止,

命令:

$>mkfifo /path/to/pipe
$>sudo chmod 666 /path/to/pipe
$>find \ -sl > /path/to/pipe & msql db1 -e"LOAD DATA INFILE '/path/to/pipe' INTO TABLE T1 " &

插入fifo管道中的数据,直到mysql进程被kill进程关闭。

是否可以在不杀死fifo管道数据的过程中插入数据?

谢谢!

2 个答案:

答案 0 :(得分:1)

为了澄清@ JulienPalard上面的评论,您应该能够通过以下命令实现目标。

(我使用两个不同的shell进程,而他使用一个。对于我的描述,尝试同时看到两个shell,这样你就可以在一个shell中读取输出并在另一个shell中写入输入。如果你知道你是什么&#39 ;重新做,你可以把mysql进程放到后台,因此只使用一个shell。)

<2> Shell 1:输出
$ mkfifo mypipe # create a named pipe
$ chmod 666 mypipe # Give all users read-write access to the pipe
$ tail -f mypipe | mysql -umyName -p mySchema # pipe mypipe into mysql

上面的最后一行告诉命名管道永久地进入mysql进程。每当你将某些内容回传到mypipe中时,它将作为标准输入发送到mysql进程。

在此之后,您将无法获得新提示,因为您的tail命令将一直运行,直到您终止其进程。

当您使用其他shell进程(Shell 2:input)将命令发送到tail时,请保持此shell处于打开状态并运行其mysql进程。

<2> Shell 2:输入
$ echo 'show tables;' > mypipe # this will print output onto your *other* shell (Shell 1: output)
$ echo 'insert into mytable (1,2,3);' > mypipe # this performs an insertion

答案 1 :(得分:0)