дамп mysql вне командной строки - PullRequest
0 голосов
/ 19 марта 2009

Поддерживает ли какой-либо из современных языков программирования mysqldump в качестве метода, или это все еще область сред командной строки.

Ответы [ 4 ]

1 голос
/ 19 марта 2009

Если вы используете PHP и не возражаете против использования лицензии GPL, то phpMyAdmin содержит некоторый код для дампа MySQL (а также для других форматов, таких как CSV и т. Д.).

Проверить файл:

libraries/export/sql.php
1 голос
/ 19 марта 2009

Доступны API (драйверы баз данных) для .NET, Delphi и универсальные ODBC / DAO, а также библиотеки для C / C ++ и других языков. Он никогда не будет написан непосредственно на основной язык; это ограничит использование языка в качестве общего назначения и, следовательно, сделает его менее полезным.

Например, в Delphi есть база данных DBExpress; в комплект поставки входит драйвер DBExpress для MS SQL Server, Oracle, MySQL, DB2 и других; доступные драйверы зависят от версии (Professional, Enterprise или Architect), которую вы решили купить. MySQL доступен во всех версиях.

Использование инфраструктуры DBExpress делает Delphi пригодным для использования с любым ядром базы данных, для которого кто-то решит предоставить драйвер DBExpress, и эти драйверы можно записать в самом Delphi. Это делает Delphi более универсальным; это не жестко, чтобы работать только с одной RDBMS.

РЕДАКТИРОВАТЬ: Как уже говорили другие (я думаю, Джаррет), источник для mysqldump доступен. Используя обертки, доступные для вашего языка, вы сможете реализовать те же функции на основе этого источника.

0 голосов
/ 19 марта 2009

Ваш вопрос довольно расплывчатый. Пожалуйста, опишите, чего вы хотите достичь, и что вы уже пробовали.

Тем не менее, если вы хотите создать дамп базы данных базы данных MySQL так, как это делает mysqldump, я не знаю ни одного API, который бы делал это напрямую. Но существует множество других способов создания дампов / резервных копий БД, и у формата mysqldump есть свои проблемы (они плохо определены с одной стороны, поэтому анализировать их нелегко) Таким образом, вы могли бы рассмотреть альтернативный подход.

0 голосов
/ 19 марта 2009

Ваш инстинкт правильный ... для библиотеки языков программирования было бы довольно сложно обеспечить API доступ к mysqldump. Исходный код mysqldump написан на C с собственной функцией main(); он предназначен для работы почти как его собственная программа. Он создается как исполняемый файл, и большая часть сообщений об ошибках и вывод обрабатываются с использованием прямых операторов печати в stdout, а не возвращаемых значений, которые можно заключить в значение для конкретного языка.

Когда большинство привязок для конкретного языка программирования компилируется (PHP, python, Delphi, .NET и т. Д.), Они связываются с libmysql, а libmysql не содержит ссылки на программу mysqldump. Я не могу сказать наверняка, что никто не написал обертку, но это действительно была бы очень странная обертка.

Другими словами, лучше всего использовать подпроцесс на выбранном вами языке программирования для вызова инструмента mysqldump и воспринимать результаты либо из stdin, либо из временного файла.

...