我正在使用PHP和mysqldump从带有blob的表中获取一些数据。我的客户端在他的本地机器上使用mysqldump并获得了与使用shell_exec()通过PHP运行它时截然不同的结果。这些是问题:
1)列由TAB分隔,而不是TAB。该文档说TAB是默认的,但它使用逗号..
2)Blob被'(引号)
括起来3)本地mysqldump正在输出使用\转义的TAB和LF字符。由于某种原因,我的PHP mysqldump似乎用“\ n”和“\ r”替换了TAB和LF字符
我已经阅读了文档,并尝试使用任何mysqldump选项,但似乎还不够。
$out = shell_exec('mysqldump --default-character-set=utf8 --no-create-info --compact --user=xxx--password=xxx--host=xxx.xxx.com db table');
echo $out;
任何帮助表示赞赏..
答案 0 :(得分:0)
差异可能是由于不同版本的mysqldump以及linux vs windows的行结尾(Windows上的CrLF和Linux上的LF)。 所有这些都可以通过命令行选项进行控制。 运行mysqldump - ?要获得选项,以下是与您的问题相关的选项:
--lines-terminated-by=name
Lines in the output file are terminated by the given
string.
--fields-terminated-by=name
Fields in the output file are terminated by the given
string.
--fields-enclosed-by=name
Fields in the output file are enclosed by the given
character.
--fields-optionally-enclosed-by=name
Fields in the output file are optionally enclosed by the
given character.
--fields-escaped-by=name
Fields in the output file are escaped by the given
character.

还注意到TAB分隔输出有一个选项,但只有当mysqldump和mysqld在同一台服务器上时才有效
-T, --tab=name Create tab-separated textfile for each table to given
path. (Create .sql and .txt files.) NOTE: This only works
if mysqldump is run on the same machine as the mysqld
server.