是否有任何现代编程语言支持 mysqldump 作为一种方法,或者它仍然是命令行环境的领域。
4 回答
有适用于 .NET、Delphi 和通用 ODBC/DAO 的 API(数据库驱动程序),以及适用于 C/C++ 和其他语言的库。它永远不会被直接写入主流语言本身。这将限制该语言作为通用目的,因此使其不那么有用。
例如,Delphi 有一个名为 DBExpress 的数据库框架。为 MS SQL Server、Oracle、MySQL、DB2 等提供开箱即用的 DBExpress 驱动程序;可用的驱动程序取决于您决定购买的版本(Professional、Enterprise 或 Architect)。MySQL 在所有版本中都可用。
使用 DBExpress 框架使 Delphi 可用于任何决定为其提供 DBExpress 驱动程序的数据库引擎,并且驱动程序可以用 Delphi 本身编写。这使 Delphi 更加通用;仅使用单个 RDBMS 并没有硬编码。
编辑:正如其他人所说(我认为是 Jarret),mysqldump 的来源是可用的。使用可用于您选择的语言的包装器,您应该能够基于该源实现相同的功能。
如果您使用 PHP 并且不介意使用 GPL 许可证,那么phpMyAdmin包含一些用于 MySQL 转储的代码(以及其他格式,如 CSV 等)。
查看文件:
libraries/export/sql.php
你的直觉是对的……对于一个编程语言库来说,提供对 mysqldump 的 API 访问是非常困难的。mysqldump的源码是用C写的,有自己的main()
功能;它的设计几乎可以作为自己的程序运行。它被构建为可执行文件,并且大部分错误报告和输出都是使用直接打印到标准输出的语句来处理的,而不是使用可以包装成特定语言值的返回值。
当编译特定编程语言的大多数绑定(PHP、python、Delphi、.NET 等)时,它们链接到libmysql
,并且 libmysql 不包含对 mysqldump 程序的引用。我不能肯定地说没有人写过包装器,但它确实是一个非常奇怪的包装器。
换句话说,您最好的选择是使用您选择的编程语言中的子进程来调用 mysqldump 工具,并从标准输入或临时文件中吸收结果。
你的问题比较模糊。请描述您想要完成什么,以及您已经尝试过什么。
话虽如此,如果您想以 mysqldump 的方式生成 MySQL 数据库的 DB 转储,我知道没有任何 API 可以直接实现。但是还有许多其他的转储/备份数据库的方法,并且 mysqldump 格式有它的问题(对于一件事没有很好的定义,因此不容易解析)。因此,您可能会考虑另一种方法。