mysql - Bash script for reads from csv and use it in mysql query
问题描述
I need a bash script which reads from csv 2 values per line and use it in mysql query.
The .csv contains about +3k lines like this:
FA63MZ6,200000000163,2020-06-27,CF,Name Surname1 Surname1
FA63MZ6,200000000163,2020-06-27,CF,Name2 Surname2 Surname2
I would like to extract "date" and "Name Surname1 Surname1" as variables to use it in a mysql query.
I am triying with :
echo "select status from invoices where date_created= \"${date01}\" and customer_id in (select id from customers where name = \"${name01}\" );" | mysql -u user -pPassword -D dbname | grep -v status
Ideally this script could be create a .csv with the result of query:
FA63MZ6,200000000163,2020-06-27,CF,Name Surname1 Surname1,paid
FA63MZ6,200000000164,2020-06-27,CF,Name2 Surname2 Surname2,not_paid
Thanks in advance,
解决方案
像这样:
{
while IFS=, read -r f1 f2 f3 f4 f5; do
printf "SELECT status FROM invoice WHERE date_created=\047$f2\047 AND
customer_id IN (
SELECT id FROM customers WHERE name = \047$f5\047);"
echo
done < Input_File.csv
} | mysql --skip-column-names -u user -pPassword -D dbname
\047
ascii 序列是单引号字符。
不使用 MySQL 进行测试
while IFS=, read -r f1 f2 f3 f4 f5; do
printf "SELECT status FROM invoice WHERE date_created=\047$f2\047 AND
customer_id IN (
SELECT id FROM customers WHERE name = \047$f5\047);"
echo
done < Input_File.csv
输出
SELECT status FROM invoice WHERE date_created='200000000163' AND
customer_id IN (
SELECT id FROM customers WHERE name = 'Name Surname1 Surname1');
SELECT status FROM invoice WHERE date_created='200000000163' AND
customer_id IN (
SELECT id FROM customers WHERE name = 'Name2 Surname2 Surname2');
推荐阅读
- python - 如何在 json 文件中输入行空间
- javascript - 在文件之间拆分 node.js 类扩展
- python - 已解决 Selenium:控制台 js 代码有效,但 python -> TypeError:document.getElementById(...) null 错误单击 iframe 中的元素
- pandas - 可以在分层索引中使用 loc[] 的整数索引吗?
- javascript - 如何解决 python 烧瓶服务器响应 js 中的跨域问题?
- angular - 角度双向绑定问题
- visual-studio-code - 结合 Remote-SSH 扩展启动外部终端
- python - 即使类被实例化,assert_call() 也会引发异常
- laravel - Nuxtjs + Laravel Echo + Laravel Passport + Laravel WebSockets 无法从私人/状态通道获取事件
- r - R 在 purrr::map 中使用 dplyr::mutate() 而不复制行