Сценарии Bash — сложные инструкции MYSQL

#mysql #bash

#mysql #bash

Вопрос:

Итак, я пытаюсь принять это:

 SELECT  'cran_juniper' AS `set`, c.*
FROM    cran_juniper c
WHERE   ROW(c.device_fqdn, c.device_ip, c.interface, c.admin_state, c.link_state, c.description) NOT IN
        (
        SELECT  device_fqdn, device_ip, interface, admin_state, link_state, description
        FROM    cran_juniper_baseline
        )
UNION ALL
SELECT  'cran_juniper_baseline' AS `set`, b.*
FROM    cran_juniper_baseline b
WHERE   ROW(b.device_fqdn, b.device_ip, b.interface, b.admin_state, b.link_state, b.description) NOT IN
        (
        SELECT  device_fqdn, device_ip, interface, admin_state, link_state, description
        FROM    cran_juniper
        )
into outfile 'today.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY 'n';
;
  

И вставьте его в сценарий bash. Учитывая, что в этом запросе есть множество специальных символов, мне трудно найти способ сделать это. Любая помощь была бы волшебной.

Ответ №1:

1-е решение с использованием here-doc :

 mysql -h 127.0.0.1 <<'EOF'
SELECT  'cran_juniper' AS `set`, c.*
FROM    cran_juniper c
...
;
EOF
  

2-е решение с использованием отдельного файла

 mysql -h 127.0.0.1 < file.sql # you will put all of your query within this file
  

Проверьте

 man bash | less  /here-doc
  

Комментарии:

1. Это было одно, и намного проще, чем я думал, что это будет. Спасибо!