招聘&找人导入excel数据到MySQL

头像
150****3689
1636阅读39评论

每个excel数据量大概为6w行, 40列

从excel 或者json格式都可以, 我们已经有从excel转出的json数据. 主要需要的是高效率导入数据库这步

希望快速的导入MySQL以用于后续处理

语言不限

只需要写出核心代码, 交付我方用于其他模块儿使用

具体费用双方商议


已有多位联系我了, 不需要再花电费加我了, 有兴趣可以评论, 我如有需要会主动联系你

招聘类型:
外包零活
职业:
开发
工作方式:
线上兼职
城市:
武汉长沙苏州郑州南京云南海南其他厦门西安成都杭州深圳广州上海北京海外
领域:
其他电商/消费企业服务工具/开源
需消耗电量 5
收藏
举报
加载中…
精选评论
头像
等级0

java python都可进行开发

头像
等级0

一定有性能和场景要求吧,我想到的是直接开源DataX
理论上可以带宽跑满
具体也可以根据情况和场景要求

datax不管是性能和数据库多样性都都做得很好,但可惜的是datax并不支持直接从Excel导入,我的开源项目https://github.com/Breeze0806/go-etl,在架构上借鉴了datax,直接支持Excel(xlsx)的导入。

头像
等级0

在项目中做过Excel文件导入数据库。使go语言开发。可以和我联系。

头像
等级0

如果是task并行mysql batch insert,1GB左右csv文件5min左右完成,csv的1GB数据行数比excel多很多啊

头像
等级0

这里我写过一个开源项目可以帮你,使用go语言写的,excel要求是xlsx的文本格式,mysql要求5.6版本以上,https://github.com/Breeze0806/go-etl, 速度上你不用担心,这个项目已经处理过上千万行数据,但是异常数据检测、提示、修复或另行管理还是需要深入探讨的,因为是开源项目你可以先试试效果,如果好用请别白嫖,请给个star哦!如果有其他的需求,请联系我。

头像
等级0

四年工作经验, 前后端去全找

头像
等级0

明显很多人没有试过1万行以上的数据导入mysql。要考虑的因素并不是什么语言,而是影响速度的关键点在哪里。1万行插入,15秒内完成算合格,用的不对要5分钟以上,6万行相应乘以比例。
另一个问题是异常数据检测、提示、修复或另行管理,重复数据如何避免冲突退出。
要做好、适应日常工作并不容易。

头像
等级0

5年Java后端研发,经验丰富,有需要联系我

头像
等级0

不是,这个功能 mac 的 https://sequelpro.com/ 直接支持的呀。

头像
等级0

我想竞选
目前看出该需求需要解决的问题
1 oom 2.高io 3时效性和与准确性 4 监控

我的优势
高并发场景处理经验比较丰富 个人做bi项目长达2年excel大量数据导入导出有开发经验

头像
等级0

大数据经验,处理过千万数据导入,导出,半小时内处理完成

头像
等级0

大数据量,应该碰到的是内存崩溃,还有就是数据长时间未落库,其他应该没啥问题😂

头像
等级0

我去年正好做某银行项目时用JAVA语言完成了一个类似的企业级解决方案,可以通过配置的方式完成excel到数据库字段的映射,同时可以在日志文件或专门建立的数据库表中查看执行日志,分析出错原因,
几乎能直接拿来用,有需要可以和我联系,谢谢!

头像
等级0

为了高效导入大量数据到MySQL数据库,你可以采用以下方法:

  1. 批量插入优化:将数据分成小批量进行插入,而不是每行都执行插入操作。这样可以减少与数据库的通信次数,提高导入速度。

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    
    // 建立数据库连接
    Connection connection = null;
    try {
        String url = "jdbc:mysql://localhost:3306/database_name";
        String username = "your_username";
        String password = "your_password";
        connection = DriverManager.getConnection(url, username, password);
    
        // 设置自动提交为false
        connection.setAutoCommit(false);
    } catch (SQLException e) {
        e.printStackTrace();
    }
    
    String sql = "INSERT INTO table_name (column1, column2, ...) VALUES (?, ?, ...)";
    try (
        PreparedStatement statement = connection.prepareStatement(sql);
    ) {
        int batchSize = 1000; // 每批次插入的记录数
        int count = 0;
    
        for (YourDataClass item : data) {
            // 设置参数
            statement.setString(1, item.getProperty1());
            statement.setInt(2, item.getProperty2());
            // ...
            statement.addBatch();
    
            if (++count % batchSize == 0) {
                // 执行批量插入
                statement.executeBatch();
                connection.commit();
            }
        }
    
        // 执行剩余的批量插入
        statement.executeBatch();
        connection.commit();
    
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        if (connection != null) {
            try {
                // 恢复自动提交
                connection.setAutoCommit(true);
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    

    在上面的代码中,我们设置了每批次插入的记录数为1000,你可以根据实际情况进行调整。在每个批次插入后,使用commit()方法提交更改,以保持数据的一致性。

  2. 使用连接池:使用连接池可以减少数据库连接的创建和销毁开销,并提供连接的复用。

    import org.apache.commons.dbcp2.BasicDataSource;
    import javax.sql.DataSource;
    
    // 创建连接池
    BasicDataSource dataSource = new BasicDataSource();
    dataSource.setUrl("jdbc:mysql://localhost:3306/database_name");
    dataSource.setUsername("your_username");
    dataSource.setPassword("your_password");
    
    // 设置连接池属性
    dataSource.setInitialSize(10);
    dataSource.setMaxTotal(100);
    dataSource.setMaxIdle(20);
    dataSource.setMinIdle(5);
    
    // 从连接池中获取连接
    Connection connection = null;
    try {
        connection = dataSource.getConnection();
        // ...
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    

    通过使用连接池,可以更有效地管理和利用数据库连接。连接池可以在数据库连接的需求量增加时动态地创建连接,同时在连接不再使用时将其返回给连接池进行重用。

头像
等级0

MySQL客户端可以直接导入

头像
等级0

1、8年Java后端研发,一直处在互联网公司,并发/架构经历丰富。
2、熟悉Vue技术栈,全栈开发。

有需要联系我

头像
等级1

你好这个任务可以用python来做

本人超过十年软件开发

你好我主要做window/linux/mac c/c++/python/c#高性能服务器开发以及web开发(php/js/html/mysql)
你好 我在程序员客栈 猿急送和海外网站upwork都做过任务

实时翻译系统(c++ + c# + python)
1 使用c++提供的硬件api采集音频数据
2 将音频设备数据发送至科大讯飞识别系统进行实时识别
3 在界面上显示实时识别结果
4 将识别结果发送给科大讯飞翻译系统
5 在界面上显示翻译结果信息
svn:https://github.com/luguanhuang/translatetool

c++qt+qml+mysql
用户登录后,操作设备
1 设备的添加、删除、修改、查看
2 记录用户操作信息
3 使用opencv对设备进行图像处理
4 保存文件并在界面上显示处理结果
svn:https://github.com/luguan Huang/smartInspection-master

linux c/c++ 服务器代码(使用select/epoll + 多线程)
https://github.com/luguanhuang/linux-task

window qt(项目为香港人做的)
我做了一个做市机器人,根据策略下单和撤单,在成交的时候,进行反方向的对冲操作(使用window vs2019 qt作为界面)
https://github.com/luguanhuang/code

Python
爬虫项目检查当前是否有可用的vfs票据来源
svn:https://github.com/luguanhuang/crawler-task
python(qt)
使用python GUI帮助客户做磁盘管理界面和后台管理(为了更快的擦除磁盘,调用C语言擦除数据)
使用c++作为服务端,使用python作为客户端实现文件上传下载功能
这是我为印度所做的web开发
http://156.251.155.130/htdocs/enter.php 用户名:SuperAdmin 密码:123456

头像
等级0

我来给你写吧,联系你了

头像
等级5

俺用Python 接了

头像
等级2

从excel清理和洗数据导入到mysql做过多次 有需要联系我!

头像
等级5

对我来说很熟悉,有意可联系

头像
等级0

没有电量,可以联系我,写个简单的winform程序,可以选择excel批量导入mysql

头像
等级0

用excel导出到csv,然后使用MySQL Workbench将csv导入mysql中

头像
等级1

试试问chatgpt 它应该能给出思路

头像
等级2

问题已经解决了.

但是我们还缺个兼职的运维, 如配置内网VPN等

另希望有熟练aws使用经验

头像
等级1

mysql 有专门批量导入数据的设计, 6w 40 列 应该要1-2秒时间(看你数据大小)

头像
等级0

可以随时联系我,数据库操作,数据结构,大数据开发和运维都可以