博客
关于我
mysql中的数据导入与导出
阅读量:789 次
发布时间:2023-02-11

本文共 2248 字,大约阅读时间需要 7 分钟。

数据导入与导出实用指南

在实际应用中,数据的导入与导出是日常操作的重要环节。本文将详细介绍MySQL中使用命令行工具和SQL语句进行数据导入与导出的方法与技巧。


一、数据导入

1. 使用mysqlimport命令导入数据

mysqlimport作为MySQL提供的一种命令行工具,能够帮助用户快速将文本文件中的数据导入到目标数据库表中。以下是使用mysqlimport的基本使用方法:

  • 文件准备:确保文件名与目标表名一致,若不想修改文件名,可先复制一份文件作为临时文件。

  • 文件格式:建立一个文本文件,文件内容应与数据库表的字段对应。

  • 命令示例

    mysqlimport -u root -p123456 zz --default-character-set=gbk --fields-terminated-by=',' f:\users.txt

    上述命令将文件f:\users.txt导入数据库中的zz表中,使用gbk字符集,字段间使用逗号分隔。

  • 特殊字符处理

    • 若字段中含有分隔符(如#),可在命令中指定分隔符:
      mysqlimport -u root -p7758520 zz --fields-terminated-by=# --fields-enclosed-by=" " f:\users.txt
    • 若记录跨越多行,可指定行分隔符:
      mysqlimport -u root -p7758520 zz --lines-terminated-by=xxx\n f:\users.txt

2. 使用LOAD DATA INFILE语句导入数据

LOAD DATA INFILE命令提供了更高级别的控制选项,适合处理复杂的数据格式:

  • 语法概述

    LOAD DATA INFILE 'file_name' INTO TABLE tbl_name [CHARACTER SET charset_name] [FIELDS TERMINATED BY 'string'] [ENCLOSED BY 'char'] [ESCAPED BY 'char'] [LINES TERMINATED BY 'string'] [IGNORE number {LINES | ROWS}] [(col_name_or_user_var, ...)]SET col_name = expr, ...
  • 常用参数解析

    • 文件路径:指定需要导入的文件路径。
    • 字符集:默认字符集可能导致错误,需明确指定(如CHARACTER SET GBK)。
    • 分隔符:可设定字段间的分隔符,若不设定,默认使用空格。
    • 行分隔符:若文件存储换行符,需指定行终止符(如\r\n)。
  • 示例应用

    -- 创建导入表create table sql_users as select * from users;truncate table sql_users;-- 处理特殊字符load data infile 'f:\sql_users.txt' into table sql_users fields terminated by '#' character set gbklines terminated by '\r\n'ignore 1 lines;-- 数据正确导入后,可查询表数据select * from sql_users;

二、数据导出

1. 使用SELECT ... INTO OUTFILE语句导出数据

这是一种灵活的导出方法,可根据需求指定导出格式:

  • 语法概述

    SELECT column_name, column_name ... INTO OUTFILE 'file_name' [CHARACTER SET charset_name] FIELDS TERMINATED BY 'string' LINES TERMINATED BY 'string';
  • 常用参数解析

    • 文件路径:指定导出文件的路径。
    • 字符集:指定文件使用的字符集。
    • 分隔符:设定字段间或行间的分隔符。
  • 示例应用

    -- 导出特定字段SELECT sno, sname, age INTO OUTFILE "f:\stu_bak.txt" character set gbk fields terminated by '##' lines terminated by '\r\n';-- 查看导出文件more stu_bak.txt;

2. 使用SELECT ... INTO DUMPFILE语句导出数据

该语句用于将数据以原样导出,适用于需要快速获取数据的场景:

  • 语法概述
    SELECT column_name, column_name ... INTO DUMPFILE 'file_name';
  • 应用场景:该语句不支持格式化输出,仅适用于简单的数据导出需求。

三、注意事项

  • 字符集设置:MySQL默认字符集可能导致数据溢出,需根据实际需求选择合适的字符集(如gbkutf8mb4)。
  • 特殊符号处理:使用ENCLOSED BYESCAPED BY选项,确保特殊符号正确处理。
  • 换行符问题:Windows和Linux的换行符不同,需根据实际操作环境调整行分隔符。
  • 文件路径权限:确保文件路径读写权限,避免权限错误。

通过以上方法,用户可以根据实际需求灵活进行数据导入与导出操作。MySQL提供的命令工具配备丰富参数,能够满足多种复杂场景需求。

转载地址:http://qvbfk.baihongyu.com/

你可能感兴趣的文章
Mysql: 对换(替换)两条记录的同一个字段值
查看>>
mysql:Can‘t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock‘解决方法
查看>>
MYSQL:基础——3N范式的表结构设计
查看>>
MYSQL:基础——触发器
查看>>
Mysql:连接报错“closing inbound before receiving peer‘s close_notify”
查看>>
mysqlbinlog报错unknown variable ‘default-character-set=utf8mb4‘
查看>>
mysqldump 参数--lock-tables浅析
查看>>
mysqldump 导出中文乱码
查看>>
mysqldump 导出数据库中每张表的前n条
查看>>
mysqldump: Got error: 1044: Access denied for user ‘xx’@’xx’ to database ‘xx’ when using LOCK TABLES
查看>>
Mysqldump参数大全(参数来源于mysql5.5.19源码)
查看>>
mysqldump备份时忽略某些表
查看>>
mysqldump实现数据备份及灾难恢复
查看>>
mysqldump数据库备份无法进行操作只能查询 --single-transaction
查看>>
mysqldump的一些用法
查看>>
mysqli
查看>>
MySQLIntegrityConstraintViolationException异常处理
查看>>
mysqlreport分析工具详解
查看>>
MySQLSyntaxErrorException: Unknown error 1146和SQLSyntaxErrorException: Unknown error 1146
查看>>
Mysql_Postgresql中_geometry数据操作_st_astext_GeomFromEWKT函数_在java中转换geometry的16进制数据---PostgreSQL工作笔记007
查看>>