MySQL转移大量数据技巧

旧方法

  • 使用mysqldump,mysqlpump这两个命令行工具,但都有缺陷
mysqldump的速度太慢,3千万记录要10个小时
mysqlpump无法使用指定字段名对数据导入

新方法

select * from 表名(可以使用多表联合查询) into outfile '绝对路径文件名';
load data infile '绝对路径文件名' into table 表名 (字段名1,字段名2)

面临问题

  • 导出数据时,提示:The MySQL Server is Running with the --secure-file-priv Option So It Cannot Execute This Statement,这个错误可以通过配置my.conf文件解决,在[mysqld]段落中添加secure-file-priv配置:
[mysqld]
secure-file-priv=可用目录
  • 导入时,如果有不需要的字段,可以用@dump占位跳过不需要的字段,或者使用变量来处理,变量是可以进行计算操作的
SET @file_name = 'myfilename'
 ;

 LOAD DATA LOCAL INFILE @file_name  
 INTO TABLE revenue_table  
 FIELDS TERMINATED BY ','   
 LINES TERMINATED BY '\n'  
 ( @total_rev
 , @monthly_rev
 , @day_rev
 )
 SET `total_rev`   = @total_rev
   , `monthly_rev` = @monthly_rev
   , `day_rev`     = @day_rev
   , `from`        = @file_name
 ;

合理的流程

  • 先写个语句,看看能不能从A库插入记录到B库,注意限制行数,这个步骤用于避免字段不对应
insert into a (字段1,字段2...) select 字段1,字段2... from b limit 10
  • 导出数据后,在目的数据库拷贝粘贴测试好的字段对照,这样就可以避免非常大的麻烦

补充

  • 导入时,可以先删除索引,导入数据完成后再重建,可以提高处理速度

相关推荐

  1. MySQL转移大量数据技巧

    2024-03-13 15:30:04       43 阅读
  2. Oracle大型数据库技术

    2024-03-13 15:30:04       37 阅读
  3. Mysql将datetime数据转为Data/Char

    2024-03-13 15:30:04       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-13 15:30:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-13 15:30:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-13 15:30:04       87 阅读
  4. Python语言-面向对象

    2024-03-13 15:30:04       96 阅读

热门阅读

  1. opencv实现视频人脸识别

    2024-03-13 15:30:04       43 阅读
  2. Android gradle.plugin:8.1.1打包报错

    2024-03-13 15:30:04       44 阅读
  3. BASE理论-一起学习吧之架构

    2024-03-13 15:30:04       41 阅读
  4. 分布式结构下,Session共享有什么方案

    2024-03-13 15:30:04       60 阅读
  5. 项目示例 - 2.服务注册 - 4.Nacos

    2024-03-13 15:30:04       44 阅读
  6. 如何配置极狐GitLab Runner Cache 缓存

    2024-03-13 15:30:04       43 阅读