广告
返回顶部
首页 > 资讯 > 数据库 >MySQL入门--导出和导入数据
  • 427
分享到

MySQL入门--导出和导入数据

2024-04-02 19:04:59 427人浏览 独家记忆
摘要

MySQL导出和导入数据 数据库导出可用于将数据库复制到另一个服务器。可以将数据库传输到在另一台主机上运行的服务器,这是最典型的数据导出任务。也可以将数据传输到运行在同一主机上的不同服务器。

MySQL导出和导入数据

数据库导出可用于将数据库复制到另一个服务器。可以将数据库传输到在另一台主机上运行的服务器,这是最典型的数据导出任务。也可以将数据传输到运行在同一主机上的不同服务器。如果正在针对新版本 Mysql 测试服务器,并且想使用生产服务器中的实际数据,则可以执行此操作。还可以将数据装入外部应用程序,数据导出也可用于将数据从一个 RDBMS 传输到另一个 RDBMS 。

完成导出和导入操作的两种最常用的方法是:

Ø   使用 SELECT ... INTO OUTFILE 将数据导出到文件

Ø   使用 LOAD DATA INFILE 语句从文件中导入数据

1.1.        使用 SELECT...INTO OUTFILE 导出数据

可以对 SELECT 语句使用 INTO OUTFILE 子句,将结果集直接写入文件。要以这种方式使用 SELECT ,请将 INTO OUTFILE 子句置于 FROM 子句之前。

文件名称指示输出文件的位置。 mysql 会将文件写入服务器主机上的指定路径。输出文件具有以下特征:文件将写入服务器主机,而不是通过网络发送到客户机。文件不能已存在。服务器将在服务器主机上写入新文件。

要运行 SELECT … INTO OUTFILE 语句,必须使用有 FILE 权限的帐户连接到服务器。 Mysql 使用如下权限创建文件:运行 MySQL 进程的帐户将拥有文件、文件对所有用户可读。

针对语句所选的每一行,文件中都包含对应的一行。默认情况下,列值由制表符分隔,而行在换行符处终止。

         语法:

SELECT ... INTO OUTFILE 'file_name'

        [CHARACTER SET charset_name]

        [export_options]

 

export_options:

    [{FIELDS | COLUMNS}

        [TERMINATED BY 'string']

        [[OPTIONALLY] ENCLOSED BY 'char']

        [ESCAPED BY 'char']

    ]

    [LINES

        [STARTING BY 'string']

        [TERMINATED BY 'string']

 

1)        数据文件格式说明符

SELECT...INTO OUTFILE 采用默认的数据文件格式 TSV ,其中列值由制表符分隔,记录由换行符终止。要使用 SELECT...INTO OUTFILE 写入使用不同分隔符或终结符的文件,请使用 FIELDS 和 LINES 子句指定输出格式。

Ø   FIELDS 子句指定如何显示列。

l   TERMINATED BY 指定字段分隔符,默认情况下是制表符。

l   ENCLOSED BY 指定如何引住列值。默认设置为不使用引号(即,默认值为空字符串)。

l   ESCAPED BY 指明当表示换行符或制表符之类的非打印字符时要使用的转义符。默认转义符是反斜杠 (\) 字符。

Ø   LINES TERMINATED BY 子句指定行分隔符,默认情况下是换行符。

MySQL 使用反斜杠来转义特殊字符,所以必须将换行符和制表符之类的字符分别表示为“ \n ”和“ \t ”。同样,要表示反斜杠字符,则必须将其转义为如下所示:“ \\ ”。

 

2)        转义字符

命令行终结符包括换行符和回车 / 换行符对。默认的换行符终结符常见于 linux 系统,而回车 / 换行符对常见于 windows 系统。

ESCAPED BY

ESCAPED BY 子句仅控制数据文件中值的输出;它不会更改 MySQL 解释语句中特殊字符的方式。例如,如果通过写入 ESCAPED BY '@' 指定数据文件转义符为“ @ ”,并不表示您必须使用“ @ ”来转义语句中其他的特殊字符。您必须使用 MySQL 的转义符(反斜杠: \ )来转义语句中的特殊字符,使用 LINES TERMINATED BY '\r\n' (而不是 LINES TERMINATED BY '@r@n' )之类的语法。

转义字符含义

\N NULL

\0 NULL (零)字节

\b 退格

\n 换行

\r 回车

\s 空格

\t 制表符

\ ′ 单引号

\" 双引号

\\ 反斜杠

以上所有转义字符可以单独使用或者在较长的字符串中使用,但 \N 除外,该序列只有在单独出现时才用作 NULL 。

3)        用法示例

mysql> select * into outfile 't1.tsv' from t1;

ERROR 1290 (HY000): The MySQL Server is running with the --secure-file-priv option so it cannot execute this statement

mysql> show variables like 'secure%';

+------------------+-----------------------+

| Variable_name    | Value                 |

+------------------+-----------------------+

| secure_auth      | ON                    |

| secure_file_priv | /var/lib/mysql-files/ |

+------------------+-----------------------+

2 rows in set (0.05 sec)

 

mysql> select * into outfile '/var/lib/mysql-files/t1.tsv' from t1;

Query OK, 7 rows affected (0.01 sec)

注意:如果配置了 secure_file_priv 则必须将导出文件导出到该目录,否则报错 ERROR 1290 ;

[root]# cat /var/lib/mysql-files/t1.tsv

100     a

200     a

300     a

mysql> select * into outfile '/var/lib/mysql-files/t1a.tsv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'

    -> from t1;

Query OK, 7 rows affected (0.00 sec)

[root]# cat t1a.tsv

100,"a"

200,"a"

300,"a"

 [root]#

 

1.2.        使用 LOAD DATA INFILE 导入数据

LOAD DATA INFILE 语句将数据文件中的值读入表。 LOAD DATA INFILE 是 SELECT ... INTO OUTFILE 的逆向操作。如果要导入的数据文件包含使用制表符或逗号分隔的表数据,请使用 LOAD DATA INFILE 命令。此类文件最重要的特征是:

n   列值分隔符

n   行分隔符

n   用于引住值的字符(例如:引号)

n   文件中是否指定了列名

n   导入前是否有标头指示要跳过的表行

n   文件在文件系统中的位置

n   访问文件是否需要有相应权限

n   列的顺序

n   文件和表中的列数是否匹配

语法:

LOAD DATA

    [LOW_PRIORITY | CONCURRENT] [LOCAL]

    INFILE 'file_name'

    [REPLACE | IGNORE]

    INTO TABLE tbl_name

    [PARTITION (partition_name [, partition_name] ...)]

    [CHARACTER SET charset_name]

    [{FIELDS | COLUMNS}

        [TERMINATED BY 'string']

        [[OPTIONALLY] ENCLOSED BY 'char']

        [ESCAPED BY 'char']

    ]

    [LINES

        [STARTING BY 'string']

        [TERMINATED BY 'string']

    ]

    [IGNORE number {LINES | ROWS}]

    [(col_name_or_user_var

        [, col_name_or_user_var] ...)]

    [SET col_name={expr | DEFAULT},

        [, col_name={expr | DEFAULT}] ...]

示例:

LOAD DATA INFILE '/tmp/City.txt' FIELDS TERMINATED BY ',' INTO TABLE City;

 

1)        跳过或转换输入数据

Ø   忽略数据文件行

要忽略数据文件的开始部分,可以使用 IGNORE n LINES 子句,其中, n 是一个整数,表示要忽略的输入行数。当文件以列名行(而不是数据值行)开始时,请使用此子句。

mysql> LOAD DATA INFILE '/tmp/City.txt'

-> INTO TABLE City IGNORE 2 LINES;

 

Ø   忽略或转换列值

您可在列列表和可选的 SET 子句中提供用户变量,该子句的语法类似于 UPDATE 语句中的 SET 子句。在将从文件中读取的数据值插入表中之前, LOAD DATA INFILE 将对其进行转换,处理用户变量中所包含的值。要将输入数据列分配给用户变量而不是表列,请以列列表的形式提供用户变量的名称。如果将列分配给 SET 表达式中未使用的用户变量,则语句将忽略该列中的值,不会将其插入表中。

LOAD DATA INFILE '/tmp/City.txt'

INTO TABLE City ( @skip, @Name,CountryCode, @District, Population)

SET name=CONCAT(@Name,' ',@District);

在语句列的列表中指定用户变量(而不是列名称),通过使用 SET 子句(可选)转换列值,该语句将忽略 SET 表达式中未使用的变量的值。

 

2)        重复记录

使用 INSERT 或 REPLACE 语句向表添加新行时,可以控制语句对包含表中已有键的行的处理方法。可以允许语句生成错误,可以使用 IGNORE 子句放弃该行,也可以使用 ON DUPLICATE KEY UPDATE 子句修改现有的行。

LOAD DATA INFILE 提供了对重复行的相同级别控制,即通过使用两个修饰符关键字 IGNORE (放弃包含重复键的行)和 REPLACE (替换为文件中包含相同键的版本);但是,其重复项处理行为根据数据文件是位于服务器主机上还是位于客户机主机上而稍有不同,所以使用 LOAD DATA INFILE 时,必须考虑数据文件的位置。

3)        从服务器主机装入文件

装入位于服务器主机上的文件时, LOAD DATA INFILE 对包含重复唯一键的行的处理方法如下:

Ø   默认情况下,输入记录造成重复键违规将产生一个错误;不会装入数据文件的剩余部分。该点之前的已处理记录将被装入表中。

Ø   如果在文件名后提供 IGNORE 关键字,将忽略造成重复键违规的新记录,并且语句不会生成错误。 LOAD DATA INFILE 将处理整个文件,装入所有不包含重复键的记录,并放弃剩余记录。

Ø   如果在文件名后提供 REPLACE 关键字,造成重复键违规的新记录将替换表中现存的包含重复键值的任何记录。 LOAD DATA INFILE 将处理整个文件,将文件中的所有记录装入表中。

4)        从客户机主机装入文件

从客户机主机装入文件时,默认情况下 LOAD DATA INFILE 将忽略包含重复键的记录。即,默认行为与指定 IGNORE 选项时相同。这是因为客户机 / 服务器协议不允许在传输开始后中断从客户机主机到服务器的数据文件传输,因此不方便在操作过程中中止操作。

5)        用法示例

mysql>use test

mysql> CREATE TABLE `t1` (

    ->   `f1` int(11) DEFAULT NULL,

    ->   `f2` varchar(20) DEFAULT NULL

    -> ) ENGINE=InnoDB DEFAULT CHARSET=latin1

    -> ;

Query OK, 0 rows affected (0.17 sec)

导入默认格式 t1.tsv 文件

mysql> LOAD DATA local INFILE '/var/lib/mysql-files/t1.tsv' IGNORE INTO TABLE t1;

Query OK, 7 rows affected (0.01 sec)

Records: 7  Deleted: 0  Skipped: 0  Warnings: 0

 

mysql>

mysql>

mysql> select * from t1;

+------+------+

| f1   | f2   |

+------+------+

|  100 | a    |

|  200 | a    |

|  300 | a    |

|  400 | a    |

|    1 | a    |

|  101 | a    |

|  111 | b    |

+------+------+

7 rows in set (0.00 sec)

 

导入指定格式 t1.tsv 文件

mysql> LOAD DATA local INFILE '/var/lib/mysql-files/t1a.tsv' IGNORE INTO TABLE t1

    -> FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' ignore 1 lines ;

Query OK, 6 rows affected (0.00 sec)

Records: 6  Deleted: 0  Skipped: 0  Warnings: 0

 

mysql>

示例:

LOAD DATA local INFILE '/Users/xxx/Downloads/loaddata.txt' IGNORE INTO TABLE testLoadData

FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' ignore 1 lines (username, age, description);


您可能感兴趣的文档:

--结束END--

本文标题: MySQL入门--导出和导入数据

本文链接: https://www.lsjlt.com/news/49942.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL入门--导出和导入数据
    MySQL导出和导入数据 数据库导出可用于将数据库复制到另一个服务器。可以将数据库传输到在另一台主机上运行的服务器,这是最典型的数据导出任务。也可以将数据传输到运行在同一主机上的不同服务器。...
    99+
    2022-10-18
  • MySQL数据库导出和导入
    1).MySQLimport的语法介绍:   MySQLimport位于MySQL/bin目录中,是MySQL的一个载入(或者说导入)数据的一个非常有效的工具。这是一个命令行工具。有两个参数以及大量的选项可...
    99+
    2022-10-18
  • mysql数据库导入、导出
    终端命令操作(导出) 导出整个库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u root-p blog > ./blog.sql   2导出某个表 mysqldump -u 用户名 ...
    99+
    2020-08-22
    mysql数据库导入 导出
  • 数据导入导出
    数据导入导出设置数据导入/导出使用的目录1.查看默认使用目录及目录是否存在。mysql>show variables like "secure_file_priv";secure_...
    99+
    2022-10-18
  • mysql dump 导入和导出
    mysql版本 5.7.30 基于安全无法通过-p密码明文方式进行执行,先修改配置 vi /etc/mysql/my.cnf [mysqldump] user=your_backup_user_name password=your...
    99+
    2021-10-16
    mysql dump 导入和导出 数据库入门 数据库基础教程
  • mysql的导入和导出
    MySQL命令行导出数据库 1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录 如我输入的命令行:cd C:\Program Files\MySQL\MySQL Server ...
    99+
    2022-10-18
  • 导入和导出MYSQL数据库的方法
    本文主要给大家简单讲讲导入和导出MYSQL数据库的方法,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望导入和导出MYSQL数据库的方法这篇文章可以给大家带来一...
    99+
    2022-10-18
  • mysql 数据表结构导入导出
    导出 mysqldump -h localhost -u root -p -P -d dbname > db.sql 命令行下具体用法如下:mysqldump -h 远程 -u用戶名 -p密码 -P...
    99+
    2022-10-18
  • MySQL导出导入数据的命令
    本篇内容主要讲解“MySQL导出导入数据的命令”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL导出导入数据的命令”吧!MySQL导出导入数据命令 1.导...
    99+
    2022-10-18
  • Hive数据如何导入导出mysql
    这篇文章给大家分享的是有关Hive数据如何导入导出mysql的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 Hive定位:ETL(数据仓库)工具将数...
    99+
    2022-10-19
  • mysql数据库怎么导入导出
    这篇文章将为大家详细讲解有关mysql数据库怎么导入导出,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.数据库导入mysql -uroot -p123456 --defau...
    99+
    2023-06-28
  • mysql 表数据导出导入以及指定导入字段
    load data local infile  "C:/1.csv"  into table zlee  fields terminated by ","  lines terminated by " " (id,ia,ic,ie,ig);...
    99+
    2020-12-09
    mysql 表数据导出导入以及指定导入字段
  • oracle 数据导入导出
    I am the new of Oracle , and that i need to learn more about it . But as you know , here is the company...
    99+
    2022-10-18
  • 数据泵导出导入
    出于许多原因,我们期望从某个数据库中提取大量数据以及关联的对象定义,并且采用一种更容易的方式将这些数据载入到另一个数据库中。备份就是其中一个重要原因,另外可能需要在生产与测试环境之间或联机系统与数据仓库之...
    99+
    2022-10-18
  • MySQL运维10-MySQL数据的导入导出
    文章目录 0、概述1、mysqldump导出数据+mysql导入数据1.1、使用mysqldump导出数据1.1.1、使用--tables导出指定表1.1.2、使用--tab选项将表定义文件和数据文件分开导出1.1.3、使用--fi...
    99+
    2023-08-23
    mysql 数据库 运维 sql 服务器
  • Mysql怎么导入和导出备份的数据
    这篇文章主要讲解了“Mysql怎么导入和导出备份的数据”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mysql怎么导入和导出备份的数据”吧!导出导出全库备份...
    99+
    2022-10-18
  • linux中如何导入和导出mysql数据库
    这篇文章主要为大家展示了“linux中如何导入和导出mysql数据库”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux中如何导入和导出mysql数据库”这...
    99+
    2022-10-18
  • 使用Navicat将MySql数据库导入和导出
    导出数据表 1.使用Navicat打开数据库,右键数据库,点击转储SQL文件,点击结构和数据。 2.选择生成文件的地方 3.等待生成完成 4.生成完成 导入数据库表和数据SQL文件 1....
    99+
    2023-09-04
    sql 数据库 mysql
  • mysql 数据库导入导出命令行
    在平常的工作中,我有需要对数据库进行导入导出,一般小型的数据库,我们一直用phpmyadmin,navcate 可视化的操作,但是在linux怎么操作呢,用什么命令行呢 1,数据库的导入操作,使用sourc...
    99+
    2022-10-18
  • mysql基本导入导出数据命令
    这篇文章主要讲解了“mysql基本导入导出数据命令”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql基本导入导出数据命令”吧! 1.导出整个   ...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作