当我使用 MySQL Workbench 查看 a 的结果时,一个\SELECT
是正确的
max@host 10:13:58: ~$ mysql -h db-master.domain.local -uuser -ppw db -e '
> SELECT
> DISTINCT i.filesourceregexp
> FROM db.ImportLogFiles i'
+------------------------------------------------+
| filesourceregexp |
+------------------------------------------------+
| ^[0-9]{8}_1062355673_merge_google_pbn\.csv$ |
| ^[0-9]{8}_8026062435_merge_google_pbn\.csv$ |
| ^[0-9]{8}_1062355673_store_visits_report\.csv$ |
+------------------------------------------------+
max@host 10:14:10: ~$ mysql -h db-master.domain.local -uuser -ppw db -e '
SELECT
DISTINCT i.filesourceregexp
FROM db.ImportLogFiles i' | tail -n +2
^[0-9]{8}_1062355673_merge_google_pbn\\.csv$
^[0-9]{8}_8026062435_merge_google_pbn\\.csv$
^[0-9]{8}_1062355673_store_visits_report\\.csv$
max@host 10:14:19: ~$
我有这些选项my.cnf
:
[client]
host = db-master
user = user
password = pass
default-character-set=utf8
为什么通过tail
更改输出/字符串来传递结果?(注意双\
)。
不是
tail
,是管道。mysql
当它的标准输出是终端设备时使用带有 ASCII 装箱输出格式的表格,当它是为用户准备的时,当它不是时,它会恢复为脚本格式,例如当它是管道或常规文件时。你会看到相同的不同格式
或者
另请参阅影响输出格式的
-r
/--raw
、-s
/--silent
、-B
/--batch
、-N
/--skip-column-names
/--column-names=0
、-H
/--html
、-t
/--table
...。如果即使输出不发送到终端设备也需要表格输出,请添加
-t
选项:但是,如果要删除标题行,只需使用
-N
, 带或不带-t
。在这里,为了从数据库中获取尽可能原始且没有标题的值,我将使用:
那是:
ps
通过在文件中传递凭据(如您的my.cnf
)而不是在--defaults-extra-file
.--raw
避免逃跑。假设这些值不包含换行符,否则输出无法可靠地进行后处理。--skip-column-names
删除标题行。