Mysqldump没有INSERT和TAB而不是逗号

时间:2014-12-31 20:18:40

标签: php mysql

我正在使用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;

任何帮助表示赞赏..

1 个答案:

答案 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.