Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Lampirkan ke klien MySQL sepenuhnya melalui FIFO

Masalah dengan FIFO adalah ketika setiap proses yang memasukkan data berakhir, itu menandakan proses yang sedang membaca (dalam hal ini mysql ) bahwa ini adalah akhir dari data, sehingga diakhiri.

Triknya adalah memastikan bahwa ada proses yang menjaga input FIFO tetap hidup setiap saat. Anda dapat melakukannya dengan menjalankan sleep 999999999 > fifofile di latar belakang.

Contoh:

#!/bin/sh

mkfifo /tmp/sqlpipe

sleep 2147483647 > /tmp/sqlpipe &
PID=$!

mysql -B -uUSER -pPASSWORD < /tmp/sqlpipe &

# all set up, now just push the SQL queries to the pipe, exemple:
echo "INSERT INTO table VALUES (...);" > /tmp/sqlpipe
echo "INSERT INTO table VALUES (...);" > /tmp/sqlpipe
echo "INSERT INTO table VALUES (...);" > /tmp/sqlpipe
cat "mysqldump.sql" > /tmp/sqlpipe
echo "DELETE FROM table WHERE ...;" > /tmp/sqlpipe

# done! terminate pipe
kill -s SIGINT $PID
rm /tmp/sqlpipe

Pada akhirnya kami menghentikan sleep proses untuk melepaskan input FIFO sepenuhnya. Ini akan memberi sinyal mysql bahwa input telah berakhir dan akibatnya akan mati secara otomatis.

Ada juga alternatif yang tidak memerlukan FIFO, tetapi Anda memerlukan dua skrip:

run.sh:

#!/bin/sh
./querygenerator.sh | mysql -B -uUSER -pPASSWORD

querygenerator.sh:

#!/bin/sh
echo "INSERT INTO table VALUES (...);"
echo "INSERT INTO table VALUES (...);"
echo "INSERT INTO table VALUES (...);"
cat "mysqldump.sql"
echo "DELETE FROM table WHERE ...;"


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Melampirkan database yang ada dengan MySQL

  2. Tampilkan semua tabel di dalam database MySQL menggunakan PHP?

  3. cara menghindari kebuntuan di mysql

  4. Pengecualian mySQL:Tidak dapat terhubung ke salah satu host MySQL yang ditentukan. melalui C#

  5. Lima aplikasi perangkat lunak teratas untuk mengakses server MySQL/MariaDB