繁体   English   中英

Bash 脚本用于从 csv 读取并在 mysql 查询中使用它

[英]Bash script for reads from csv and use it in mysql query

我需要一个 bash 脚本,它从 csv 每行读取 2 个值,并在 mysql 查询中使用它。

.csv 包含大约 +3k 行,如下所示:

FA63MZ6,200000000163,2020-06-27,CF,Name Surname1 Surname1
FA63MZ6,200000000163,2020-06-27,CF,Name2 Surname2 Surname2 

我想提取“日期”和“姓名 Surname1 Surname1”作为变量,以便在 mysql 查询中使用它。

我正在尝试:

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

理想情况下,此脚本可以使用查询结果创建 a.csv:

FA63MZ6,200000000163,2020-06-27,CF,Name Surname1 Surname1,paid
FA63MZ6,200000000164,2020-06-27,CF,Name2 Surname2 Surname2,not_paid

提前致谢,

像这样:

{
    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

Output

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');

像这样的东西应该可以工作,但是未经测试:

#!/bin/bash

while read -r LINE; do
  DATE=$(awk -F, '{print $3}' <<< "${LINE}")
  NAME=$(awk -F, '{print $5}' <<< "${LINE}")
  RES=$(echo "select status from invoices where date_created= \"${DATE}\" and customer_id in (select id from customers where name = \"${NAME}\" );" | mysql -u user -pPassword -D dbname | grep -v status)
 echo "$LINE, $RES"
done < "csv_file.csv"

需要注意的是,它仅适用于提供的格式FA63MZ6,200000000163,2020-06-27,CF,Name Surname1 Surname1 ,并且不适用于 csv 的引用 forms 或包含的字段,

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM