mysql load data infile 的用法(40w数据 用了3-5秒导进mysql)

下面就是MySQL的load data infile的完整攻略:

什么是mysql load data infile

load data infile 是MySQL中一个加载数据的命令,它可以从指定的文本文件中读取数据,并插入到MySQL表中。这个命令通常用于导入大量的数据,它比INSERT语句快得多。在一些需要处理大量数据的应用场景中,load data infile 命令是非常受欢迎的。

mysql load data infile的使用场景

load data infile 命令常用于以下的场景:

  • 数据库迁移
  • 数据库数据导入
  • 大量数据的批量处理

mysql load data infile的语法

load data infile的语法结构如下:

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [FIELDS
        [TERMINATED BY '\t']
        [ENCLOSED BY '']
        [ESCAPED BY '\\' ]
    ]
    [LINES
        [STARTING BY '']
        [TERMINATED BY '\n']
    ]
    [IGNORE number_lines
        [( field [, field] ... )]
    ]

下面对语法中的每个部分进行讲解:

  • LOW_PRIORITY / CONCURRENT:选项用于控制插入操作的优先级。如果使用LOW_PRIORITY,插入操作将会在当前操作后执行。如果使用CONCURRENT,将会使用并行方式插入数据,这个选项仅在MyISAM存储引擎上有效。
  • LOCAL:如果使用LOCAL选项,将会从客户端的本地文件中读取数据。如果不指定,将会从MySQL服务器上读取数据。
  • file_name:指定输入文件的路径,可以是绝对路径或相对路径。
  • REPLACE / IGNORE:在将输入数据插入表时,用REPLACE选项指定,如果表中存在重复数据,将会替换原有数据。如果使用IGNORE选项,将会忽略重复的数据。
  • tbl_name:表名。
  • FIELDS:用于指定输入文本文件的字段格式。
    • TERMINATED BY:字段之间的分隔符。
    • ENCLOSED BY:字段所使用的包围符号。
    • ESCAPED BY:用于转义输入文件中的特殊字符。
  • LINES:用于指定输入文件中的行格式。
    • STARTING BY:指明行的起始符。
    • TERMINATED BY:指定输入文件中行的结束符。
  • IGNORE number_lines:用于忽略文件开始的number_lines行。
  • field:将输入文件中的某些字段映射到表中的某些字段。

mysql load data infile示例1

下面是一个示例,使用load data infile命令将数据导入到students表中。

首先,我们有一个students.txt文件,文件内容如下:

1   Joe
2   Mary
3   Mike
4   John

我们要将这些数据导入到students表中,students表的结构如下:

CREATE TABLE students (
  id INT(11) NOT NULL AUTO_INCREMENT,
  name VARCHAR(45) DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

使用load data infile命令导入数据,命令如下:

LOAD DATA INFILE '/path/to/students.txt' 
INTO TABLE students
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
(id,name);

上面的命令中,我们指定了输入文件的文件路径,以及需要将数据导入到的数据库表名和表格字段。因为输入文件中的字段之间的分隔符是tab (\t),所以我们使用FIELDS TERMINATED BY '\t'指定了分隔符。由于每行数据都以换行符 (\n) 结束,所以使用LINES TERMINATED BY '\n'。最后,我们将文件中的第一列(id)映射到表中的id字段,第二列(name)映射到name字段。

mysql load data infile示例2

下面是另一个示例,使用load data infile命令从远程服务器中读取CSV文件,并将数据导入到MySQL表中。

我们运行以下命令将远程文件export.csv下载到本地:

scp user@server:/path/to/export.csv /path/to/local/

数据文件export.csv格式如下:

id,name,age,gender
1,John,25,Male
2,Mary,23,Female
3,Tom,30,Male
4,Jerry,28,Male

使用load data infile命令将CSV文件导入到students表格中,命令如下:

LOAD DATA INFILE '/path/to/local/export.csv' 
INTO TABLE students
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(id,name,age,gender);

上面的命令中,我们指定了输入文件的文件路径,需要将数据导入的数据库表名和表格字段。输入文件中的字段之间用逗号分隔,所以我们使用FIELDS TERMINATED BY ','。输入文件中的某些字段被双引号包围,所么我们使用OPTIONALLY ENCLOSED BY '"'进行转义。由于每行数据都以换行符 (\n) 结束,所以使用LINES TERMINATED BY '\n'。IGNORE 1 LINES选项指定忽略文件开始的一行数据,因为这是header行,不属于数据。

以上就是mysql load data infile的完整攻略了。读者可以按照上面的语法和示例进行实践,以达到更熟练地使用mysql load data infile命令的目的。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mysql load data infile 的用法(40w数据 用了3-5秒导进mysql) - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • 《1—关于解决MySQL在控制台插入中文乱码问题》

    说明:以下所有操作都是基于我个人的电脑及示例,读者可以参考我这个解决过程,去解决自己的问题,如有其它疑问,欢迎留言交流。 首先来看看我遇到的问题: 【1】查看数据库: 【2】使用test数据库: 【3】查看test数据库中有哪些表: 【4】查看student_table2表中的字段内容: 【5】向student_table2表中插入一条记录: 可以看到插入失…

    MySQL 2023年4月13日
    00
  • msyql5.6与mysql5.7安装区别

    mysql 5.7安装tar xf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz mv mysql-5.7.17-linux-glibc2.5-x86_64 /opt/mysql yum install -y compat-libstdc++-33 libaio libaio-devel useradd -M -s /s…

    MySQL 2023年4月12日
    00
  • ERROR CODE: 1175 YOU ARE USING SAFE UPDATE MODE AN

    当我们在 MySQL 数据库中执行 UPDATE 或 DELETE 语句时,如果语句中涉及到 WHERE 子句,则 MySQL 会要求开启安全更新模式(Safe Update Mode),以保护误删除或误更改数据的情况发生。然而,安全更新模式并不允许在没有 WHERE 子句的情况下进行 UPDATE 或 DELETE 操作,否则会抛出 “ERROR CODE…

    MySQL 2023年5月18日
    00
  • MySQL使用innobackupex备份连接服务器失败的解决方法

    MySQL是一款常用的开源关系型数据库,innobackupex是MySQL的一个非常好用的备份工具。但是,在使用innobackupex备份时,常常遇到连接MySQL服务器失败的问题,该怎么解决呢?下面,将详细讲解该问题的解决方法。 问题现象 使用innobackupex备份MySQL时,常常会遇到以下错误: Error: Unsupported serv…

    MySQL 2023年5月18日
    00
  • MYSQL更新优化实录

    下面我会提供MYSQL更新优化实录的完整攻略,涵盖SQL语句优化的技巧和MYSQL的优化策略。 MYSQL更新优化实录 优化策略 MYSQL更新优化的主要策略包括以下几个方面: 使用索引:在频繁更新某个字段时,为该字段建立索引,尤其是更新条件中使用的字段。索引能够提高查询的速度,也能够提高更新的速度。 批量处理:尽量减少单次更新的频率,考虑批量处理批量更新。…

    MySQL 2023年5月19日
    00
  • Mysql 中,为什么 WHERE 使用别名会报错,而 ORDER BY 不会报错?

        Mysql 中,为什么 WHERE 使用别名会报错,而 ORDER BY 不会报错?  我们先对salary * 12 命名一个别名annual_sal SELECT employee_id,salary,salary * 12 annual_sal FROM employees ORDER BY annual_sal;  这段代码以annual_s…

    MySQL 2023年4月17日
    00
  • linux 后台日志 mysql 错误异常的解释(推荐)

    Linux 后台日志 MySQL 错误异常的解释 日志是我们调试软件的重要工具。而在Linux环境下,我们可以使用类似于tail命令,结合正则表达式,实现过滤和搜索需要的信息。在MySQL数据库中,日志有各种类型,比如:慢查询日志、二进制日志、错误日志等等。本攻略主要是针对MySQL错误日志作详细讲解。 MySQL 错误日志 MySQL错误日志是记录系统级别…

    MySQL 2023年5月18日
    00
  • MySQL数据库-错误1166 Incorrect column name

    当我们在使用MySQL数据库时,有时候会遇到错误1166,其中错误提示信息为“Incorrent column name”,这个错误通常是由于我们在MySQL的查询语句中使用了不存在的列而造成的。下面我将详细讲解如何解决这个问题。 1.检查列名是否正确 MySQL中的错误1166通常是由于我们在查询语句中使用了不存在的列名称造成的,所以我们需要检查列名是否正…

    MySQL 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部