在终端中为mysql定义分隔符

在终端中为mysql定义分隔符,mysql,sql,shell,applescript,Mysql,Sql,Shell,Applescript,我正在终端中运行一些Mysql查询,或者通过AppleScript使用一个shell脚本,它将结果作为\t“tab”分隔符输出。有没有办法改变这种状况 以下是我运行的示例: /usr/local/mysql/bin/mysql -uroot -e "SELECT * FROM mysql.table_name LIMIT 1;" 或Applescript: set blah to (do shell script "/usr/local/mysql/bin/mysql -uroot -e \"

我正在终端中运行一些Mysql查询,或者通过AppleScript使用一个shell脚本,它将结果作为\t“tab”分隔符输出。有没有办法改变这种状况

以下是我运行的示例:

/usr/local/mysql/bin/mysql -uroot -e "SELECT * FROM mysql.table_name LIMIT 1;"
或Applescript:

set blah to (do shell script "/usr/local/mysql/bin/mysql -uroot -e \"SELECT * FROM mysql.table_name LIMIT 1;\""
现在,变量“blah”是我返回的结果,然后我可以使用AppleScript的文本项分隔符来读取文本并获得我想要的特定文本项

我的数据是用“|”字段分隔符存储的,但由于某种原因,当我运行此命令时,它会显示“\t”


有什么建议吗?谢谢

您可以像这样更改applescripts文本项分隔符,而不是更改mysql查询的输出

set tid to AppleScript's text item delimiters
set AppleScript's text item delimiters to tab
-- do stuff
set AppleScript's text item delimiters to tid
如果选项卡以文字文本“\t”的形式出现,则


我很好奇为什么你说你的数据已经是管道分隔的,它是基于你运行sql命令时在终端上看到的吗?数据库中的数据没有设置为任何特定的分隔符,您在终端中看到的显示只是一个显示


无论如何,你是对的。在applescript中运行select语句时,它将为您提供以制表符分隔的数据。对于数据是否已经包含选项卡,您也有一个合理的顾虑。好消息是这两个选项卡的处理方式不同。字段之间的分隔符作为选项卡返回(换句话说,\t),但内容中的选项卡将作为转义选项卡返回(换句话说,\\t)。因此,如果您使用设置为tab的文本项分隔符,实际上您将按照预期的方式中断内容,您可以放心

这是真的,我一直在这么做,但是如果我的数据中有一个标签呢。。。我知道所有字段都是由“|”分隔的,所以如果我使用它,那么就不会出错。这确实有帮助。我之所以说我将其存储为管道,只是因为这是我导入和导出为.csv的方式,所以我知道我的数据中没有垂直条。但我想你对数据存储方式的看法是正确的。但有一件事。。当我只想选择一列并返回一个结果时,它会用换行符或回车“\n”或“\r”分隔,因为它会给我一个标题和一个结果。有什么想法吗?我自己经常做这个过程。当我检索数据时,我总是做一个测试,看看它是否为空,如果是,这意味着我什么也找不到,如果不是,我总是首先用返回字符分隔结果,并将结果变量设置为的项目2到1。这为每个记录提供了一个项目。然后,我循环记录并通过选项卡对其进行分隔,以获得各个字段。我希望这就是你要找的。如果我误解了,让我知道,我可以看看我是否可以澄清。我想我理解。基本上减去标题,看看是否有结果。如果是,请使用“\t”作为文本项分隔符来读取数据的字段。是的,除了先查看是否有结果,然后再查看是否有结果,减去标题。
set tid to AppleScript's text item delimiters
set AppleScript's text item delimiters to "\t"
-- do stuff
set AppleScript's text item delimiters to tid