excel如何自动导入外部数据_MySQL导入数据库

excel如何自动导入外部数据_MySQL导入数据库 SELECT INTO OUTFILE LOAD DATA INFILE mysqlimport SELECT INTO OUTFILE > help select; Name: ‘SELE…

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

 

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]]

代码100分

 

举例:

 
代码100分> 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的权限,否则会报错:

代码100分> 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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/7011.html

(0)
上一篇 2023-03-29
下一篇 2023-03-29

相关推荐

  • 基于Linux上Mysql8主从设置

    基于Linux上Mysql8主从设置上一篇已经说明了Mysql8的安装方法,这篇来说说主从怎么配置 一、配置修改 # 除去其他的,最关键的就是下面这些了,其实在上一篇里面已经设置好了 [mysqld3306] server_id=33…

    2023-03-14
    164
  • Python安装库指南

    Python安装库指南Python是一种流行的编程语言,而其强大的库(library)系统是Python的一个重要特性。 Python库使得开发人员能够更快,更容易地开发功能丰富的应用程序。 总结使用库的优势

    2024-06-04
    61
  • 「从零单排canal 03」 canal源码分析大纲「终于解决」

    「从零单排canal 03」 canal源码分析大纲「终于解决」在前面两篇中,我们从基本概念理解了canal是一个什么项目,能应用于什么场景,然后通过一个demo体验,有了基本的体感和认识。 从这一篇开始,我们将从源码入手,深入学习canal的实现方式。了解ca…

    2023-03-15
    154
  • 解决Python中的“[Errno 2] No such file or directory”错误

    解决Python中的“[Errno 2] No such file or directory”错误首先,出现“[Errno 2] No such file or directory”错误的常见原因是文件路径错误。因此,我们需要仔细检查代码中指定的文件路径是否正确。可以通过在代码中打印文件路径来确认其是否正确。

    2024-02-12
    85
  • Excel – 字符串处理函数:LEFT, RIGHT, MID, LEN 和 FIND[通俗易懂]

    Excel – 字符串处理函数:LEFT, RIGHT, MID, LEN 和 FIND[通俗易懂]在单元格中输入公式,=MID(字符串内容或所在单元格,第一个字符开始的位置,要获取的字符个数)单元格里输入公式为,=FIND(要寻找的字符或字符串,字符串或其所在单元格,开始查找的位置)注意:这里使用的字符串位置,都是从1开始计数的,而不是和C语言一样,是从0开始计数。在单元格中输入公式,=RIGHT(字符串内容或所在单元格,从右侧开始的字符个数)在单元格中输入公式,=LEFT(字符串内容或所在单元格,从左侧开始的字符个数)根据某个分隔字符或字符串,截取右边的字符串。根据某个分隔字符,截取左边的字符串。

    2023-03-01
    140
  • MySQL触发器了解一下「终于解决」

    MySQL触发器了解一下「终于解决」简介 触发器是与表有关的数据库对象,当表发生INSERT/UPDATE/DELETE操作时,对应操作的触发器会被触发,将在这些操作之前或之后执行触发器中定义的SQL语句集合。 触发器的使用 创建触发器

    2023-04-12
    149
  • python数据分析快速入门_数据挖掘入门教程

    python数据分析快速入门_数据挖掘入门教程Python环境搭建本次入门系列将使用Python作为开发语言。要使用Python语言,我们先来搭建Python开发平台。我们将基于Python 2.7版本、以及Python的开发发行版本Anacon

    2023-01-24
    156
  • 常用的MySQL优化操作

    常用的MySQL优化操作操作系统配优化 执行计划与锁表查看 –查看连接信息以及连接执行的命令 SHOW PROCESSLIST –查看当前被锁住的表 show OPEN TABLES where In_use >

    2023-02-14
    153

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注