mysql数据导入性能优化(代码级别)
1. 使用preparedStatment
2. 使用批量处理,一次提交
3. mysql 批量插入数据添加参数rewriteBatchedStatements时,性能比不添加时要最高可提高10倍以上的速度。URL如下:
jdbc:mysql://%IP%:3306/%SID%?rewriteBatchedStatements=true
4. 使用load data infile
a) 使用load data infile SQL如下:
LOAD DATA LOCAL INFILE 'file/loader_data_file' INTO TABLE test_key_value CHARACTER SET utf8 FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' (`key`,`value`);
1. (`key`,`value`) 为导入指定字段,若不写,默认全部导入。
2. TERMINATED BY '\r\n', 在这里要注意最后一个字段的值是否正确,有时候最后field value 是'/r',有时候会出现只能插入一行值。
b) NULL和“NULL”的插入
在导入语句中 使用 ENCLOSED BY '\"', 此时若文件中有NULL值,则插入数据库是NULL对象,若文件中的值是“NULL”, 则,插入数据库中的值是NULL字符串
c) 一般情况下field值在文件中使用英文逗号分割,对应sql中是 FIELDS TERMINATED BY ','
d) 设置字符编码格式: CHARACTER SET utf8 注意此处是utf8 而不是UTF-8,
data file demo:
1,key1,value1
2,key2,value2
3,key3,value3
4,key4,value4
Load data infile Demo:
1. create table:
CREATE TABLE `test_key_value` (
`id` bigint(20) NOT NULL,
`key` varchar(32) DEFAULT NULL,
`value` varchar(128) DEFAULT NULL
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
2. src:
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class TestJDBCTemp {
public static void main(String[] args) throws Exception {
generateData();
test_mysql_load_data_infile();
}
public static void test_mysql_load_data_infile() {
String url = "jdbc:mysql://10.46.24.93:3306/GHS_RULE_LUCIYU?rewriteBatchedStatements=true";
String userName = "ghs";
String password = "acxiom";
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, userName, password);
conn.setAutoCommit(false);
String sql = "LOAD DATA LOCAL INFILE 'file/loader_data_file' INTO TABLE test_key_value FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n'";
PreparedStatement prest = conn.prepareStatement(sql);
prest.execute();
conn.commit();
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
if (conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void generateData() throws Exception {
File file1 = new File("file/loader_data_file");
BufferedWriter writer1 = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(file1), "UTF-8"));
for (int i = 1; i < 5; i++) {
writer1.append(i + "");
writer1.append(",key" + i);
writer1.append(",value" + i);
writer1.newLine();
}
writer1.flush();
writer1.close();
}
}
分享到:
相关推荐
5. **利用存储过程**:在数据库端编写存储过程,执行数据导入,利用数据库本身的优化机制。 通过以上步骤和优化策略,即使面对几千万条数据,也能在较短的时间内完成导入。在本例中,提供的`excelImport.py`脚本...
MySQL性能优化是一个重要的主题,尤其是对于处理大量数据的Web应用程序来说。优化数据库性能不仅可以提高系统响应速度,还能提升用户体验。以下是一些关键的优化策略和技巧: 首先,了解SQL语句的执行情况至关重要...
3. **性能监控**:持续监控数据导入过程中的性能指标,确保调整后的参数没有引入新的瓶颈。 #### 技术细节解析 DataX 在读取 Hive 中的数据时,实际上是按照 HDFS 文件中的行进行读取的。默认情况下,DataX 处理的...
6. **优化性能**:在大量数据导入后,可能需要对表进行优化,如重建索引、分析统计信息等,以提高查询性能: ```sql ANALYZE TABLE provinces, cities; OPTIMIZE TABLE provinces, cities; ``` 以上就是关于...
### MySQL性能优化实战知识点详解 #### 一、MySQL性能优化的重要性及背景 在现代软件开发领域,数据库作为数据存储的核心组件之一,其性能直接影响到整个应用系统的响应速度和用户体验。MySQL作为一款广泛使用的...
本教程将深入探讨MySQL的基本概念、安装配置、操作语法以及性能优化策略。 一、MySQL基本概念 1. 数据库:存储数据的容器,可以包含多个表。 2. 表:数据的二维结构,由列和行组成。 3. 列:定义表中的字段,每个...
【SQL Server数据导入MySQL方案】 数据迁移是数据库管理和运维中的常见任务,特别是在系统升级或整合时。本方案主要探讨如何将SQL Server中的数据迁移到MySQL,涵盖了多种迁移工具和技术,包括Kettle、SqlYong、...
【MySQL数据导入SQL Server详解】 在数据库管理领域,经常需要将数据从一个系统迁移到另一个系统,例如从MySQL数据库迁移到SQL Server。这个过程通常涉及到数据的导出、转换和导入等多个步骤。以下是一个详细的过程...
总结来说,Linux上安装MySQL涉及用户创建、安装配置、启动服务、权限设置和优化,而数据的导入导出则涉及到`mysqldump`和`mysql`命令的使用。这些操作是数据库管理的基础,熟练掌握将有助于提升数据库管理效率。
- **性能优化**:大量数据导入时,考虑分批导入,以减少内存占用和提高效率。 教育领域中,这种技能对于数据科学、数据分析、数据库管理课程的学生和教师来说尤其重要。掌握Excel到MySQL的数据导入方法,能够帮助...
3. MySQL数据库操作:建立数据库连接,编写SQL语句进行数据导入。 4. 性能优化:分批处理数据,避免一次性加载过多数据导致内存溢出。 5. 错误处理:通过异常处理机制,确保程序在遇到问题时能正常运行。 掌握这些...
MySQL性能优化是数据库管理员、开发人员和系统架构师在使用MySQL数据库时关注的重要领域,特别是在需要保证服务的高效能、高可靠性和易用性的应用中。Oracle公司作为一家在数据库技术和市场领域具有深厚积累的公司,...
针对“数据导入程序(测试用的MySql,其他数据库未测试)”这个标题,我们可以了解到这个程序主要用于导入数据到MySQL数据库,但未经过其他类型数据库的测试。这意味着它可能专门优化了对MySQL数据库的支持,而在兼容...
在C#编程环境中,我们可以利用各种库来处理Excel文件,并将其数据导入到数据库系统,如MySQL或SQL Server。本文将详细讲解如何实现这个过程,主要包括以下几个步骤和涉及的知识点: 1. **安装必要的库**: - 对于...
标题"mysql数据导入到Oracle中"指出,我们的目标是从MySQL数据库中提取数据并将其导入到Oracle数据库。这通常是因为业务需求的变化,比如性能优化、合规性要求或者是为了利用Oracle特有的功能。迁移过程可以涉及结构...
接着,通过调用 `CMDTool.executeCmd` 方法执行构建好的命令,将 SQL 文件中的数据导入到指定的数据库中。 ### CMDTool 类的实现 为了在 Java 程序中执行系统命令,`CMDTool` 类提供了 `executeCmd` 方法。这个...
在实际应用中,我们还需要关注性能优化、安全性、集群部署等方面。例如,可以通过调整缓存设置、使用 Sharding 或 Replication 来提高 Solr 集群的性能和可用性。此外,Solr 支持多种数据源,不仅限于 MySQL,还包括...
以下是本篇文章所提及的知识点,也是对性能优化的详细分析和建议。 1. **理解问题所在**: 首先,文章提到了当导入大量数据时(如15000条记录),插入操作耗时过长,问题主要发生在数据库写入环节。每次的插入操作...
本文将详细介绍如何使用Excel数据导入到帝国CMS(Empire CMS)的MySQL数据库中,特别是在`phome_ecms_news`新闻类型的表中进行操作。这个过程通常涉及到数据整理、数据格式转换以及数据库接口的使用。 首先,我们...