我想创建一个bash文件,在该文件中我连接到docker容器(mysql)并运行查询,然后将结果输出到csv文件中。我尝试过的:
#!/bin/bash
docker-compose exec db /bin/bash -c 'mysql -u user -ppassword dbname
-e "SELECT c.id, c.first_name, c.last_name,
c.email, cp.id, cp.name, company.id, company.name FROM
db.candidate c LEFT JOIN db.candidate_position cp ON
cp.id = c.candidate_position_id LEFT JOIN db.company company
ON company.id = c.company_id INTO OUTFILE \'Result.csv\'"'
错误是我得到:
line 3: unexpected EOF while looking for matching `"'
答案 0 :(得分:1)
您不能在单引号中包含'
;您需要更改外部引号。
docker-compose exec db /bin/bash -c "mysql -u user -ppassword dbname
-e \"SELECT c.id, c.first_name, c.last_name,
c.email, cp.id, cp.name, company.id, company.name FROM
db.candidate c LEFT JOIN db.candidate_position cp ON
cp.id = c.candidate_position_id LEFT JOIN db.company company
ON company.id = c.company_id INTO OUTFILE 'Result.csv'\""
但是,由于仅运行单个命令,因此不需要bash -c
;只需直接运行mysql
。
docker-compose exec db mysql -u user -ppassword dbname \
-e "SELECT c.id,
c.first_name,
c.last_name,
c.email,
cp.id,
cp.name,
company.id,
company.name
FROM
db.candidate c
LEFT JOIN db.candidate_position cp
ON cp.id = c.candidate_position_id
LEFT JOIN db.company company
ON company.id = c.company_id
INTO OUTFILE 'Result.csv'
"