iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL 之 LOAD DATA INFILE 快速导入数据 (单表数据很大)
  • 296
分享到

MySQL 之 LOAD DATA INFILE 快速导入数据 (单表数据很大)

摘要

SELECT INTO OUTFILE LOAD DATA INFILE Mysqlimport   SELECT INTO OUTFILE   > help select; Name: ‘SELECT


	MySQL 之 LOAD DATA INFILE 快速导入数据  (单表数据很大)
[数据库教程]

  • SELECT INTO OUTFILE
  • LOAD DATA INFILE
  • Mysqlimport

 

SELECT INTO OUTFILE

 
> help select;
Name: ‘SELECT‘
Description:
Syntax:
SELECT
    [ALL | DISTINCT | DISTINCTROW ]
      [HIGH_PRIORITY]
      [MAX_STATEMENT_TIME = N]
      [STRaiGHT_JOIN]
      [sql_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
      [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
    select_expr [, select_expr ...]
    [FROM table_references
      [PARTITION partition_list]
    [WHERE where_condition]
    [GROUP BY {col_name | expr | position}
      [ASC | DESC], ... [WITH ROLLUP]]
    [HAVING where_condition]
    [ORDER BY {col_name | expr | position}
      [ASC | DESC], ...]
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]
    [PROCEDURE procedure_name(argument_list)]
    [INTO OUTFILE ‘file_name‘
        [CHARACTER SET charset_name]
        export_options
      | INTO DUMPFILE ‘file_name‘
      | INTO var_name [, var_name]]
    [FOR UPDATE | LOCK IN SHARE MODE]]
 

举例:

 
> select * from e;
+------+-------+-------+
| id   | fname | lname |
+------+-------+-------+
| 1669 | Jim   | Smith |
|  337 | Mary  | Jones |
| 2005 | Linda | Black |
+------+-------+-------+

> select * from e into outfile "/data/mysql/e.sql";
或 > select * into outfile "/data/mysql/e.sql" from e; # cat e.sql 1669 Jim Smith 337 Mary Jones 2005 Linda Black
 

可以看到,select...into outfile 的结果只包含了表数据,默认以 Tab 分隔,也可指定分隔符:

> select * from e into outfile "/data/mysql/e.sql" fields terminated by ‘,‘;
# cat  e.sql    
1669,Jim,Smith
337,Mary,Jones
2005,Linda,Black

注意:outfile ‘/path/file‘,中的 path 需要有mysql的权限,否则会报错:

> select * from t into outfile "/root/backup/mysql/t.sql";
ERROR 1 (HY000): Can‘t create/write to file ‘/root/backup/mysql/t.sql‘ (Errcode: 13 - Permission denied)

 

LOAD DATA INFILE

LOAD DATA INFILE 语句以非常高的速度从文本文件中读取行到表中。

 
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE ‘file_name‘
[REPLACE | IGNORE]
INTO TABLE tbl_name
[PARTITION (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,...)]
[SET col_name = expr,...]
 

注意:load data 需要有处理文件的权限, GRANT FILE ON *.* TO [email protected];

举例:

 
> delete from e;
> load data infile "/data/mysql/e.sql" into table e fields terminated by ‘,‘; Query OK, 3 rows affected (0.01 sec) Records: 3 Deleted: 0 Skipped: 0 Warnings: 0 > select * from e; +------+-------+-------+ | id | fname | lname | +------+-------+-------+ | 1669 | Jim | Smith | | 337 | Mary | Jones | | 2005 | Linda | Black | +------+-------+-------+
 

因为我们前面指定的分隔符是 ‘,‘,load data 时也要指定分隔符,否则也会报错:

> load data infile "/data/mysql/e.sql" into table e;
ERROR 1265 (01000): Data truncated for column ‘id‘ at row 1

 

如果数据被某种符号封闭着,需要指定 ‘ fields enclosed by ’ :

 
# cat e.sql 
"1669"  "Jim"   "Smith"

 > load data infile "/data/mysql/e.sql" into table e;
 ERROR 1366 (HY000): Incorrect integer value: ‘"1669"‘ for column ‘id‘ at row 1

 > load data infile "/data/mysql/e.sql" into table e fields enclosed by ‘"‘; 
 Query OK, 1 row affected (0.01 sec)
 Records: 1 Deleted: 0 Skipped: 0 Warnings: 0

 

如上所示,数据被双引号封闭着,如果直接执行,会报错。

另外还有一些格式上的限制,如 LINES TERMINATED BY ‘string‘ ,指定 file 的换行符,如 ‘ ’ 。

 

load data 还有很多种用法

  1. LOAD DATA INFILE ... [REPLACE|IGNORE] INTO TABLE : replace into 表示如果导入过程中有唯一性约束,直接覆盖;ignore into 则跳过。
  2. LOAD DATA LOCAL INFILE : 在非服务端执行load data需要使用local。比如在 ipA 处登录 ipB 上的mysqld,就需要用到 local 。
  3. 可以指定字段: LOAD DATA INFILE ... INTO TABLE xxx (col1,col2,...)
  4. 可以设定值: LOAD DATA LOCAL INFILE ‘$tmpfile‘ REPLACE INTO TABLE db.tbname (a,b,c,d,e,f) set g=11,h=‘xxx‘;

 

注意:执行 select into outfile 和 load data infile 需要开启 secure_file_priv ,空值代表文件可以在任意处,也可指定具体路径,NULL表示禁止使用。

 

mysqlimport

mysql 命令中有 load data ,mysql还有一个可执行文件 mysqlimport,这两个命令可以从文件中把格式化的数据导入数据库,如果有一个包含大数据量的文件,可以实现快速的数据导入。

mysqlimport 可以看做是为 LOAD DATA INFILE SQL语句提供了一个命令行界面,他们大部分的参数选项是一致的,由 SELECT into outfile 导出的文件,也可以由 mysqlimport 导入。

mysqlimport 需要的文件格式与 load data 差不多,有兴趣的同学可以去研究一下。这里给出它的基本语法:

mysqlimport -u root -pPassWord [--local] dbname filename.txt [OPTION]

其中,“Password”参数是root用户的密码,必须与-p选项紧挨着;“--local”是在本地计算机中查找文本文件时使用的(指定 --local 后,文本文件可以放在任何地方进行导入,否则只能放在mysql的data目录下);“dbname”参数表示数据库的名称;“filename.txt”参数指定了文本文件的路径和称,文件里的数据插入到文件名去掉后缀后剩余名字对应的表中;“OPTION”为可选参数选项,其常见的取值有:

--fields-terminated-by=字符串:设置字符串为字段之间的分隔符,可以为单个或多个字符。默认值为制表符“ ”。

--fields-enclosed-by=字符:设置字符来括住字段的值,只能为单个字符。

--fields-optionally-enclosed-by=字符:设置字符括住CHAR、VARCHAR和TEXT等字符型字段,只能为单个字符。

--fields-escaped-by=字符:设置转义字符,默认值为反斜线“”。

--lines-terminated-by=字符串:设置每行数据结尾的字符,可以为单个或多个字符,默认值为“ ”。

--ignore-lines=n:表示可以忽略前n行。

MySQL 之 LOAD DATA INFILE 快速导入数据 (单表数据很大)

原文地址:https://www.cnblogs.com/walkersss/p/13393314.html

您可能感兴趣的文档:

--结束END--

本文标题: MySQL 之 LOAD DATA INFILE 快速导入数据 (单表数据很大)

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

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

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

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

下载Word文档
猜你喜欢
  • MySQL 快速导入数据指令load Data 详解
    官方文档 https://dev.mysql.com/doc/refman/8.0/en/load-data.html 样例 LOAD DATA[LOW_PRIORITY | CONCURREN...
    99+
    2023-09-14
    mysql 数据库
  • MySQL 5.5如何使用LOAD DATA INFILE语句导入数据
    这篇文章主要介绍了MySQL 5.5如何使用LOAD DATA INFILE语句导入数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 ...
    99+
    2024-04-02
  • MySQL数据库中怎么快速导出导入大量数据
    这篇文章将为大家详细讲解有关MySQL数据库中怎么快速导出导入大量数据,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。MySQL迁移通常使用的有三种方法:1、...
    99+
    2024-04-02
  • 了解如何使用LOAD DATA INFILE命令将CSV文件导入MySQL数据库
    导入CSV文件是将数据从文本文件(如CSV)加载到MySQL数据库表中的常见任务。 MySQL提供了LOAD DATA INFILE语句,便于批量导入CSV文件中的数据。本篇文章将为您介绍如何使用LOAD DATA INFILE语句导入数据...
    99+
    2023-10-07
    数据库 mysql java
  • 如何使用load data导入数据到mysql
    小编给大家分享一下如何使用load data导入数据到mysql,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!除了mysqlimport方式导入数据到mysql,用得更多是load dat...
    99+
    2024-04-02
  • mysql快速插入大量数据
    前言 最近做性能测试,需要模拟生产环境的数据量,在造百万、千万级数据的时候发现直接使用插入sql效率极低,百度了一翻,找到几种方式,但用下来还是有很快速的方式,推荐第四种 插入mysql数据效率对比 ...
    99+
    2023-09-23
    mysql 数据库
  • MySQL数据的导入导出mysqldump、mysqlimport into outfile和load data
    0、概述 MySQL数据的导入导出方案通常是配套的,例如: 方案一:使用mysqldump导出数据,再使用mysql客户端导入数据 方案二:使用SELECT INTO OUTFILE命令导出数据,再使用LOAD DATA或...
    99+
    2023-10-25
    mysql adb android
  • plsql怎么快速导入大量数据
    在PL/SQL中,可以使用标准的INSERT语句来插入大量数据,但是如果数据量非常大,这种方法可能会比较慢。为了快速导入大量数据,可...
    99+
    2023-10-19
    plsql
  • 我们如何使用带有“FIELDS TERMINATED BY”选项的 MySQL LOAD DATA INFILE 语句将数据从文本文件导入到 MySQL 表中?
    当我们想要导入 MySQL 表的文本文件的值由逗号 (,) 或任何其他分隔符(如冒号 (:))分隔时,应使用“FIELDS TERMINATED BY”选项,可以通过下面的例子来理解 -例子假设我们有以下数据,用分号(;)分隔,在我们想要导...
    99+
    2023-10-22
  • 100万数据,如何快速的导入数据库?
    数据导出、导入是非常常见的开发操作,但在这个过程中,很多开发者都会遇到诸如数据乱码、数据格式不支持、数据量太大等问题。NineData 最新发布的数据导入功能,帮助用户在保障数据完整和准确的同时,轻松地将大量的数据从文件中导入到目标数据库中...
    99+
    2023-10-20
    数据库 云计算 mysql 数据库管理员 团队开发
  • oracle怎么快速导入csv数据
    要快速导入CSV数据到Oracle,可以使用以下步骤:1. 首先,创建一个表来存储CSV数据。可以使用Oracle SQL Deve...
    99+
    2023-10-12
    oracle
  • Excel表格数据导入MySQL数据库
    公司业务需要把Excel表中的十多万条数据导入到数据库表中,这样比执行sql语句插入数据快多了 比如:想把如下图的(sanyi.xlsx)Excel表格导入MySQL表(tb_sanyi_client...
    99+
    2023-09-10
    mysql 数据库 database
  • PHP怎么将MySQL中数据导入表单
    要将MySQL中的数据导入表单,首先需要连接到MySQL数据库,然后执行查询语句,将查询结果赋值给表单的各个字段。以下是一个简单的示...
    99+
    2023-10-12
    PHP MySQL
  • PHP如何将MySQL中数据导入表单
    要将MySQL中的数据导入到表单中,可以使用PHP和MySQL的组合来实现。以下是一个简单的例子: 首先,创建一个连接到MySQL...
    99+
    2024-04-09
    PHP MySQL
  • plsql如何快速导出大量数据
    要快速导出大量数据,你可以使用PL/SQL中的批量绑定和游标技术。以下是一种常见的方法:1. 创建一个游标,用于查询要导出的数据。例...
    99+
    2023-08-31
    plsql
  • plsql怎么快速导出大量数据
    要快速导出大量数据,可以使用PL/SQL Developer提供的数据导出功能。以下是一种快速导出大量数据的步骤:1. 打开PL/S...
    99+
    2023-09-28
    plsql
  • mysql遇到load data导入文件数据出现1290错误怎么办
    这篇文章主要介绍mysql遇到load data导入文件数据出现1290错误怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!错误出现情景  在cmd中使用mysql命令,学生信息...
    99+
    2024-04-02
  • oracle如何快速导入百万数据
    Oracle数据库中导入百万条数据可以通过以下几种方式快速实现: 使用SQLLoader工具:SQLLoader是Oracle提...
    99+
    2024-04-09
    oracle
  • MySQL怎么导入导出大量数据
    本篇内容介绍了“MySQL怎么导入导出大量数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  大家一定使...
    99+
    2024-04-02
  • mysql怎么快速清空表数据
    可以使用TRUNCATE TABLE语句来快速清空表数据,语法如下: TRUNCATE TABLE table_name; 注意:...
    99+
    2024-04-20
    mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作