Постоянно вставляйте данные в таблицу MySQL из канала FIFO в Linux - PullRequest
3 голосов
/ 21 января 2011

Я хочу вставить данные из канала fifo в таблицу mysql, сейчас для меня это возможно до тех пор, пока не завершится процесс fifo pipe,

команда:

$>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 pipe в?

Спасибо !!

Ответы [ 2 ]

2 голосов
/ 13 мая 2015

Чтобы уточнить комментарий @ JulienPalard выше, вы сможете достичь своей цели с помощью следующих команд.

(Я использую два разных процесса оболочки, тогда как он использует один. Для моего описания, попробуйте сделать так, чтобы обе оболочки были видны одновременно, чтобы вы могли прочитать вывод в одной оболочке и записать ввод в другой. Если вы знаете, что вы при этом вы можете поместить процесс mysql в фоновый режим и, таким образом, использовать только одну оболочку.)

Оболочка 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 будет работать до тех пор, пока вы не уничтожите ее процесс.

Держите эту оболочку открытой и выполняйте процесс tail, пока вы используете другой процесс оболочки (Shell 2: ввод) для отправки команд на 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
0 голосов
/ 01 февраля 2011

Системный журнал mysql сообщает об ошибках?Я бы посмотрел на http://www.mysqlperformanceblog.com/2008/07/03/how-to-load-large-files-safely-into-innodb-with-load-data-infile/

...