我对 SQL 和 Bash 脚本非常陌生,但即便如此,我还是设法制作了一个包含即将发生的事件的 SQL 表。我设法制作了一个脚本,删除旧事件并将表中的所有内容导出到文本文件。这就是该代码的样子。
#!bin/bash
mysql -uroot -pPass kalender -e "delete from event where datum < now()"
mysql -uroot -pPass kalender -e "select * from event" > textfile.txt
但是我该如何在文本中创建一个特定的字段,像这样..
例如:
(date1) (artist1) 将于 (day1) (time1) 到达 (place1);
(date2) (artist2) 将于 (day2) (time2) 到达 (place2)
答案1
假设表的列的命名event
与预期输出中的命名相同,您可以执行以下操作:
mysql -uroot -pPass kalender -B --disable-column-names -e "select concat('The ', date_format(date1, '%d.%m.%Y'), ' ', artist1, ' will come to place ', place1, ' on ', date_format(day1, '%W'), ' at ', date_format(time1, '%H:%i')) from event" > textfile.txt
笔记:
- 当然,您可以根据需要更改日期和时间字段的格式。请参阅http://www.w3schools.com/sql/func_date_format.asp以获取完整的格式列表。
- 如果
date1
、day1
和time1
实际上指的是同一列,那完全没有问题。您只需对所有格式使用相同的列名,格式字符串将决定打印的内容。 - 我添加了选项
-B
并--disable-column-names
抑制选择语句的正常格式。