[英]Exporting MySQL database from within a command prompt mysql tool. Without mysqldump
我已在服務器上登錄mysql並能夠從那里鍵入命令。 我在命令行工具中找不到允許我導出的命令。 當然,我可以注銷並運行mysqldump -u -p...
但這很痛苦。 要從客戶端內部導入,您只需鍵入source path/to/the/source
必須有類似這樣的內容才能導出,但是互聯網上的所有內容都指向mysqldump,因此找不到所需的工具。 畢竟,mysqldump只是我要查找的命令的包裝。 有人知道該用什么嗎? 多謝能幫助您的人。
畢竟,mysqldump只是我要查找的命令的包裝。
不,實際上不是。
其他一些實用程序(例如mysqladmin
和mysqlcheck
)僅是SQL語句的“方便”(或者,如果您問我,基本上沒有意義的)包裝程序,您可以自行發布,因此我認為您的假設可能是合理的,但是mysqldump
不是這種情況。
mysqldump
的源代碼約為C的5,061行- 甚至不包括實際管理與MySQL服務器的TCP或Unix套接字通信的代碼,或者不包含由MySQL服務器與公用事業。
是的, mysqldump
實用程序確實在可行的情況下匯編一些SQL語句,將它們發送到服務器以執行,然后將服務器的響應寫入轉儲文件中...
my_snprintf(query, sizeof(query), "SHOW CREATE TABLE %s", result_table);
……這很容易,幾乎不需要重新發明輪子。
但是,它執行的許多操作根本無法由MySQL服務器代碼處理。 例子...
if (opt_drop_trigger)
fprintf(sql_file, "/*!50032 DROP TRIGGER IF EXISTS %s */;\n", (*show_trigger_row)[0]);
fprintf(sql_file,
"DELIMITER ;;\n"
"/*!50003 SET SESSION SQL_MODE=\"%s\" */;;\n"
"/*!50003 CREATE */ ",
(*show_trigger_row)[6]);
mysql內部沒有執行該操作或該操作的功能...
if (write_data)
{
if (opt_replace_into)
dynstr_append_checked(&insert_pat, "REPLACE ");
else
dynstr_append_checked(&insert_pat, "INSERT ");
dynstr_append_checked(&insert_pat, insert_option);
dynstr_append_checked(&insert_pat, "INTO ");
dynstr_append_checked(&insert_pat, opt_quoted_table);
if (complete_insert)
{
dynstr_append_checked(&insert_pat, " (");
}
else
{
dynstr_append_checked(&insert_pat, " VALUES ");
if (!extended_insert)
dynstr_append_checked(&insert_pat, "(");
}
}
while ((row= mysql_fetch_row(result)))
{
if (complete_insert)
{
if (init)
{
dynstr_append_checked(&insert_pat, ", ");
}
init=1;
dynstr_append_checked(&insert_pat,
quote_name(row[SHOW_FIELDNAME], name_buff, 0));
}
}
num_fields= mysql_num_rows(result);
mysql_free_result(result);
對於包裝器來說,這似乎是很多不必要的工作。 :)您可能現在已經解決了,這是mysqldump所做的一些簡單操作的示例,它在發出SELECT /*!40001 SQL_NO_CACHE */ * FROM ...
后,以打包的二進制格式讀取從服務器返回的行數據SELECT /*!40001 SQL_NO_CACHE */ * FROM ...
從每個表中獲取所有數據,並將其轉換為SQL語句。 實際制作這些INSERT
語句的代碼來自mysqldump
。 不在服務器中。
互聯網上的所有內容都指向mysqldump
是有原因的。
可以通過不同的SHOW
命令實現什么mysqldump
,經過足夠的努力,您最終會得到mysqldump
;)
查看http://dev.mysql.com/doc/refman/5.5/en/show.html,了解所有可能的變體。
從我的角度來看,使用mysqldump
更方便,因為它使用與mysql
Command Line Tool相同的所有連接參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.