当前位置: 首页 > news >正文

mysql内置工具导入csv包,简单便捷高效

2025.3.2记,以前不知道csdn搜索如何,写的每篇内容都很细分,后来想想很麻烦

目前考虑设置目录结构,如果仅有其中一个问题,可以直接点击标题,整篇文章不用全看

写作思路就是喜欢说报错原因,解决方法

这篇文章遇到的每一个报错全是我自己经历的

如需转载,标记出处

目录

1.创建一个你想要的数据库

2.创建表/mysqlimport: Error: 1146, Table 'library.ab' doesn't exist, when using table: ab

3.重开终端,用下面的命令

如果出现了下面的报错

(1)mysqlimport: Error: 3948, Loading local data is disabled; this must be enabled on both the client and server sides, when using table: UserBehavior

(2)Undo Log error: No more space left over in system tablespace for allocating UNDO log pages


1.创建一个你想要的数据库

create database uba;

分析导入文件的格式内容

2.创建表/mysqlimport: Error: 1146, Table 'library.ab' doesn't exist, when using table: ab

不然就会收到”mysqlimport: Error: 1146“大礼包

(你的csv文件名和表格名字一摸一样,大小写也是

use uba;
create table userBehavior (userID  BIGINT,itemID BIGINT,categoryID varchar(255),timestamp TIMESTAMP);

3.重开终端,用下面的命令

就是这种普通的终端不是mysql里了

mysqlimport --ignore-lines=1 \

            --fields-terminated-by=, \

            --local -u root \

            -p DataBase \

             TableName.csv

根据你自身情况去修改上面的命令,像我只需要改数据库名字和csv文件的名字就好

  • mysqlimport: MySQL 的一个命令行工具,用来导入数据到 MySQL 表。
  • --ignore-lines=1: 忽略 CSV 文件的第一行,通常用来跳过文件中的标题行。
  • --fields-terminated-by=,: 指定字段分隔符,这里是逗号(,),表示 CSV 文件中的每一列数据是由逗号分隔的。
  • --local: 表示数据文件在本地机器上,而不是数据库服务器上。没有这个参数的话,默认会从服务器上读取文件。
  • -u root: 使用 root 用户连接 MySQL 数据库。
  • -p: 提示输入密码,连接到 MySQL 时需要输入密码。
  • Database: 目标数据库的名称,表示数据将被导入到这个数据库中。
  • TableName.csv: 要导入的 CSV 文件的名称,这里是 TableName.csv。

  如果你数据1G以上,建议先放100条试试,万一出问题还可以改


2025.3.2补充:

注意时间戳这边

如果你和我一样属于csv数据是这种整形类型的要先改成整形,导入数据库之后,再在MYSQL上改回来(目前现在在改中)


至此,你应该已经和现在的我一样等待这个数据的传递成功了,只不过数据太大需要等十几分钟

如果出现了下面的报错

(1)mysqlimport: Error: 3948, Loading local data is disabled; this must be enabled on both the client and server sides, when using table: UserBehavior

别担心,因为我也遇到了哈哈 :)

mysql默认禁用 LOCAL 功能,用 LOAD DATA LOCAL 语句就会被禁止(我记得当时学sql注入的时候就有这个事例,别担心,咱用完再改回来就好)

设置全局变量:

 SET GLOBAL local_infile=1;

 quit

(2)Undo Log error: No more space left over in system tablespace for allocating UNDO log pages

如果你数据一亿条以上,直接看下面的那个ERROR3,这个不行。

解决办法:

分析:


--创建一个新的 undo 表空间:
   
   CREATE UNDO TABLESPACE temp_undo_003 ADD DATAFILE 'temp_undo_003.ibu';
   
   -- 创建 `temp_undo_003` 这个 undo 表空间,并为其添加数据文件。
   -- 目的是临时提供 undo 作用,确保数据库在后续操作中始终有可用的 undo 表空间。

--设置 `innodb_undo_001` 为 INACTIVE(非活动状态):
   
   ALTER UNDO TABLESPACE innodb_undo_001 SET INACTIVE;
   
   -- 让 `innodb_undo_001` 进入 `INACTIVE` 状态,意味着它不再接受新的 undo 事务。

-- 等待 `innodb_undo_001` 变成 `empty` 状态:
   
   SELECT NAME, STATE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE NAME = 'innodb_undo_001';
   
    --监测表空间状态,确保 undo 数据已经清空(`STATE = 'empty'`)。

--重新激活 `innodb_undo_001`:
   
   ALTER UNDO TABLESPACE innodb_undo_001 SET ACTIVE;
   
   -- 使 `innodb_undo_001` 重新可用,但此时它已经完成了手动截断。

-- 对 `innodb_undo_002` 重复上述步骤:
    --先设置 `INACTIVE`,等待变为空,再设置 `ACTIVE`,完成手动截断。
ALTER UNDO TABLESPACE innodb_undo_002 SET INACTIVE;
 
   SELECT NAME, STATE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE NAME = 'innodb_undo_002';
   
  ALTER UNDO TABLESPACE innodb_undo_001 SET ACTIVE;
--当 `innodb_undo_001` 和 `innodb_undo_002` 都被清理后:
    --关闭并删除 `temp_undo_003`:
     
     ALTER UNDO TABLESPACE temp_undo_003 SET INACTIVE;
     DROP UNDO TABLESPACE temp_undo_003;
     
 

MySQL 提供“UNDO 日志文件”来回滚更改的方法。我存了一亿的数据,日志表空间因为事务积累导致文件增大,把它清空就行。

需要至少 2 个活动 undo 表空间,用 temp_undo_003 作为过渡,确保整个过程中始终有可用的 undo 表空间

总结

这个过程是,手动 undo 表空间截断和优化的操作,利用 临时 undo 表空间(temp_undo_003) 来保持数据库稳定性,最终完成 innodb_undo_001innodb_undo_002 的清理,并释放存储空间。

参考文档:

https://dev.mysql.com/doc/refman/8.0/en/innodb-undo-tablespaces.html

(3)ERROR 3 (HY000): Error writing file '/tmp/MLfd=35' (OS errno 28 - No space left on device)

删一亿条数据,让回滚段不堪重负,用上面的解决办法也不行

Cannot find an ascendable index in table at /usr/bin/pt-archiver line 3233.
 

CREATE INDEX idx_user_id ON userBehavior(userID);

pt-archiver --source h=127.0.0.1,D=uba,t=userBehavior --purge --limit 1000 --commit-each --where 'user_id < NOW() - INTERVAL 1 MONTH' --user root --password 'root'

相关文章:

  • 蓝桥杯C语言组:基于蓝桥杯煤球数目问题的数列累加解决方案研究
  • 基于springboot的高校物品捐赠系统
  • C++ Qt OpenGL渲染FFmpeg解码后的视频
  • Vue+Elementui 全局配置el-table表格列宽可拖拽
  • 如何快速的解除oracle dataguard
  • python项目依赖哪些whl
  • Pwntools 的详细介绍、安装指南、配置说明
  • Unity Burst编译
  • DeepSeek助力科研:文献处理新方式
  • git管理的项目 发布时有收费版/免费版/客户定制版,如何管理分支,通过merge(合并) 还是 cherry-pick(挑拣) 引入更新的代码?
  • 数据结构之八大排序算法详解
  • 看视频学习方法总结
  • 深入解析XXL-JOB任务调度执行原理
  • 技术问题汇总:前端怎么往后端传一个数组?
  • 8 SpringBoot进阶(上):AOP(面向切面编程技术)、AOP案例之统一操作日志
  • 对 Steam 下载的一次猜想
  • ArcGIS Pro实战技巧:灵活运用线条精准分割与裁切面要素
  • 使用 Spring Boot 和 Keycloak 的 OAuth2 快速指南
  • 单细胞marker基因表达密度图-(还有一个包装函数)
  • 文本条件生成
  • 网站项目书范文/怎么做市场营销和推广
  • 网站排名优化外包公司/镇江seo快速排名
  • 网站底部分享怎么做/打字赚钱平台 学生一单一结
  • 国外网站推广如何做/数据分析师培训机构推荐
  • 洛阳网站建设联系方式/百度问问我要提问
  • 关于网站建设live2500/上海网优化seo公司