mysql - 如何在 MySQL 中查看 .csv 上传的进度

标签 mysql csv load-data-infile

我有一个非常大的 .csv 文件,我正在使用 LOAD DATA INFILE 命令将它加载到 mysql 中。因为需要很长时间,所以我想看看上传的进度。

到目前为止,我已经尝试了两种方法- 首先,我简单地执行了一个 SELECT COUNT(*) 命令来查看在上传过程中插入了多少行,但它总是返回 0。
其次,我尝试了 SHOW PROCESSLIST 并简单地看到了查询已经运行了多长时间。有时状态会显示“释放数据”或类似的意思。

有谁知道跟踪 LOAD DATA INFILE 命令进度的好方法吗?另外,有人知道如何跟踪插入率吗?

谢谢

最佳答案

在 Linux 上,您可以打印有关文件描述符 (ls -l/proc//fd) 和文件位置读取器 (cat/proc//fdinfo) 的信息。所以:

  1. 查找mysqld pid(在本例中:1234):

    $ ps -ef | grep mysqld

    mysql 1234 1 0 feb12 ? 00:00:55/usr/sbin/mysqld

  2. 查找已加载文件的文件描述符编号(在本例中:45):

    $ sudo ls -l/proc/1234/fd

    lr-x----- 1 root root 64 Feb 13 10:56 45 ->/var/lib/mysql/db/Loaded_file.txt

  3. 打印有关该文件描述符的信息并检查已读取的字节数(在此示例中:494927872):

    $ cat/proc/1234/fdinfo/45

    位置:494927872

    标志:0100000

您可以将此进度指示器(以字节为单位)与正在加载的实际文件大小进行比较。

除了步骤 1 和 2,您还可以使用 'lsof' 命令:

$ lsof /var/lib/mysql/db/Loaded_file.txt | grep mysql

COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME

mysqld    1234 youknowwho    45r   REG  252,0   190312 5505353 /var/lib/mysql/db/Loaded_file.txt

关于mysql - 如何在 MySQL 中查看 .csv 上传的进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5748565/

相关文章:

mysql - LOAD DATA INFILE 在 mariadb 中不起作用

mySql:批量插入的合理限制

mysql - 没有得到预期的结果

mysql - SQL选择多对多关系

php - 整理数据(删除 br 和斜杠)

C++ 输出到 .CSV 文件

php - 如何存储自定义页眉

python - 创建 csv 文件,其中每一行都是一个列表中的一些嵌套列表

javascript - 如何将具有值的行/列添加到数据表 csv 导出

MySQL加载数据到文件中;错误的字符串值错误