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

SELECT ... INTO OUTFILE和LOAD DATA INFILE

语法

SELECT ... INTO OUTFILE

这个语句用于将查询结果导出到服务器的文件系统中。它将 SELECT 语句的结果集直接写入到一个文本文件中。

SELECT column1, column2, ...
INTO OUTFILE 'file_path'[character set charset_name][fields [enclosed by 'char'] [escaped by 'char']][lines [terminated by 'char']][ignore lines number];
  • file_path:指定导出文件的路径和文件名。需要注意的是,该路径必须是 MySQL 服务器有权限访问的路径。
  • character set charset_name:指定导出文件的字符集。
  • fields:定义字段的格式,如字段是否由特定字符包围。
  • lines:定义行的格式,如行终止符。
  • ignore lines number:忽略文件开头的若干行。

LOAD DATA INFILE

这个语句用于将文件中的数据导入到数据库表中。它直接从文件读取数据,并将数据插入到指定的表中。

LOAD DATA INFILE 'file_path'
INTO TABLE table_name[character set charset_name][FIELDS [TERMINATED BY 'char'] [ENCLOSED BY 'char'] [ESCAPED BY 'char']][LINES [STARTING BY 'char'] [TERMINATED BY 'char']][IGNORE number LINES](列名列表)[SET column_name = value, ...];
  • file_path:指定要导入数据的文件路径。
  • INTO TABLE table_name:指定目标表的名称。
  • **character set charset_name:指定文件的字符集。
  • FIELDS:定义字段的格式,如字段分隔符、字段包围符等。
  • LINES:定义行的格式,如行起始符和行终止符。
  • IGNORE number LINES:忽略文件开头的若干行。
  • (列名列表):指定表中列的顺序。
  • SET column_name = value:为某些列指定默认值。

示例

创建表

CREATE TABLE employees (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100) NOT NULL,department VARCHAR(100) NOT NULL,salary DECIMAL(10, 2) NOT NULL
);

插入数据

INSERT INTO employees (name, department, salary) VALUES
('John Doe', 'Finance', 50000),
('Jane Smith', 'IT', 60000),
('Bob Johnson', 'HR', 55000);

导出文件

SELECT * FROM employees INTO OUTFILE '/var/lib/mysql-files/employees.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

创建employees_1表准备导入数据

create table employees_1 like employees;

导入数据

LOAD DATA INFILE '/var/lib/mysql-files/employees.csv'
INTO TABLE employees_1
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

注意事项

  1. 权限:使用这两个语句需要相应的权限。SELECT ... INTO OUTFILE 需要 FILE 权限,而 LOAD DATA INFILE 需要 LOAD DATA 权限。
  2. 安全性:在生产环境中使用这些语句时,需要注意安全性,避免导出敏感数据或导入恶意数据。
  3. 字符集:确保文件的字符集与数据库的字符集匹配,以避免数据乱码。

通过使用 SELECT ... INTO OUTFILELOAD DATA INFILE,你可以方便地在 MySQL 数据库和文件系统之间导入和导出数据。

http://www.xdnf.cn/news/15362.html

相关文章:

  • 请求服务端获取broker的机房归属信息异常
  • 【C#】GraphicsPath的用法
  • ai批量抠图win和mac都可以用
  • 数据库连接池及其核心特点
  • Spring Boot整合MyBatis+MySQL+Redis单表CRUD教程
  • OneCode 3.0 DDD领域模型开放接口:基于DSMFactory的架构解析与实践指南
  • 创建 UIKit 项目教程
  • 浅谈npm,cnpm,pnpm,npx,nvm,yarn之间的区别
  • 周末总结(2024/07/12)
  • 小架构step系列12:单元测试
  • 为什么有些PDF无法复制文字?原理分析与解决方案
  • 知识宇宙-思考篇:AI大模型如何重塑软件开发流程?
  • MCP选型指南:AWS vs Azure vs GCP vs 国内云厂商深度对比
  • openGauss 的列式存储表时遇到的排序和聚合查询性能问题
  • mybatis模糊匹配采用concat与#{},动态sql讲解
  • Flutter、React Native、Uni-App 的比较与分析
  • 80. 删除有序数组中的重复项 II
  • brpc中bthread_start_urgent和tls_task_group详细机制分析
  • 使用python 实现一个http server
  • 传感器WSNs TheDataLinkLayer——X-MAC
  • 基于随机森林的金融时间序列预测系统:从数据处理到实时预测的完整流水线
  • [特殊字符] 实时数据洪流突围战:Flink+Paimon实现毫秒级分析的架构革命(附压测报告)——日均百亿级数据处理成本降低60%的工业级方案
  • 【离线数仓项目】——电商域DWS层开发实战
  • 使用FastAdmin框架开发
  • 蒙特卡洛树搜索方法实践
  • 【云端深度学习训练与部署平台】AutoDL连接VSCode运行深度学习项目的全流程
  • C# 接口(派生成员作为实现)
  • 钉钉企业应用开发实战:从零构建组织级业务工具
  • MySQL 内外连接
  • monorepo 发布库 --- 打包文件