- 浏览: 175044 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
surfingll:
思路不错,赞一个
站内信的实现:数据库的设计 -
shakajava:
哎,都是千篇一律的东西
站内信的实现:数据库的设计 -
java_xiaoyi:
不错...
java API -
tonysmith:
兄弟说的太对了。干活用了一年多,考官一问,只知其一。这是个“杯 ...
Java 中的访问权限控制 -
上官车月:
像牛一样的干了一年多,除了工作和加班 还真没有想过,基础的东西 ...
Java 中的访问权限控制
MySQL5 LOAD DATA 深入研究
数据库中,最常见的写入数据方式是通过SQL INSERT来写入,另外就是通过备份文件恢复数据库,这种备份文件在MySQL中是SQL脚本,实际上执行的还是在批量INSERT语句。
在实际中,常常会遇到两类问题:一类是数据导入,比如从word、excel表格或者txt文档导入数据(这些数据一般来自于非技术人员通过OFFICE工具录入的文档);一类数据交换,比如从MySQL、Oracle、DB2数据库之间的数据交换。
这其中就面临一个问题:数据库SQL脚本有差异,SQL交换比较麻烦。但是几乎所有的数据库都支持文本数据导入(LOAD)导出(EXPORT)功能。利用这一点,就可以解决上面所提到的数据交换和导入问题。
MySQL的LOAD DATA INFILE语句用于高速地从一个文本文件中读取行,并装入一个表中。文件名称必须为一个文字字符串。下面以MySQL5为例说明,说明如何使用MySQL的LOAD DATA命令实现文本数据的导入。
注意:这里所说的文本是有一定格式的文本,比如说,文本分行,每行中用相同的符号隔开文本等等。等等,获取这样的文本方法也非常的多,比如可以把word、excel表格保存成文本。
一、测试环境:
Windows XP Professional 简体中文版
mysql-5.0.45-win32
注意:不要以为测试环境写操作系统是多余的,我想说一点:不同操作系统的回车换行不大一样,会得出不同的结果。
二、准备数据库、目标表、测试数据。
1、准备测试数据
数据的来源是:http://www.cstj.gov.cn/upload/newstxt/dmfl.htm,这个是“国民经济行业分类与代码表”,网页格式。我们现在需要的是文本数据,如何获取符合格式的文本数据呢?方法是,复制网页到excel,删除前面无用的三列,另存为文本文档C:\DM_HY.TXT;
2、创建目标数据库、目标表
-- 创建目标数据库
CREATE DATABASE IF NOT EXISTS TESTDB;
-- 设置当前数据库
USE TESTDB;
-- 预防性删除要创建的目标表
DROP TABLE IF EXISTS DM_HY;
-- 创建目标表
CREATE TABLE DM_HY (
ID BIGINT(20) NOT NULL AUTO_INCREMENT,
ML VARCHAR(1) DEFAULT NULL,
DL VARCHAR(2) DEFAULT NULL,
ZL VARCHAR(3) DEFAULT NULL,
XL VARCHAR(4) DEFAULT NULL,
MC VARCHAR(120) DEFAULT NULL,
SM VARCHAR(1200) DEFAULT NULL,
PRIMARY KEY (ID)
) ENGINE=MYISAM DEFAULT CHARSET=GBK;
说明:
AUTO_INCREMENT 主键自增
DEFAULT CHARSET=GBK 设定表的默认字符集
三、LOAD数据
一步登录数据库,并且设置当前数据库:
mysql -uroot -pleizhimin
use testdb;
-- 从文本文件导入数据到目标表
LOAD DATA INFILE 'C:\DM_HY.TXT'
INTO TABLE DM_HY(ML,DL,ZL,XL,MC,SM);
这样即可完成数据的导入。
控制台截图如下:
四、EXPORT数据
如果我现在要将MySQL中的DM_HY这个表导入到DB2,我还需要导出一个文本文件,然后再利用DB2的LOAD导入到DB2数据库。还以DM_HY表为例,将上面导入的数据重新导出到C:\DM_HY_EXPORT.TXT.
实际上,在MySQL5中不存在真正的EXPORT命令,而是SELECT ... INTO OUTFILE 命令。下面是操作过程:
-- 导出数据为文本文件
SELECT ML,DL,ZL,XL,MC,SM
INTO OUTFILE 'C:\DM_HY_EXPORT.TXT'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY ''''
LINES TERMINATED BY '\n'
FROM DM_HY;
FIELDS TERMINATED BY ',' 数据字段间用逗号隔开
OPTIONALLY ENCLOSED BY '''' 每个字段的数据用单引号括住(注意单引号的表达方法)
LINES TERMINATED BY '\n' 每条数据结束用'\n'作为换行符。
执行过程的截图如下:
注意:如果导出数据的时候指定分隔符、换行符,那么在导入的时候也要指定。
五、总结
LOAD DATA是一个很有用的命令,而且命令的选项很多,但大多都用不到,如果真的需要,用的时候看看官方文档即可。下面我给出MySQL的官方的语法以供参考:
LOAD DATA INFILE语法
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[FIELDS
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char' ]
]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
]
[IGNORE number LINES]
[(col_name_or_user_var,...)]
[SET col_name = expr,...)]
SELECT语法
[ALL | DISTINCT | DISTINCTROW ]
[HIGH_PRIORITY]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
select_expr, ...
[INTO OUTFILE 'file_name' export_options
| INTO DUMPFILE 'file_name']
[FROM table_references
[WHERE where_definition]
[GROUP BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
[HAVING where_definition]
[ORDER BY {col_name | expr | position}
[ASC | DESC] , ...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[PROCEDURE procedure_name(argument_list)]
[FOR UPDATE | LOCK IN SHARE MODE]]
发表评论
-
HashMap HashTable区别
2012-03-05 15:52 1144我想先问一个问题:为什么hashmap允许key可以为null ... -
字符串比较之 “==”和 “equals”
2012-03-05 13:04 909字符串比较之 “==”和 “equals” 提示:引用 ... -
介绍一下抽象类和接口的异同
2012-03-02 16:27 1113我把基本的弄成了表格形式的。下载附件吧。本想吧table co ... -
Java 中的上转型对象 使用
2012-03-02 15:34 5551呵呵。最近交接工作比较闲,顺便温习一下基础的知识吧: 今天看 ... -
最好的学习地址:Java开源框架SSH 和 ANT的学习地址
2012-02-29 15:44 1048给大家推荐一个我经常去看的网站:这个网站适合初级程序员,学生, ... -
Java 中的访问权限控制
2012-02-29 15:39 2135要辞职了,突然觉得这 ... -
JDK和JRE的区别
2012-02-29 12:17 1175<!--end: blogStats -->< ... -
Java 接口学习笔记
2012-02-26 02:23 3java语言不支持一个类有多个直接的父类(多继承),但可以实现 ... -
浅谈HTTP中Get与Post的区别(转)
2012-02-15 12:24 1193浅谈HTTP中Get与Post的区别 Http ... -
JDK中的URLConnection参数详解(转)
2012-02-15 11:51 1336JDK中的URLConnection参数 ... -
Java利用HttpURLConnection发送post请求上传文件
2012-02-14 10:58 2159在页面里实现上传文件不是什么难事,写个form,加上encty ... -
Java 存储过程 Mysql
2011-12-20 12:16 1334一:Java如何实现对存储过程的调用: A:不带输出参数的 ... -
spring jdbcTemplate
2011-12-08 11:08 1013先看applicationContext.xml配置文件: ... -
MyEclipse 8.6 download 官方下载地址
2011-12-07 14:28 1451Downloads: MyEclipse 8.6 for Ec ... -
windows下架设svn服务器
2011-12-07 11:36 917* 传统的Subversion 服务器 ... -
tomcat7.0 manager app和host manager web管理(转)
2011-12-07 11:23 10854在捣腾Tomcat 7的时候遇到一个问题,很多人对tomc ... -
Tomcat7.0 Error:java.lang.NoClassDefFoundError
2011-12-07 10:34 1316前面一段时间看到Tomcat7.0发布了几个测试版,由于没有稳 ... -
tomcat5.5 Error:cannot find the declaration of element 'web-app'
2011-12-05 12:01 2101tomcat 启动:cannot find the decla ... -
设置 session 失效时间的方法(转)
2011-09-21 09:57 1221具体设置很简单,方法有三种: (1) 在主页面或者公共页 ... -
Java读取properties文件的思考
2011-07-19 10:24 1023Java读取properties文件的思考 Java读 ...
相关推荐
"Java利用MYSQL LOAD DATA LOCAL INFILE实现大批量导入数据到MySQL" Java大批量导入MySQL是一种高效的数据导入方式,使用MYSQL的LOAD DATA LOCAL INFILE语句可以快速地从一个文本文件中读取行,并装入一个表中。...
测试把txt文件导入至mysql数据库中: table: txt文件:D:/data.txt (txt文件下载) ... 您可能感兴趣的文章:Java利用MYSQL LOAD DATA LOCAL INFILE实现大批量导入数据到MySQLMySQL中由load data语
Mysql Load Data Infile 的用法 Mysql 的 Load Data Infile 语句是一个非常强大的工具,可以快速地将文本文件中的数据导入到 Mysql 数据库中。在本文中,我们将详细介绍 Load Data Infile 的用法,包括其语法、参数...
问题是这样的:表persons有两个字段: id和name文本文档persons.txt中内容(其中每行字段之间用tab分割):1 Bush2 Carter3 Bush在mysql命令行下使用 load data local infile “persons.txt” into table persons ...
代码如下:mysql>load data local infile “D:/ab.txt” into table mytbl(name,age); 使用上述的命令就可以将D:/ab.txt文件的内容导入到表mytbl中,其中name和age是表mytbl的字段,对应ab.txt文件中每行的数据。...
MySQL的`LOAD DATA INFILE`语句是一种高效的数据批量导入方法,它的性能通常是单条`INSERT`语句的几十倍,特别适用于大数据量的导入。从Mycat 1.4版本开始,它开始支持MySQL的压缩协议,这对于处理大量数据和大结果...
描述:本文介绍了一种Mysql漏洞利用技术,通过 LOAD DATA LOCAL INFILE 语句读取服务器上的文件,并最终拿到root密码。 标签:Mysql 在Mysql中,通常情况下,用户在没有File权限的情况下无法通过 Load_file 读文件...
MySQL的`LOAD DATA INFILE`语句是一种高效的数据导入工具,它可以从文本文件快速地将数据加载到数据库表中。本篇文章将详细讲解`LOAD DATA INFILE`的使用方法、语法以及各种选项。 首先,`LOAD DATA INFILE`的基本...
当前有db.txt文件,内容是以空格分开的用户名,例如:xiaowang xiaoliu zhangsan 将该文件加载到数据表user中,使用命令即可: 代码如下: load data local infile “/home/beaver/db” into table user lines ...
本案例中,我们探讨的是如何利用`LOAD DATA LOCAL INFILE`语句将MSSQL的数据高效地导入到MySQL中,并解决在数据迁移过程中可能遇到的问题。 首先,MSSQL和MySQL是两种不同的数据库管理系统,它们的数据存储格式和...
MySQL中的`LOAD DATA INFILE`语句是一种高效的方法,用于批量导入数据到数据库表中,尤其在需要处理大量记录时,比逐条插入SQL语句更便捷。在本章中,我们将详细介绍`LOAD DATA INFILE`的基本语法、文件查找原则以及...
mysql> LOAD DATA LOCAL INFILE '/root/Address.txt' -> INTO TABLE ip_data; ``` 执行完该命令后,会显示导入的结果信息,如受影响的行数、警告数量等。 ##### mysqlimport工具 `mysqlimport`是MySQL自带的一个...
根据提供的文件片段内容,我们可以看出这是一篇关于在MYSQL注入攻击中如何进一步利用load_file()函数的文章。load_file()是一个MySQL数据库中的函数,它允许读取服务器上的文件并返回文件内容作为字符串。在某些情况...