首页 > 数据库 >Mysql关联删除CSV中的相关数据

Mysql关联删除CSV中的相关数据

时间:2023-02-22 10:00:36浏览次数:35  
标签:tmp account 删除 transit Mysql test CSV id select

问题描述:提供一个csv文件,记录的是一些不同数据库的不同表中的共同字段account_id数据,需要在A库的account表中做关联删除

 

解决思路:csv文件中储存的都是account_id,六位纯数字id。可以建立一张临时表,将csv数据导入临时表中,最后做关联删除。

1.备份原表
CREATE table A.account_0220 as select * from A.account;
alter table A.account_0220 comment = 'This is a backup table. Please drop it after 20230320';

2.导入数据到临时表
创建临时表
create table test.transit_tmp(account_id int);

导入数据到临时表
load data local infile '/tmp/0220/202302201526.csv' 
into table test.transit_tmp
fields terminated by ',' optionally enclosed by '"' escaped by '"'
lines terminated by '\r\n';


查询临时表数据量
select count(*) from transit_tmp;
+----------+
| count(*) |
+----------+
|    10369 |
+----------+
1 row in set (0.003 sec)

3.查询数据是否匹配
查询account表中与tmp关联数据行数,查询到匹配数据与实际csv数据相差一行
MariaDB [(none)]> select count(*) from A.account  where account_id in (select * from test.transit_tmp);
+----------+
| count(*) |
+----------+
|    10368 |
+----------+
1 row in set (42.539 sec)
MariaDB [test]> select * from transit_tmp order by account_id asc limit 1;
+------------+
| account_id |
+------------+
|          0 |
+------------+
1 row in set (0.003 sec)

MariaDB [test]> select * from transit_tmp order by account_id asc limit 2;
+------------+
| account_id |
+------------+
|          0 |
|     261607 |
+------------+
2 rows in set (0.003 sec)
查询到数据不匹配,csv文件中有一行是字段名,load data把account_id这一行当成0插入到了临时表中

 

删除test.transit_tmp表中数据为0的一行

delete from test.transit_tmp where account_id='0';

 

4.清理目标表相关数据

set autocommit=0; 

delete from A.account where account_id in (select * from test.transit_tmp); 

commit;

 

标签:tmp,account,删除,transit,Mysql,test,CSV,id,select
From: https://www.cnblogs.com/houzhiheng/p/17143309.html

相关文章

  • postgresql 常用的删除重复数据方法
    一、最高效方法测试环境验证,6600万行大表,删除2200万重复数据仅需3分钟deletefromdeltestawherea.ctid=any(array(selectctidfrom(selectrow_number()over......
  • 真正的macOS创建、删除用户及密码操作:为什么设置中用户与群组里没有其他用户但创建pos
    使用源码编译postgresql(makeinstall)之后或安装了postgresqlapp后,系统会自动创建一个叫postgres的超级用户,但初始密码未知。这个用户想删删不掉,想切到这个用户不知道密码......
  • MySQL查询(一)
    MySQL查询(一)1.基础查询SELECT查询列表FROM表名;查询列表:可以是表中的字段、常量值、表达式、函数查询结果是一个虚拟的表格,并没有保存下来查询表中的......
  • pymysql通过DBUtils实现连接池技术
    DBUtils是一套Python数据库连接池包,并允许对非线程安全的数据库接口进行线程安全包装。一、安装pipinstallDBUtils二、导入模块#针对不同版本,可能导入方式存......
  • MySQL8.0 0 安装后,使用CMD无法启动mysql服务
    首先,先把mysql的bin路径添加到系统环境变量     第一步:在MySQL的安装文件的bin目录   例如: D:\mysql\bin   中新建一个my.ini的文件,复制进代码[my......
  • mysql之半同步
    ##################安装半同步插件:mysql>installpluginrpl_semi_sync_mastersoname'semisync_master.so';mysql>installpluginrpl_semi_sync_slavesoname'semi......
  • IDEA+java swing+MySQL配置
    1、建立一个java项目(不是空项目)2、创建GUIForm(减少代码压力)生成代码出现了这个窗体此时说明swing已经可用了3、连接MySQL......
  • mysql之中间件Cetus
    #################https://www.bookstack.cn/books/Cetus               ############################## ......
  • MySQL 导出 表结构,执行 .sql 文件导入结构或者数据
    1、MySQL导出不同类型的表结构1.1导出结构不导出数据mysqldump-h主机地址-uroot-p密码-d数据库名>xxx.sql#加-d参数如果发现加了-d参数......
  • mysql5.7压缩包配置教程(简单高效)
    MySql5.764位下载链接1.下载压缩包之后,解压压缩包,添加系统环境变量%MYSQL_HOME%\bin2.新建my.ini文件[mysqld]basedir=D:\DevelopTools\mysql-5.7.32-winx64......