将数据导出到 MySQL 中的 Outfile

Rashmi Patidar 2024年2月15日
将数据导出到 MySQL 中的 Outfile

在某些情况下,用户希望在输出文件或某些本地存储中捕获操作。存储可以是 CSV 文件或记事本,其中可以放置 SQL 的内容。

该文件是使用 MySQL 的 outfile 命令生成的。此命令允许用户将 SQL 输出导出并捕获到特定文件中。

select into outfile 命令允许用户在特定列中插入行,并且使用选项允许读取表和输出文件中所需的格式类型。它有助于以用户定义的格式表示文件中的表。

语法:

select * from stu into outfile "outfile.txt";
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option, so it cannot execute this statement

当用户尝试执行命令时,会填充上述错误。错误填充的原因是 MySQL 服务器安装,默认配置为 .ini 文件中的 --secure-file-priv

该选项不允许出于安全目的导入和导出库。此变量存在于限制用户将数据共享到外部文件的 sqld 文件下。

可以使用以下命令查看为变量 --secure-file-priv 设置的当前路径:

SHOW VARIABLES LIKE "secure_file_priv";

使用带有变量名称的路径更改配置变量值。遍历到变量中显示的目的地。

在该位置找到 my.ini。搜索 secure_file_priv 变量并将值替换为空值。

下面是默认情况下图像变量值如何呈现的屏幕截图。

mysql secure_file_priv 变量

导航到变量存在的路径。用户将能够找到 my.ini 文件。

更改相同变量的配置并再次保存文件。重新启动服务器以查看错误是否消失。

上述命令的变化如下:

SELECT stu_id, stu_name, stu_age, stu_add INTO OUTFILE 'outfile.csv'
    FIELDS TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    FROM tablename;

该命令允许用户指定表中存在的转义序列。表格内的列由逗号、, 或管道| 或制表符分隔。

可以在插入时使用上述命令和特定命令对其进行配置。

上述命令的详细阐述如下。

  1. SELECT * 命令用于选择特定表的所有记录。
  2. INTO OUTFILE 关键字向服务器表明特定命令将对文件进行输出操作。
  3. filename 说明了插入输出的文件。
  4. FIELDS TERMINATED BY 选项允许用户指定列和属性分隔所需的字符。它增加了文件的可读性。关键字允许用户转义 CSV 文件中的特殊字符。
  5. OPTIONALLY ENCLOSED BY 选项不是一个应该提供的强制性选项。它允许用户提供字符串格式的序列。
  6. LINES TERMINATED BY 选项允许将\n 转义序列视为输出文件中的换行符。此选项有助于更好地理解输出文件中的表格和解释。
  7. 最后,可以提供一个表名,它包含了整个命令。上面给出的所有选项都被包装并限制在 table_name 上。需要对以下语句执行操作。

下面提供了 MySQL 命令提示符的图像。

带有选项的 select into outfile 命令

它显示了在本地 MySQL 命令提示符下执行的命令。

上述命令在 CSV 文件中的输出

现在,上面的输出是使用 outfile 命令创建的文件中存在的记录。

作者: Rashmi Patidar
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

相关文章 - MySQL Export