我目前正在编写AppleScript以触发MySQL脚本运行,以便在特定时间每天使用日历事件发送csv。
我相信我对两个部分的总体思路都是正确的。这是MySQL脚本的一个版本(直接在MySQL中运行时):
SET @sql_text := CONCAT('SELECT "ID", "FirstName", "LastName", "Employer", "Activist/Lead"
UNION ALL
SELECT * FROM
(SELECT e.id, m.firstname, m.lastname, e.employer, (CASE WHEN m.Lead="X" THEN "Lead" ELSE "Activist" END) AS "Activist/Lead"
FROM events e
LEFT JOIN people m ON e.id = m.id
WHERE ((STR_TO_DATE(e.startdate,"%m/%d/%Y") >= SUBDATE(now(), INTERVAL 1 YEAR)) AND (e.eventtype IN("House Party","Blitz","Politics"))
GROUP BY e.id
HAVING count(e.id)>=1) t
INTO OUTFILE \'/Users/Ryan/Activists_', DATE_FORMAT(NOW(), '%Y%m%d'), '.csv\'
FIELDS TERMINATED BY \',\' OPTIONALLY ENCLOSED BY \'"\'
LINES TERMINATED BY \'\\n\'
');
PREPARE s1 FROM @sql_text;
EXECUTE s1;
DROP PREPARE s1;
单独使用MySQL脚本可以很好地创建一个带有命名约定的.csv到我选择的文件夹中。但正如你所看到的那样,有很多单引号和双引号(有些已经有转义),我需要在那里使MySQL脚本工作。
虽然当我把它放入AppleScript运行终端时,由于引号我得到了各种各样的错误:
正如您所看到的,它突出了" ID"因为它是MySQL脚本中第一次出现双引号。我尝试将所有双引号更改为\"
,但似乎只会让人感到更加困惑 - 特别是在INTO OUTFILE
部分,因为当单引号开始显示时也是如此。 (并且在那时[单引号朝向结尾]它开始给出错误Expected “"” but found unknown token.
)
有没有人知道我可以重构转义引号以使AppleScript不会给我错误的方法,即使我需要引号来查看它们的方式以使MySQL脚本正常运行?感觉他们互相争斗。
答案 0 :(得分:0)
我刚刚停止尝试将脚本直接发布到AppleScript中,并使用终端直接从其文本文件中抓取我的脚本activists.sql
,方法是在AppleScript中告诉它打开终端后使用:do script with command "mysql 'database' < activist.sql"
。 / p>