Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从远程主机获取以制表符分隔的MySQL转储?_Mysql_Csv_Export_Mysqldump - Fatal编程技术网

如何从远程主机获取以制表符分隔的MySQL转储?

如何从远程主机获取以制表符分隔的MySQL转储?,mysql,csv,export,mysqldump,Mysql,Csv,Export,Mysqldump,mysqldump命令如下所示: mysqldump -u<username> -p<password> -h<remote_db_host> -T<target_directory> <db_name> --fields-terminated-by=, mysqldump-u-p-h-T——以=、结尾的字段, 将为每个表写出两个文件(一个是架构,另一个是CSV表数据)。要获得CSV输出,必须指定目标目录(使用-T)。当-T传递给m

mysqldump命令如下所示:

mysqldump -u<username> -p<password> -h<remote_db_host> -T<target_directory> <db_name> --fields-terminated-by=,
mysqldump-u-p-h-T——以=、结尾的字段,
将为每个表写出两个文件(一个是架构,另一个是CSV表数据)。要获得CSV输出,必须指定目标目录(使用-T)。当-T传递给mysqldump时,它将数据写入运行mysqld的服务器的文件系统,而不是发出命令的系统。 有没有从远程系统转储CSV文件的简单方法


注意:我熟悉使用简单的mysqldump和处理STDOUT输出,但我不知道有什么方法可以在不进行大量解析的情况下以这种方式获取CSV表数据。在本例中,我将使用-X选项并转储xml。

在许多系统上,MySQL作为不同的用户(例如用户“MySQL”)运行,如果MySQL用户在转储目录中没有写入权限,您的mysqldump将失败-您自己在该目录中的写入权限是什么并不重要。将目录(至少暂时)更改为世界可写目录(777)通常可以解决导出问题。

我想补充一下codeman的答案。它工作了,但需要大约30分钟的调整,以满足我的需要

mysql -h remote_host -e "SELECT * FROM my_schema.my_table" --batch --silent > my_file.csv
我的Web服务器使用centos 6/cpanel,codeman上面使用的标志和序列对我来说不起作用,我不得不重新排列并使用不同的标志,等等

此外,我将其用于本地文件转储,它不仅对远程DBs有用,因为我对selinux和mysql用户对SELECT INTO OUTFILE命令的权限有太多问题,等等

我的Centos+Cpanel服务器上的工作原理是什么 但这没什么区别。我仍然坚持这一点。我当前在处理后将其添加到文件中

选择数据库

由于某些原因,我无法在命令行中包含数据库名称。我试过了

-D databasename
在命令行中,但我不断收到权限错误,因此我在query.sql的顶部使用了以下命令:

USE database_name;

你找到解决这个问题的办法了吗?对不起,还没有。我认为xml选项是您的最佳选择(假设您使用的是足够新的mysql版本),我确实可以访问远程主机,但SELECT INTO文件失败,因此我最终使用了以下选项:mysql-h“host”-u“user”-p“password”-e“SELECT*FROM mydb.mytable”>/tmp/table.csv。然后从我的本地机器:scpmy_user@remote_server:/tmp/table.csv~/table.csv此操作非常有效。请注意,它是以制表符分隔的,而不是逗号。如何导入批处理文件?当某些列中的某些值包含制表符时会发生什么情况?如何让它转义制表符和换行符?@Milimetric有一点,我还想补充一点,它不能正确处理空值。对于导入,NULL应该是\N,但在文件中将是NULL。请尝试从mysql中删除列名的-s——帮助-它与-B是冗余的,但在我的系统中它起了作用
-D databasename
USE database_name;