命令行外的mysql转储

时间:2009-03-19 00:37:01

标签: mysql mysqldump

任何现代编程语言是否支持mysqldump作为方法,或者它仍然是命令行环境的域。

4 个答案:

答案 0 :(得分:1)

有适用于.NET,Delphi和通用ODBC / DAO的API(数据库驱动程序),以及用于C / C ++和其他语言的库。它永远不会直接写入主流语言本身;这将限制语言作为一般目的,因此使其不那么有用。

例如,Delphi有一个名为DBExpress的数据库框架;有一个开箱即用的DBExpress驱动程序,用于MS SQL Server,Oracle,MySQL,DB2等;可用的驱动程序取决于您决定购买的版本(专业版,企业版或架构师)。 MySQL适用于所有版本。

使用DBExpress框架使得Delphi可以用于任何有人决定提供DBExpress驱动程序的数据库引擎,并且驱动程序可以用Delphi本身编写。这使德尔福更加通用;它不是硬编码只与单个RDBMS一起使用。

编辑:正如其他人所说(我认为Jarret),mysqldump的源代码可用。使用可用于您选择的语言的包装器,您应该能够基于该源实现相同的功能。

答案 1 :(得分:1)

如果你正在使用PHP并且不介意使用GPL许可证,那么phpMyAdmin包含一些MySQL转储代码(以及其他格式,如CSV等)。

查看文件:

libraries/export/sql.php

答案 2 :(得分:0)

你的直觉是正确的......编程语言库提供对mysqldump的API访问是非常困难的。 mysqldump的源代码是用C语言编写的,它有自己的main()函数;它的设计与其自己的程序一样。它构建为可执行文件,大部分错误报告和输出使用直接打印语句处理到stdout,而不是使用可以包装到特定于语言的值的返回值。

当编译特定编程语言的大多数绑定(PHP,python,Delphi,.NET等)时,它们链接到libmysql,而libmysql不包含对mysqldump程序的引用。我不能肯定地说没有人写过包装纸,但它确实是一个非常奇怪的包装纸。

换句话说,最好的办法是使用您选择的编程语言中的子进程来调用mysqldump工具,并从stdin或临时文件中吸收结果。

答案 3 :(得分:0)

你的问题很模糊。请描述您想要完成的内容以及您已尝试过的内容。

话虽这么说,如果你想以mysqldump的方式生成MySQL数据库的数据库转储,我知道没有API可以直接实现。但是还有许多其他方式来转储/备份数据库,而mysqldump格式有其共同的问题(没有很好地定义一个东西,因此不容易解析)。所以你可以考虑另一种方法。