- 浏览: 600237 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
第一种方式:通过SELECT 语句以及 LOAD FILE来导出导入文本文件
这种方式不会引起行锁定。
命令:
说明:
-- FIELDS 指定字段的参数
-- FIELDS TERMINATED BY 字段之间的分割符,默认是/t,这里改成逗号
-- ESCAPED BY 对特殊字符的转义,默认是使用右斜杠/, 这里改成双引号,这样的话一个双引号就会被转义成2个双引号了
-- LINES 指定行的参数
-- STARTING BY 行最开始附加的内容,我们不需要加,所以设置为空即可
-- TERMINATED BY 指定行结束附加的内容,我们加上换行符,这也是默认的配置
所形式的文件格式为:
64,"dddd",1,1266768001,"221.232.128.170",3006
65,"macbook",1,1266768001,"219.140.248.161",3006
说明:
1.现在是以”,”来作为分割符。
2.根据不同的数据类型,来进行了转义以及加上了引号。
进行导入
这样的话,导入数据的速度会提高三倍左右,不过要注意的是它进行导出时的速度与mysqldump的方式来导出的速度没有太大的区别。
不过要注意的地方:
1. 用 load data 是较快的方法
2. 大数据量情况下, 最好是创建好表之后, 同时也要创建好相关的索引。 虽然说没有索引时导入更快, 但是数据导入完成之后再创建索引总共的耗时比事先创建好了再导入要来的多多了。
另外,如果是myisam表,则最好是导入之前先禁用表的索引,导完之后再启用;或者是一开始不创建索引,导完之后再创建,都会比导入的同时更新索引来的快很多.
在大批量导入时先禁用索引, 在完全导入后, 再开启索引, 一次性完成重建索引的效率会相对高很多, 经过反复几次测试, 感觉后者基本能比前者快 1.2 倍左右. 这也就是 LOAD DATAL INFILE 相对较快的原因之一.
这种方式不会引起行锁定。
命令:
SELECT * INTO OUTFILE 'D:/sql/test.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' FROM test;
说明:
-- FIELDS 指定字段的参数
-- FIELDS TERMINATED BY 字段之间的分割符,默认是/t,这里改成逗号
-- ESCAPED BY 对特殊字符的转义,默认是使用右斜杠/, 这里改成双引号,这样的话一个双引号就会被转义成2个双引号了
-- LINES 指定行的参数
-- STARTING BY 行最开始附加的内容,我们不需要加,所以设置为空即可
-- TERMINATED BY 指定行结束附加的内容,我们加上换行符,这也是默认的配置
所形式的文件格式为:
64,"dddd",1,1266768001,"221.232.128.170",3006
65,"macbook",1,1266768001,"219.140.248.161",3006
说明:
1.现在是以”,”来作为分割符。
2.根据不同的数据类型,来进行了转义以及加上了引号。
进行导入
load data infile 'd:/sql/test.txt' into table test FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '"' ;
这样的话,导入数据的速度会提高三倍左右,不过要注意的是它进行导出时的速度与mysqldump的方式来导出的速度没有太大的区别。
不过要注意的地方:
1. 用 load data 是较快的方法
2. 大数据量情况下, 最好是创建好表之后, 同时也要创建好相关的索引。 虽然说没有索引时导入更快, 但是数据导入完成之后再创建索引总共的耗时比事先创建好了再导入要来的多多了。
另外,如果是myisam表,则最好是导入之前先禁用表的索引,导完之后再启用;或者是一开始不创建索引,导完之后再创建,都会比导入的同时更新索引来的快很多.
mysql>ALTER TABLE tbl2 DISABLE KEYS; Query OK, 0 rows affected (0.00 sec) mysql>INSERT INTO tbl2 SELECT * FROM tbl1; Query OK, 2000000 row affected (36.30 sec) Records: 2000000 Duplicates: 0 Warnings: 0 mysql>ALTER TABLE tbl2 ENABLE KEYS; Query OK, 0 rows affected (44.55 sec)
在大批量导入时先禁用索引, 在完全导入后, 再开启索引, 一次性完成重建索引的效率会相对高很多, 经过反复几次测试, 感觉后者基本能比前者快 1.2 倍左右. 这也就是 LOAD DATAL INFILE 相对较快的原因之一.
发表评论
文章已被作者锁定,不允许评论。
-
mysql 技术内幕学习
2018-10-22 12:42 612... -
mysql 全文索引(fulltext)学习
2018-10-15 11:09 552使用索引是数据库性能优化的必备技能之一。在MySQL数据库中, ... -
mysql cast和convert函数学习(将字符串转数字)
2018-08-03 11:12 1012MySQL 的CAST()和CONVERT()函数可用来获取一 ... -
mysql 外键锁机制
2014-12-09 10:25 1127在mysql的多个存储引擎中,innodb支持外键,但是由于外 ... -
mysql 常见函数总结
2014-11-06 19:41 736--获取当前的database se ... -
MySQL checksum了解
2014-11-05 19:51 513在主从复制中Checksum常常需要对某些重要的表进行一致性检 ... -
Mysql 常见命令总结
2014-11-04 20:01 3471.linux下启动mysql的命令: mysqladm ... -
MySql 数据库的创建和查看
2014-11-04 19:51 387使用SHOW语句找出在服务器上当前存在什么数据库 mys ... -
MySQL独立表空间VS共享表空间
2014-11-04 19:19 555在使用Innodb引擎时将要 ... -
mysql Multiversion Concurrency Control机制(mvcc)
2014-09-11 17:46 691在进行多事务 ... -
mysql 操作索引FORCE INDEX
2014-09-01 17:14 16991、创建索引 索引的创建可以在CREATE TABLE语句中 ... -
InnoDB Insert Buffer(插入缓冲)
2014-08-30 11:40 1137插入缓冲,并不是缓存的 ... -
mysql 存储过程例子
2014-08-28 11:36 547(1)循环遍历值 drop procedure if e ... -
MySQL if case语句使用总结
2014-08-26 19:47 568Mysql的if既可以作为表达式用,也可在存储过程中作为流程控 ... -
mysql 事务隔离级别
2014-08-25 12:00 671用户可以用SET TRANSACTION语句改变单个会话或者所 ... -
mysql cpu占100%调优案例
2014-08-23 21:44 504解决 MYSQL CPU 占用 100% 的经验总结 ... -
mysql cursor使用
2014-08-22 20:24 863一,什么是游标(cursor) 个人觉得就是一个cursor, ... -
mysql 查看表数据量
2014-08-22 16:55 485数据库中有几十上百张表,那么哪些表的数据量比较大呢,总不 ... -
mysql mysqldump导入导出
2014-08-22 16:32 1043我们来看几个常用用例: (1)导出整个数据库 mysqld ... -
mysql DATE_FORMAT() 函数
2014-08-22 16:23 460定义和用法 DATE_FORMAT() 函数用于以不同的格式显 ...
相关推荐
在数据导入方面,MySQL提供了LOAD DATA INFILE 语句来实现数据的导入。使用该语句可以从文本文件中导入数据到数据库的表中。与 SELECT INTO OUTFILE 相反,LOAD DATA INFILE 不能导入表结构,仅限于导入数据。此外,...
MySQL 数据导入导出是数据库管理中的重要操作,用于数据备份、迁移或在不同系统间交换数据。本篇文章主要探讨如何使用MySQL命令行和特定软件来导入导出不同类型的文件,如txt、sql和csv。 首先,数据导出可以通过两...
以下是关于使用SELECT… INTO OUTFILE导出MySQL数据的详细解释: 1. **基本语法**: SELECT… INTO OUTFILE语句的基本形式是: ```sql SELECT column1, column2, ... INTO OUTFILE 'filename' [FIELDS ...
总结,使用PHP进行MySQL数据导入导出涉及到的知识点包括:PHP执行shell命令、PDO和MySQLi扩展的使用、`mysqldump`和`mysqlimport`工具、`SELECT INTO OUTFILE`和`LOAD DATA INFILE` SQL语句、数据分批处理、事务管理...
#### 一、使用 `INFILE` 和 `OUTFILE` 进行数据导入与导出 在日常的数据库管理工作中,经常需要将一个数据库中的部分数据移动到另一个数据库中去。对于这种情况,使用 `mysqldump` 方法可能会显得有些繁琐。相比之...
`LOAD DATA INFILE` 是MySQL提供的一种直接从文件中读取数据并导入到表中的功能,尤其适用于大规模数据的快速导入。 - **命令格式**: ```sql LOAD DATA [LOCAL] INFILE 'file_name' [REPLACE | IGNORE] INTO ...
如果数据是以CSV或其他文本格式存在,如`employees.csv`,可以使用`LOAD DATA INFILE` SQL语句导入: ```sql LOAD DATA INFILE '/tmp/employees.csv' INTO TABLE employees FIELDS TERMINATED BY ',' ENCLOSED BY '...
本文将详细介绍 MySQL 中数据导入导出的方法,包括 `SELECT INTO OUTFILE` 和 `LOAD DATA INFILE` 的使用,并提供一些实用技巧。 #### 二、数据导出:SELECT INTO OUTFILE ##### 2.1 基本概念 `SELECT INTO ...
与`SELECT INTO OUTFILE`相对应,MySQL提供了`LOAD DATA INFILE`语句用于将外部文件中的数据导入到数据库中。此语句特别适合从CSV文件导入大量数据,效率高且方便。 ```sql LOAD DATA INFILE 'a.txt' INTO TABLE ...
当需要导入这些导出的数据时,可以使用`LOAD DATA INFILE`语句或者`mysql`命令行工具来读取SQL文件并执行其中的SQL语句。需要注意的是,导入导出过程中应确保数据的完整性和一致性,避免数据丢失或错误。在大型系统...
导入数据时,需要先将Excel数据清洗并保存为文本文件,确保字符编码与MySQL数据库中表的编码一致,然后使用`LOAD DATA INFILE`命令导入,如: ```sql LOAD DATA INFILE '/path/to/cleanedFile.txt' INTO TABLE ...
在导入数据时,可以使用load data infile语句来导入数据,需要指定导入的文件名和路径,并且需要指定文件中的分隔符和换行符。例如,load data infile "/var/lib/mysql-files/passwd" into table 账号信息表 fields ...
使用MySQL的SELECT INTO OUTFILE 、LOAD DATA INFILE快速导出导入数据 LOAD DATA INFILE语句从一个文本文件中以很高的速度读入一个表中。MySQL官方文档也说明了,该方法比一次性插入一条数据性能快20倍。
MySQL提供了多种方法来完成这一任务,包括使用`mysqldump`工具进行逻辑备份,以及利用`LOAD DATA INFILE`和`SELECT INTO OUTFILE`等语句进行物理备份。 #### 二、MySQL数据备份命令详解 **1. 备份整个数据库** `...
INTO OUTFILE`语句需要MySQL用户的`FILE`权限。此外,输出文件必须不存在,以防止覆盖已有文件。在Unix系统中,创建的文件默认是世界可读的,并属于MySQL服务器用户。因此,你需要有适当的方法访问服务器主机并获取...
默认情况下,它可能被设置为一个特定的目录,比如`C:/ProgramData/MySQL/MySQL Server 5.7/Uploads`,只有在这个目录下,MySQL才允许执行`LOAD DATA INFILE`和`SELECT ... INTO OUTFILE`等涉及文件读写的操作。 ...
- SQL语句如`SELECT INTO OUTFILE`和`LOAD DATA INFILE`可用于MySQL等数据库的批量导入导出,但在Java程序中通常通过JDBC执行这些SQL来实现自动化。 3. **Linux环境下的Java程序**: - Java程序是跨平台的,因此...
1. **LOAD DATA INFILE**:MySQL中的LOAD DATA INFILE语句用于快速将大量数据从CSV或文本文件导入到数据库表中。它比INSERT语句更快,因为一次可以处理多行。 2. **BULK INSERT**:在SQL Server中,BULK INSERT语句...
在涉及数据表结构调整的迁移中,如分区或分表,通常需要使用`SELECT INTO OUTFILE`和`LOAD DATA INFILE`命令进行快速导出和导入。这两个命令可以显著提高数据导入的速度,官方文档指出其效率是逐条插入的20倍。不过...