mysql - 在 LOAD DATA INFILE 之后没有查询在表上工作
问题描述
我尝试使用 InnoDB 引擎和 LOAD DATA INFILE 命令将大型 CSV 文件(14.8GB)上传到 MySQL 数据库。查询已完成,因为 InnoDB 状态显示插入的总行数:
--------------
ROW OPERATIONS
--------------
1 queries inside InnoDB, 0 queries in queue
1 read views open inside InnoDB
Process ID=5592, Main thread ID=0000000000001D80 , state=sleeping
Number of rows inserted 200370545, updated 387, deleted 6, read 12473
0.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 0.00 reads/s
----------------------------
END OF INNODB MONITOR OUTPUT
============================
查询完成后,在对表进行任何操作之前,MYSQL Workbench 中弹出一个错误(“索引超出范围”),我强制关闭程序,因为它没有响应。
现在,我在这个表上尝试的任何查询都会卡在“发送数据”状态,即使是最简单的 SELECT * FROM 表
4 event_scheduler localhost Daemon 28941 Waiting on empty queue
27 root localhost:62797 truck_database Sleep 820
28 root localhost:62798 truck_database Query 1339 Sending data SELECT * FROM gps_data LIMIT 10
29 root localhost:62800 truck_database Sleep 130
30 root localhost:62801 truck_database Query 0 starting show processlist
我之前已经将相同的 CSV 文件加载到另一个 MySQL 服务器,它在那里工作得很好。唯一不同的是,这次我尝试一次性上传整个文件,而不是把它切成小块。
似乎该表以某种方式损坏,可能是在强制关闭 Workbench 之后。有什么办法可以检查是否是这种情况?我知道的唯一命令是 SHOW TABLE STATUS ,这是我得到的结果:
gps_data InnoDB 10 Dynamic 134694075 141 19028508672 0 0 3145728 2019-03-07 17:21:28 utf8mb4_0900_ai_ci
此外,知道我在加载数据之前将 InnoDB_buffer_pool_size 修改为 5G 并且我刚刚将其设置回 500M 可能也很重要。这是我对 my.ini 所做的唯一修改
解决方案
推荐阅读
- json - 使用 JSON 格式化 PowerBI 以生成报告
- php - Pipedrive Webhook PHP 端点代码示例
- docusignapi - DocuSign 公证人 API 错误 - NOTARY_NOT_ALLOWED
- python - 如何在 conda 环境中找到正确的 python 解释器?
- django - 无法更新具有多对一关系的两个模型的嵌套序列化程序
- php - LARAVEL:当有多个项目时,我只会从我的桌子上拿一个项目。我将如何获得所有这些并输出它们?
- javascript - 由 oidc-client 库引起的角度无限变化检测循环
- swift - IOS13 Swift Facebook 登录
- sql - 如何计算相同的字段
- java - Java Socket 两次读取输入