本文目录一览:
shell 怎么造mysql 的大量数据
若要将大量的数据值插入到数据库的一个或多个表中,使用insert into语句来实现将是一项无聊的工作。
LOAD DATA
通过读取本地文件系统上的文件,可以将大量数据添加到数据库中。
mysql LOAD DATA INFILE 'datafile.txt' INTO TABLE db2.table_name;
mysql LOAD DATA INFILE 'datafile.txt' INTO TABLE db2.table_name FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"';
mysql load data infile "file.txt" into table table_name fields terminated by '\t' (sid,name);
- 还有一个
mysqlimport
命令可以批量增加,mysqlimport
直接从文件读取批量数据。它相当于LOAD DATA
语句的一个接口。mysqlimport
可以自动生成一个LOAD DATA
语句,该语句把filename.txt
文件中的数据装入table_name
表中。mysqlimport
根据文件名导入表名,即将文件名第一个圆点前的所有字符作为表名。例如,文件class.txt
被装入class
表中。 例如:
mysqlimport -L -uroot -proot db01 table_name.txt
mysqlimport -local table_name filename.txt
datafile.txt
内容:
"1","a string","100.20"
"2","a string containing a , comma","102.20"
"3","a string containing a \" quote","102.20"
"4","a string containing a \", quote and comma","102.20"
- 假如你有
x
表,导入了一个y
表,将y
表数据插入x
表:
insert into x select * from y;
如何向mysql数据库中导入大批量数据?
导入时把生成索引给关掉,应该能快一点。 不要一边导入一边建立索引。 8G数据,应该也不那么慢了。 把SQL语句文件读取出一部分看看,建表语句中,应当有建立索引的部分,删掉它! 只做建表和插入数据两件事。 还有,看看数据库有没有外键? 尽量在插入数据过程中去掉外键关联。 等数据插入完成之后再加索引和外键,应该能提高很多读写性能。 截取一部分数据,例如100MB。 插入一下试试,可以预先对整体时间有一个预期。 还有,真的要弄台好点的电脑,或者去借一台,等把数据导入完成之后,把MySQL的库文件直接复制出来放自己机器上跑就好。 再追加点信息,要先搞明白,SQL原文件里,到底都执行了哪几类操作? 可能需要你用C之类写点小工具,或者别的什么语言,分块读取并处理文件。 8G... 嗯,还好。 现在内存都够大,否则你都没法直接用软件打开了。 只有8G也可以直接用软件打开看。 停掉索引真的可以大幅度加快插入数据的速度。 建议试一试!
MySQL数据库 写入大量数据如何实现
//最快的方法 10000记录 23MS
public static void insert() {
// 开始时间
Long begin = new Date().getTime();
// sql前缀
String prefix = "INSERT INTO tb_big_data (count, create_time, random) VALUES ";
try {
// 保存sql后缀
StringBuffer suffix = new StringBuffer();
// 设置事务为非自动提交
conn.setAutoCommit(false);
// PreparedStatement会更好些
PreparedStatement pst = conn.prepareStatement("");
// 外层循环,总提交事务次数
for (int i = 1; i <= 100; i++) {
// 每次提交步长
for (int j = 1; j <= 10000; j++) {
// 构建sql后缀
suffix.append("(" + j * i + ", SYSDATE(), " + i * j * Math.random() + "),");
}
// 构建完整sql
String sql = prefix + suffix.substring(0, suffix.length() - 1);
// 添加执行sql
pst.addBatch(sql);
// 执行操作
pst.executeBatch();
// 提交事务
conn.commit();
// 清空上一次添加的数据
suffix = new StringBuffer();
}
// 关闭连接
pst.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
// 结束时间
Long end = new Date().getTime();
// 耗时
System.out.println("耗时: " + (end - begin) / 1000 + " ms");
}