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

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.dtcms.com/a/275471.html

相关文章:

  • Power Switch:用途、原理、工作方式及实现方案
  • CSS选择器进行定位
  • OneCode 3.0 DDD领域模型开放接口:基于DSMFactory的架构解析与实践指南
  • OBOO鸥柏丨满天星(MTSTAR)多媒体信息发布系统技术解析
  • Vscode中使用C++代码进行debug
  • Javaweb- 11 MVC架构模式
  • [BJDCTF2020]ZJCTF,不过如此
  • HarmonyOS从入门到精通:动画设计与实现之六 - 动画曲线与运动节奏控制
  • Leetcode百题斩-二分搜索
  • 【C语言】回调函数、转移表、qsort 使用与基于qsort改造冒泡排序
  • linux_线程概念
  • 死锁的概念 ⚠️
  • 告别频繁登录!Nuxt3 + TypeScript + Vue3实战:双Token无感刷新方案全解析
  • TinyBERT:知识蒸馏驱动的BERT压缩革命 | 模型小7倍、推理快9倍的轻量化引擎
  • python-for循环
  • 【Elasticsearch】昂贵算法与廉价算法
  • UI前端大数据可视化实战策略分享:如何设计符合用户认知的数据可视化流程?
  • 让 VSCode 调试器像 PyCharm 一样显示 Tensor Shape、变量形状、变量长度、维度信息
  • 「日拱一码」025 机器学习——评价指标
  • Android音视频探索之旅 | C++层使用OpenGL ES实现音频渲染
  • 单片机学习笔记.根据芯片数据手册写驱动程序(这里使用的是普中开发版,以DS1302为例)
  • 创建Spring Boot项目
  • 解决‘vue‘ 不是内部或外部命令,也不是可运行的程序
  • 前端开发的「设计鸿沟」:为什么我学了CSS却做不出好看的网页?
  • 用YOLOv5系列教程(1)-用YOLOv5轻松实现设备状态智能监控!工业级教程来了
  • 【工具】什么软件识别重复数字?
  • C++结构体的定义与使用
  • 机器学习(ML)、深度学习(DL)、强化学习(RL)关系和区别
  • Redis 基本操作笔记
  • 关于wpf的自适应