我在一台PC上运行MySQL服务器(WinXP)。
在另一台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:\”不在我的电脑上:s“c:\”。 我不能只通过LAN获取数据,因为我的程序作为Windows服务运行。
我见过this post但似乎我不能使用“FIELDS TERMINATED BY”等解决方案。
我可以从远程服务器本地导出csv数据,还是必须先在本地迁移数据?
问题“已解决”:由于您似乎无法以“简单”方式执行此操作,因此我使用MySQL在PC上运行该服务,并让DCom服务器定期将数据移动到另一台PC。
答案 0 :(得分:3)
打算成为评论(但我没有足够的回复点来评论)。 不确定您是否能够安装,但您可以尝试使用 cygwin + sqsh (http://www.sqsh.org/sqsh_home.html)。我是linux用户,sqsh是从数据库中获取数据的绝佳工具。
答案 1 :(得分:1)
SELECT ... INTO OUTFILE显然将文件写入mysql-demon的本地文件系统。一种选择可能是共享客户端PC的目录,在服务器上打开它并使用其路径作为outfile-option。如果这不是一个选项,您可能必须选择c ++程序中的数据并将其写入(手动类型)到本地csv文件。
答案 2 :(得分:0)
如果您不想安装额外的命令,请使用以下命令。
mysql -h remotedb.db -u ident -p -B -e "your query ;" | sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > localfile.csv
-B表示将输出作为制表符分隔。