1

我有一台在一台 PC (WinXP) 上运行的 MySQL 服务器。

在另一台 PC (WinXP) 上,我想将表备份到csv文件,所以我有一个 c++ 程序连接到 MySQL 数据库,然后我发出如下命令:

SELECT data FROM table WHERE something=ABC
INTO OUTFILE c\tmp.txt
FIELDS TERMINATED BY ';' 
OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY ";";

数据似乎已导出,但在服务器“c:\”上而不是在我的 PC:s“c:\”上。当我的程序作为 Windows 服务运行时,我也不能只通过 LAN 获取数据。

我看过这篇文章,但似乎我不能在该解决方案中使用“FIELDS TERMINATED BY”等。

我可以从远程服务器本地导出 csv 数据还是必须先在本地迁移数据?

问题“已解决”:您似乎无法以“简单”的方式进行操作,因此我使用 MySQL 在 PC 上运行该服务,并让 DCom 服务器定期将数据移动到另一台 PC。

4

3 回答 3

3

打算发表评论(但我没有足够的代表点发表评论)。 不确定您是否能够安装东西,但您可以尝试使用cygwin + sqsh ( http://www.sqsh.org/sqsh_home.html )。我是 linux 用户,sqsh 是从数据库中获取数据的好工具。

于 2012-04-24T11:05:16.243 回答
1

SELECT ... INTO OUTFILE 显然将文件写入 mysql-demon 的本地文件系统。一种选择可能是共享您的客户端 PC 的目录,在您的服务器上打开它并将其路径用于 outfile 选项。如果这不是一个选项,您可能必须在 c++ 程序中选择数据并将其(手动)写入本地 csv 文件。

于 2012-04-24T12:55:46.717 回答
0

如果您不想安装额外的,请使用以下命令。

mysql -h remotedb.db -u ident -p -B -e "your query ;" | sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > localfile.csv

-B 表示将输出作为制表符分隔。

于 2012-09-13T05:48:35.330 回答