현대 프로그래밍 언어 중 하나가 방법으로 mysqldump를 지원합니까, 아니면 여전히 명령 행 환경의 도메인입니까?mysql 덤프 명령 줄 외부
답변
.NET, Delphi 및 일반 ODBC/DAO뿐만 아니라 C/C++ 및 기타 언어 용 라이브러리에 사용할 수있는 API (데이터베이스 드라이버)가 있습니다. 주류 언어 자체에 직접 쓰지 않을 것입니다. 이는 언어가 범용 목적으로 사용되지 못하도록하여 덜 유용하게 만듭니다.
예를 들어 Delphi에는 DBExpress라는 데이터베이스 프레임 워크가 있습니다. MS SQL Server, Oracle, MySQL, DB2 및 다른 제품에 대해 DBExpress 드라이버가 포함되어 있습니다. 사용 가능한 드라이버는 구매하려는 버전 (Professional, Enterprise 또는 Architect)에 따라 다릅니다. MySQL은 모든 버전에서 사용할 수 있습니다.
DBExpress 프레임 워크를 사용하면 누군가가 DBExpress 드라이버를 제공하기로 결정한 데이터베이스 엔진에서 Delphi를 사용할 수 있으며 드라이버는 Delphi에서 직접 작성할 수 있습니다. 델파이는 더 일반적인 목적을 유지합니다. 단일 RDBMS에서만 작동하도록 하드 코딩되지 않았습니다.
편집 : 다른 사람이 말했듯이 (내가 생각 하기엔 Jarret), mysqldump의 소스를 사용할 수있다. 선택한 언어로 사용할 수있는 래퍼를 사용하면 해당 소스를 기반으로 동일한 기능을 구현할 수 있어야합니다.
나는 그의 질문이 일반적으로 데이터베이스 바인딩에 관한 것이 아닌, mysqldump에 관한 것이 더 확실하다. –
다른 답변에서 보면 그렇게 보입니다. 그러나 내 대답은 여전히 적용됩니다. 내 편집을 참조하십시오.
당신의 본능은 ... 프로그래밍 언어 라이브러리가 mysqldump에 대한 API 액세스를 제공하는 것은 꽤 어려울 것입니다. mysqldump의 소스는 C로 쓰여지고, 자체의 main()
함수를 가지고있다; 자체 프로그램으로 작동하도록 설계되었습니다. 그것은 실행 가능 파일로 빌드되며 대부분의 오류보고 및 출력은 stdout에 대한 직접 인쇄 명령문을 사용하여 처리되며 언어 별 값으로 랩핑 될 수있는 리턴 값은 사용하지 않습니다.
특정 프로그래밍 언어에 대한 대부분의 바인딩 (PHP, python, Delphi, .NET 등)을 컴파일 할 때 libmysql
에 링크되며 libmysql에는 mysqldump 프로그램에 대한 참조가 없습니다. 나는 아무도 래퍼를 작성하지 않았다고 말할 수는 없지만 실제로는 매우 기괴한 래퍼가 될 것입니다.
다른 말로하면, 선택한 프로그래밍 언어의 하위 프로세스를 사용하여 mysqldump 도구를 호출하고 표준 입력 또는 임시 파일에서 결과를 흡수하는 것이 가장 좋습니다.
PHP를 사용하고 있고 GPL 라이센스 사용에 신경 쓸 필요가 없다면 phpMyAdmin에는 MySQL 덤프 (CSV 등의 다른 형식은 물론)를위한 코드가 포함되어 있습니다. 파일 밖으로
확인 :
libraries/export/sql.php
phpMyAdmin이 mysqldump를 호출한다는 것을 코드에서 볼 수 없습니다. 그것은 mysqldump의 출력을 모방 한 것처럼 보이지만 직접 사용하지는 않으며 큰 데이터베이스와 mysqldump가 통과하는 복잡한 데이터 유형이나 문자셋에 문제가있다. –
네, 요점은 mysqldump 도구를 전혀 호출하지 않는다는 것입니다. MySQL 덤프 용으로 자체 코드를 구현합니다. 어떤 데이터 유형이나 chatset에 문제가 있으며 phpmyadmin 프로젝트에 버그로보고됩니까? – thomasrutter
귀하의 질문이 다소 모호합니다. 성취하고자하는 것과 이미 시도한 것을 설명하십시오.
mysqldump가하는 방식으로 MySQL 데이터베이스의 DB 덤프를 생성하려는 경우 직접적으로 가능하게하는 API가 없다는 것을 알고 있습니다. 그러나 DB를 덤프/백업하는 다른 많은 방법이 있으며 mysqldump 형식에는 문제가 있습니다 (한 가지로 잘 정의되지 않아 파싱하기 쉽지 않음). 따라서 대체 접근법을 고려해보십시오.
이것은 MySQL 관련 질문입니다. 델파이, VB.NET, C# 또는 다른 어떤 것도 아닙니다. 특정 언어로 태그를 지정하면 해당 언어와 관련되어야합니다. –