欢迎投稿

今日深度:

mysql中load data Infile运用,mysqlinfile

mysql中load data Infile运用,mysqlinfile


速度比insert要快20倍。共享一下java程序操作。
package com.mysql.csv;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class Competition {
	 static Connection  conn = null;
     static String driver = "com.mysql.jdbc.Driver";
     static String url = "jdbc:mysql://127.0.0.1:3306/nerd_1"; 
     public static void main(String[] args) throws ClassNotFoundException, SQLException {
    	 Class.forName(driver);
         conn =  DriverManager.getConnection(url, "root", "1234");
         String sql = "LOAD DATA INFILE 'E://baidu//cp9.csv' REPLACE INTO TABLE baidu_34000_0_competition CHARACTER SET utf8 FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' ignore 1 lines";
         PreparedStatement  pstmt = conn.prepareStatement(sql);
	     pstmt.execute();  
	     conn.close(); 
	} 
}
批量插入需要条件具体可参考文档:http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#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,...]]
 

Mysql load data infile 效率问题

其实你的这个问题是mysql中的一个核心问题,既mysql数据的备份和恢复
你可以使用三种方式
1.使用sql语句导入导出
2.使用mysqldump 和mysqlimport 工具
3.直接copy 数据文件 既冷备份
你说说的详细,就给积分,那我就说详细些

一.使用sql语句完成mysql的备份和恢复

你可以使用SELECT INTO OUTFILE语句备份数据,并用LOAD DATA INFILE语句恢复数据。这种方法只能导出数据的内容,不包括表的结构,如果表的结构文件损坏,你必须要先恢复原来的表的结构。
语法:
SELECT * INTO 'file_name' FROM tbl_name
LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE]
INTO TABLE tbl_name
SELECT ... INTO OUTFILE 'file_name'格式的SELECT语句将选择的行写入一个文件。文件在服务器主机上被创建,并且不能是已经存在的(不管别的,这可阻止数据库表和文件例如“/etc/passwd”被破坏)。SELECT ... INTO OUTFILE是LOAD DATA INFILE逆操作。
LOAD DATA INFILE语句从一个文本文件中以很高的速度读入一个表中。如果指定LOCAL关键词,从客户主机读文件。如果LOCAL没指定,文件必须位于服务器上。(LOCAL在MySQL3.22.6或以后版本中可用。)
为了安全原因,当读取位于服务器上的文本文件时,文件必须处于数据库目录或可被所有人读取。另外,为了对服务器上文件使用LOAD DATA INFILE,在服务器主机上你必须有file的权限。使用这种SELECT INTO OUTFILE语句,在服务器主机上你必须有FILE权限。
为了避免重复记录,在表中你需要一个PRIMARY KEY或UNIQUE索引。当在唯一索引值上一个新记录与一个老记录重复时,REPLACE关键词使得老记录用一个新记录替代。如果你指定IGNORE,跳过有唯一索引的现有行的重复行的输入。如果你不指定任何一个选项,当找到重复索引值时,出现一个错误,并且文本文件的余下部分被忽略时。
如果你指定关键词LOW_PRIORITY,LOAD DATA语句的执行被推迟到没有其他客户读取表后。
使用LOCAL将比让服务器直接存取文件慢些,因为文件的内容必须从客户主机传送到服务器主机。在另一方面,你不需要file权限装载本地文件。如果你使用LOCAL关键词从一个本地文件装载数据,服务器没有办法在操作的当中停止文件的传输,因此缺省的行为好像IGNORE被指定一样。
当在服务器主机上寻找文件时,服务器使用下列规则:
 如果给出一个绝对路径名,服务器使用该路径名。
 如果给出一个有一个或多个前置部件的相对路径名,服务器相对服务器的数据目录搜索文件。
 如果给出一个没有前置部件的一个文件名,服务器在当前数据库的数据库目录寻找文件。
假定表tbl_name具有一个PRIMARY KEY或UNIQUE索引,备份一个数据表的过程如下:
1、锁定数据表,避免在备份过程中,表被更新
mysql>LOCK TABLES READ tbl_name;
关于表的锁定的详细信息,将在下一章介绍。
2、导出数据
mysql&g......余下全文>>
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/2315.html NewsArticle mysql中load data Infile运用,mysqlinfile 速度比insert要快20倍。共享一下java程序操作。 package com.mysql.csv;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLEx...
相关文章
    暂无相关文章
评论暂时关闭