请注意,这是计量发送到 mysql 的文件量,而不是 mysql 实际完成的工作量,并且发送到 mysql 的文件量可能无法准确映射到 mysql 已经完成且尚未完成的工作量做。一个巨大的多行 INSERT (如INSERT <table> VALUES(<row 1 content>), (<row 2 content>), ..., (<row X content>);而不是INSERT <table> VALUES(<row 1 content>); INSERT <table> VALUES (<row 2 content>); ...)在完全接收之前不会被处理,因此如果您通过慢速网络链接运行脚本,您会在发送数据时看到一些进度,然后在实际处理时暂停(所以如果整个脚本是一个长的多行插入语句,进度表可能会直接达到 100%,或者接近,并在那里呆很长时间)。
作为另一个建议,您可以在脚本的每个部分周围添加输出语句,例如:
SELECT "About to create table some_table" AS action;
<create table code>
SELECT "Table some_table created" AS action;
并时不时地用消息以及之前和/或之后的消息打破位插入:
SELECT "About to add rows to some_table" AS action, COUNT(*) AS current_rowcount FROM some_table;
<some insert statements, or a multi-row insert>
SELECT "adding rows to some_table" AS action, COUNT(*) AS current_rowcount FROM some_table;
<some more insert statements, or a multi-row insert>
SELECT "Done adding rows to some_table" AS action, COUNT(*) AS current_rowcount FROM some_table;
我有一个疯狂的问题要问你吗!!!
这将报告每个 InnoDB 表的大小。
只需在加载 SQL 脚本期间定期运行它。如果 SQL 脚本表在加载期间锁定了表,那么在表完全加载之前您将看不到数字。
试试看 !!!
在 Linux 等类 unix-a 系统下,有许多选项。Pipe Viewer(pv,在此处可用)是我倾向于使用的一种,它方便地存在于大多数发行版的标准软件包存储库中(
aptitude install pv
在 Ubuntu 下)。但是您使用
type
而不是cat
暗示您正在使用Windows,并且我不知道该环境有任何此类工具,尽管毫无疑问,pv
Gaius 提到的工具之一或其中之一可以在cygwin下轻松编译。请注意,这是计量发送到 mysql 的文件量,而不是 mysql 实际完成的工作量,并且发送到 mysql 的文件量可能无法准确映射到 mysql 已经完成且尚未完成的工作量做。一个巨大的多行 INSERT (如
INSERT <table> VALUES(<row 1 content>), (<row 2 content>), ..., (<row X content>);
而不是INSERT <table> VALUES(<row 1 content>); INSERT <table> VALUES (<row 2 content>); ...
)在完全接收之前不会被处理,因此如果您通过慢速网络链接运行脚本,您会在发送数据时看到一些进度,然后在实际处理时暂停(所以如果整个脚本是一个长的多行插入语句,进度表可能会直接达到 100%,或者接近,并在那里呆很长时间)。作为另一个建议,您可以在脚本的每个部分周围添加输出语句,例如:
并时不时地用消息以及之前和/或之后的消息打破位插入:
在处理脚本时,这些额外的 SELECT 语句的结果应该写入标准输出(即您的控制台),这样您就会知道它已经走了多远。
我相信您应该能够使用命令行进度条来做到这一点,例如:
或者用 progress 连接,例如: