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

六十六、【Linux数据库】MySQL数据导入导出 、 管理表记录 、 匹配条件

数据管理全景图

高级功能
核心流程
批量加载
查询优化
格式转换
数据清洗
复杂分析
数据迁移
正则表达式
数据存储
窗口函数
云服务集成
LOAD DATA
数据导入
索引策略
数据处理
mysqldump
数据导出
数据源

MySQL 数据管理功能概述

核心功能

  1. 数据导入导出:批量数据迁移与备份
  2. 记录管理:增删改查操作
  3. 条件匹配:精准筛选数据
  4. 数据转换:格式转换与清洗

应用场景

  1. 数据迁移:系统升级、服务器迁移
  2. 报表生成:定期导出分析数据
  3. 数据清洗:处理不规范数据
  4. 批量操作:高效管理大量记录

数据导入导出策略对比

方案mysqldumpLOAD DATASELECT INTO OUTFILE最佳适用场景
导出格式SQLCSV/TSVCSV/TSVSQL:完整备份 CSV:数据分析
导入速度极快不适用大数据量:LOAD DATA
导出速度中等不适用部分导出:SELECT INTO
数据结构包含表结构仅数据仅数据全库迁移:mysqldump
压缩支持支持不支持不支持网络传输:压缩SQL
跨平台性异构系统:CSV
事务支持支持可选支持事务数据:mysqldump

一、数据导入导出

1. 导出数据

# 导出整个数据库
[root@localhost ~]# mysqldump -u root -p company > company_backup.sql
Enter password: ******# 导出单表
[root@localhost ~]# mysqldump -u root -p company employees > employees.sql# 导出CSV格式
[root@localhost ~]# mysql -u root -p -e "SELECT * FROM employees" company | sed 's/\t/,/g' > employees.csv

2. 导入数据

# 导入SQL文件
[root@localhost ~]# mysql -u root -p company < employees.sql# 导入CSV文件
mysql> LOAD DATA INFILE '/var/lib/mysql-files/employees.csv'INTO TABLE employeesFIELDS TERMINATED BY ','LINES TERMINATED BY '\n'IGNORE 1 ROWS;

3. 跨服务器传输

# 直接迁移数据库
[root@localhost ~]# mysqldump -u root -p -h source_host company | mysql -u root -p -h dest_host company

二、管理表记录

1. 插入记录

# 单条插入
mysql> INSERT INTO employees (first_name, last_name, email) VALUES ('John', 'Doe', 'john@example.com');# 批量插入
mysql> INSERT INTO employees (first_name, last_name, email) VALUES('Jane', 'Smith', 'jane@example.com'),('Bob', 'Johnson', 'bob@example.com'),('Alice', 'Williams', 'alice@example.com');

2. 更新记录

# 单条件更新
mysql> UPDATE employees SET salary = 5000 WHERE id = 1;# 多条件更新
mysql> UPDATE employees SET salary = salary * 1.1 WHERE department = 'Sales' AND hire_date < '2023-01-01';

3. 删除记录

# 删除单条记录
mysql> DELETE FROM employees WHERE id = 100;# 批量删除
mysql> DELETE FROM employees WHERE department = 'Temp' AND hire_date < '2022-01-01';

4. 查询记录

# 基础查询
mysql> SELECT * FROM employees;# 指定列查询
mysql> SELECT first_name, last_name, salary FROM employees;

三、匹配条件演示

1. 基本条件匹配

# 等值匹配
mysql> SELECT * FROM employees WHERE department = 'IT';# 范围匹配
mysql> SELECT * FROM employees WHERE salary BETWEEN 4000 AND 6000;# 列表匹配
mysql> SELECT * FROM employees WHERE department IN ('HR', 'Finance');

2. 模糊匹配

# LIKE通配符
mysql> SELECT * FROM employees WHERE last_name LIKE 'Sm%';# 正则表达式
mysql> SELECT * FROM employees WHERE email REGEXP '@example\.com$';

3. 空值处理

# 查找空值
mysql> SELECT * FROM employees WHERE phone IS NULL;# 查找非空值
mysql> SELECT * FROM employees WHERE phone IS NOT NULL;

4. 复杂条件组合

# AND/OR组合
mysql> SELECT * FROM employees WHERE (department = 'IT' AND salary > 5000)OR (department = 'Sales' AND salary > 4000);# 子查询匹配
mysql> SELECT * FROM employees WHERE department IN (SELECT name FROM departments WHERE budget > 100000);

命令总结表格

演示命令功能描述关键参数
mysqldump -u user db > backup.sql数据库导出数据库名
mysql -u user db < backup.sql数据库导入SQL文件
SELECT ... INTO OUTFILE 'file.csv'导出CSV文件路径
LOAD DATA INFILE 'file.csv' INTO TABLE导入CSV字段分隔符
INSERT INTO t VALUES (...)插入记录列值
UPDATE t SET col=val WHERE ...更新记录条件
DELETE FROM t WHERE ...删除记录条件
SELECT * FROM t WHERE col LIKE 'pat%'模糊匹配LIKE/REGEXP
SELECT * FROM t WHERE col IS NULL空值匹配IS NULL
SELECT * FROM t WHERE col IN (1,2,3)列表匹配IN

功能作用详解

1. 数据导入导出技术

导出格式对比

格式命令示例优点缺点
SQLmysqldump -u user db完整结构+数据文件较大
CSVSELECT ... INTO OUTFILE通用格式无表结构
XMLmysqldump --xml结构化体积大
JSONSELECT JSON_OBJECT(...)易解析需手动构造

导入优化技巧

-- 禁用索引加速导入
ALTER TABLE employees DISABLE KEYS;
LOAD DATA INFILE 'data.csv' INTO TABLE employees;
ALTER TABLE employees ENABLE KEYS;-- 批量提交
SET autocommit=0;
LOAD DATA INFILE 'large.csv' INTO TABLE employees;
COMMIT;

2. 记录管理最佳实践

批量插入优化

-- 小批量多次插入
INSERT INTO t VALUES (...), (...), (...); -- 每次100-1000条-- 使用LOAD DATA替代INSERT
LOAD DATA INFILE 'data.csv' INTO TABLE t

安全删除策略

-- 先查询再删除
SELECT * FROM employees WHERE department = 'Temp';
DELETE FROM employees WHERE department = 'Temp';-- 使用LIMIT防止误删
DELETE FROM employees WHERE status = 'inactive' LIMIT 1000;

3. 高级匹配技术

全文搜索

-- 创建全文索引
ALTER TABLE articles ADD FULLTEXT INDEX ft_idx (title, content);-- 自然语言搜索
SELECT * FROM articles 
WHERE MATCH(title, content) AGAINST('database optimization' IN NATURAL LANGUAGE MODE);-- 布尔搜索
SELECT * FROM articles 
WHERE MATCH(title, content) AGAINST('+MySQL -Oracle' IN BOOLEAN MODE);

JSON数据匹配

-- 查询JSON字段
SELECT * FROM users 
WHERE JSON_EXTRACT(profile, '$.skills') LIKE '%MySQL%';-- JSON路径查询
SELECT * FROM users 
WHERE JSON_CONTAINS(profile, '"MySQL"', '$.skills');

4. 性能优化技巧

索引优化匹配

-- 避免索引失效
SELECT * FROM employees WHERE YEAR(hire_date) = 2023; -- 索引失效
SELECT * FROM employees WHERE hire_date BETWEEN '2023-01-01' AND '2023-12-31'; -- 使用索引-- 覆盖索引
SELECT id, name FROM employees WHERE department = 'IT'; -- 使用索引覆盖

分区裁剪

-- 创建分区表
CREATE TABLE logs (id INT,log_date DATE
) PARTITION BY RANGE (YEAR(log_date)) (...);-- 分区查询优化
SELECT * FROM logs WHERE log_date BETWEEN '2023-01-01' AND '2023-12-31'; -- 只扫描2023分区

5. 数据清洗转换

数据格式化

-- 日期格式化
UPDATE employees SET hire_date = STR_TO_DATE('2023-01-15', '%Y-%m-%d') 
WHERE id = 100;-- 字符串处理
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;

重复数据处理

-- 查找重复记录
SELECT email, COUNT(*) FROM employees GROUP BY email HAVING COUNT(*) > 1;-- 删除重复记录
DELETE t1 FROM employees t1
INNER JOIN employees t2 
WHERE t1.id < t2.id AND t1.email = t2.email;
http://www.dtcms.com/a/332661.html

相关文章:

  • 日本服务器哪些服务商是可以免费试用的?
  • 拒绝“效果图”返工:我用Substance 3D Stager构建产品可视化工作流
  • 计算机视觉(opencv)实战五——图像平滑处理(均值滤波、方框滤波、高斯滤波、中值滤波)附加:视频逐帧平滑处理
  • vue2生命周期详解
  • Claude Opus 4.1深度解析:抢先GPT5发布,AI编程之王主动出击?
  • 【线上问题】1分钟学会如何定位 Java 应用 CPU 飙升问题
  • Spring中存在两个相同的Bean是否会报错?
  • Amazon Bedrock如何轻松实现复杂的生成式AI模型?
  • 纯C++实现halcon的threshold
  • 【Java EE进阶 --- SpringBoot】初识Spring(创建SpringBoot项目)
  • zynq代办事项
  • Vue 侦听器(watch 与 watchEffect)全解析2
  • 【100页PPT】数字化转型集团信息化总体解决方案(附下载方式)
  • Swift 实战:用最长递增子序列算法解“俄罗斯套娃信封”问题(LeetCode 354)
  • 日本服务器租用选哪个机房国内访问比较快?
  • 【LINUX网络】HTTP协议基本结构、搭建自己的HTTP简单服务器
  • 企微用户部门同步HRS系统
  • 电脑上练打字用什么软件最好:10款打字软件评测
  • 滑窗|贪心
  • Sonatype Nexus Repository Manager docker版本安装
  • [优选算法专题二滑动窗口——无重复字符的最长子串]
  • Linux应用层开发--线程
  • react性能优化之useRef和useState
  • Nginx性能优化与安全配置:打造高性能Web服务器
  • Unity:PlayerPrefs笔记
  • 标准电子邮件地址格式(RFC 5322 里的 mailbox 语法)
  • ABAP : 内表/工作区转JSON
  • Prometheus 监控 Kubernetes Cluster 最新极简教程
  • FreeRTOS多核支持
  • 从根本上解决MAC权限问题(关闭sip)