gpt4 book ai didi

mysql - 从命令提示符 mysql 工具中导出 MySQL 数据库。没有 mysqldump

转载 作者:行者123 更新时间:2023-11-29 01:41:34 25 4
gpt4 key购买 nike

我在我的服务器上登录了 mysql,并且能够从那里输入命令。我找不到可以让我从命令行工具中导出的命令。当然,我可以注销并运行 mysqldump -u -p... 但这很痛苦。要从客户端内部导入,您只需键入 source path/to/the/source

export 肯定有这样的东西,但是互联网上的所有东西都指向 mysqldump,所以我找不到我要找的工具。毕竟,mysqldump 只是我正在寻找的命令的包装器。有谁知道用什么?感谢任何可以提供帮助的人。

最佳答案

After all, mysqldump is just a wrapper for the command that I'm looking for.

不,实际上不是。

一些其他实用程序,如 mysqladminmysqlcheck 只不过是 SQL 语句的“方便”(或者,如果你问我,基本上毫无意义)包装器可以自己提出问题,所以我认为您的假设从这个角度来看可能是合理的,但 mysqldump 并非如此。

mysqldump 的源代码大约有 5,061 行 C——甚至不包括实际管理与 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 ... 从每个表中获取所有数据,并将其转换为 SQL 语句。实际制作这些 INSERT 语句的代码来自 mysqldump。不在服务器中。

Internet 上的所有内容都指向 mysqldump 是有原因的。

关于mysql - 从命令提示符 mysql 工具中导出 MySQL 数据库。没有 mysqldump,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20083698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com