3

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 " &

mysqlのプロセスがkillプロセスによってダウンするまで、fifoパイプのデータが挿入されます。

でFIFOパイプデータのプロセスを強制終了せずにデータを挿入することは可能ですか?

ありがとう!!

4

2 に答える 2

2

上記の@JulienPalardのコメントを明確にするために、次のコマンドで目的を達成できるはずです。

(私は 2 つの異なるシェル プロセスを使用しますが、彼は 1 つを使用します。私の説明では、両方のシェルを同時に表示して、一方のシェルで出力を読み取り、もう一方のシェルで入力を書き込むことができるようにしてみてください。 mysql プロセスをバックグラウンドに置くことができるため、1 つのシェルのみを使用できます。)

シェル 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この後、プロセスを強制終了するまでコマンドが実行されるため、新しいプロンプトは表示されません。

他のシェル プロセス (シェル 2: 入力) を使用して にコマンドを送信している間、このシェルを開いてそのtailプロセスを実行したままにしますmysql

シェル 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
于 2015-05-13T17:56:26.767 に答える
0

mysql システム ログはエラーを報告しますか? 私はhttp://www.mysqlperformanceblog.com/2008/07/03/how-to-load-large-files-safely-into-innodb-with-load-data-infile/を見ます

于 2011-02-01T10:01:43.340 に答える