# ExcelToDatabase下载 **Repository Path**: kuangsheng/download-excel-to-database ## Basic Information - **Project Name**: ExcelToDatabase下载 - **Description**: ExcelToDatabase:批量导入Excel到MySQL/Oracle/SQL Server/PostgreSQL/Access数据库的自动化工具 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-03-23 - **Last Updated**: 2024-03-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ExcelToDatabase:批量导入Excel到MySQL/Oracle/SQL Server/PostgreSQL/Access数据库的自动化工具 [点此下载最新版本](https://gitee.com/ruyi-machine-reflector-bare/download-excel-to-database/releases/download/latest/ExcelToDatabase.rar) ![输入图片说明](f73ef0bae86d4d5194e5d563eeb472f3.png) ## 简介 **ExcelToDatabase** 是一个可以批量导入excel到mysql/oracle/sql server/postgresql/access数据库的自动化工具。***自动化***是其最大的特点,因为它可以根据excel自动创建表并最终导入数据到数据库而不需要做任何手工设置。***批量***是它另一个特点,因为可以做到自动化,所以你可以一次性导入成百上千张表而不是一个一个导。 ## 工具特色: **自动**:工具可以根据excel自动设置表名、列名、列类型及其长度,最终创建表并导入数据,或者根据excel与数据库的自动匹配追加或者更新数据 **批量**: 通常你只能用其他工具一个一个手动导入excel到数据库,但是现在,你可以一次性导入成百上千张表 **简单**: 只需要提供excel文件位置和目标数据库连接信息,工具就能开始工作直到excel全部被导入 **快捷**:全部导入100张1万行x10列的excel用时1分零30秒,导入10个小文件更是不到1秒钟,导入一个100万行x20列文件大小100MB的大型excel仅需2分22秒(办公笔记本MySQL测试) **智能**:你是否手动导入时经常遇到错误?不要担心!工具可以轻松避免或者自动纠正。 **定时**: 可以使用内含定时任务功能或搭配windows/linux计划任务程序,实现定时调度 **实时**: 利用定时任务,可实现当excel数据更新时,实时同步更新至数据库 **安全**:工具完全在脱机环境工作,无任何数据上传下载操作。对数据库的操作做到可视、可控和可回滚,不含带不可控的数据操作。 ## 程序下载 * [ExcelToDatabase下载](https://gitee.com/ruyi-machine-reflector-bare/download-excel-to-database/releases/download/latest/ExcelToDatabase.rar) * [ExcelToMySQL下载](https://gitee.com/ruyi-machine-reflector-bare/ExcelToMySQL-Download/releases/download/latest/ExcelToMySQL.zip) * [ExcelToOracle下载](https://gitee.com/ruyi-machine-reflector-bare/download-excel-to-oracle/releases/download/latest/ExcelToOracle.zip) * [ExcelToSQLServer下载](https://gitee.com/ruyi-machine-reflector-bare/download-excel-to-sql-server/releases/download/latest/ExcelToSQLServer.zip) * [ExcelToPostgreSQL下载](https://gitee.com/ruyi-machine-reflector-bare/excel-to-postgresql-download/releases/download/latest/ExcelToPostgreSQL.zip) * [ExcelToAccess下载](https://gitee.com/ruyi-machine-reflector-bare/excel-to-access-download/releases/download/latest/ExcelToAccess.zip) ## 使用方法: 一、图形化界面使用方法 **1.、点击exe启动程序** **2.、选择excel并填入数据库信息** **3、选择选项(可选)** **4、点击开始** 二、API 工具提供了供其他应用程序调用的API能力(禁止用于同质套壳程序) 调用方法: 命令:ExcelToDatabase.exe 参数1:数据库类型(MySQL/Oracle/SQL Server/PostgreSQL/Access) 参数2:配置文件的绝对路径,该配置文件应该保存了图形化界面下,该数据库类型用户所有的输入 例:ExcelToDatabase.exe MySQL D:\Projects\ExcelToDatabase\ExcelToDatabase\to_mysql\saved_configuration\默认.yml ## 支持环境 * 操作系统:Windows7+/Linux7+ * 数据库:MySQL/Oracle/SQL Server/PostgreSQL/Access * Excel:xls/xlsx/xlsm/csv 注:较旧的Win7系统可能需安装必要系统组件才能运行,如打开报错,请参考[Windows7系统打不开ExcelToDatabase](https://blog.csdn.net/qq_37955852/article/details/130529954) ## 典型使用场景: 场景一:[一键导入excel到数据库](https://blog.csdn.net/qq_37955852/article/details/128504107) 场景二:[多个excel文件批量导入到数据库](https://blog.csdn.net/qq_37955852/article/details/128511424) 场景三:[合并多个excel文件数据](https://blog.csdn.net/qq_37955852/article/details/128513115) 场景四:[定时导入excel到数据库](https://blog.csdn.net/qq_37955852/article/details/128513343) 场景五:[实时同步刷新excel数据到数据库](https://blog.csdn.net/qq_37955852/article/details/128519737) ## 菜单 配置: 可打开,保存,另存,删除和导入界面配置 数据源: 文件: 选择文件作为数据源,单个或者多个被选中的文件将被 文件夹: 选择文件夹作为数据源,文件夹下所有excel都将被导入 数据库: 切换至其他数据库 定时任务: 可新增、编辑、删除、导入定时任务 设置方法可参考:[定时导入excel到数据库](https://blog.csdn.net/qq_37955852/article/details/128513343) ## 选项介绍: #### Excel: 选择需要被导入的excel目录或者文件。 选择文件(默认):选择一个或多个excel文件,被选中的文件将被导入 选择文件夹(通过菜单栏-数据源-文件夹切换):选择一个文件夹,该文件夹下所有excel将被导入 #### MySQL/Oracle/SQL Server/PostGreSQL/Access连接: 填入目标数据库的连接信息。 ### Excel选项: #### 遍历子目录 遍历所选目录及其子目录下所有excel文件,仅数据源选择文件夹时有效 #### 仅导入最近更新的文件 记录上次成功导入excel的时间,下次导入时只导入该时间后有更新或新增的excel (重新选择数据源后且文件夹变更后失效) #### Windows下加速读取Excel windows下,打开excel后台程序以加速读取大数据量excel文件 (仅适用于已安装excel的windows,且文件格式为xlsx/xls的文件, 建议仅在文件较大或较多时开启) #### CSV文件编码: 默认为AI识别,表示工具自动探测,如果能确定所有CSV文件编码, 可以指定(可选择和输入)以提高效率。AI识别有一定失败几率, 如果失败报编码格式相关问题,请另存为utf8编码格式文件或另存为xlsx再重新导入 #### 指定要导入的sheet序号或名称: sheet序号例如:1,sheet名称例如:Sheet1,不填默认全部导入 多个sheet以逗号,分隔,不填默认全部导入 #### 指定要忽略的sheet名称起始符: 例如填写:@,那么名称以@开始的sheet都将被忽略,不填默认全部导入 #### 表头所在行数: 指定将第几行作为列名,第一行从1开始,不填默认为1。 支持多级表头,例:1-3 可以填0,表示数据从第一行开始,列名以A,B,C。。。命名, 如果同时指定了要导入的目标表名(MySQL选项),工具将以顺序与表列进行匹配导入。 #### 数据开始行数: 数据开始行数,不填默认为 表头所在行数+1 #### 跳过结尾行数: 跳过文件末尾行数,不填默认为0 #### 去除单元格值首尾空格: 去除单元格值首尾空格,即执行trim函数 #### 删除空行 删除单元格全为空白的行 #### 将空白单元格替换为NULL 将空白单元格替换为NULL #### 将这些值单元格值替换为null: 对于常见的excel错误单元格或者某特定的值,以逗号分隔填入, 这些单元格值将被替换为null。比如:#NA,null,0,不填默认不替换 #### 将数据按这些列去重 多列以逗号分割,例如:col1,col2,整行去重填*,不填默认不去重 #### 使用上一行数据补全这些列的空白单元格 使用上一行数据补全所填列的空白单元格,多列以逗号分割,例如:col1,col2 ### MySQL/Oracle/SQL Server/PostGreSQL/Access选项: #### 表若存在先删除: 导入前若数据库表已存在,执行drop table if exists操作 注:谨慎操作,该项导入失败不可回滚 #### 表若存在先清空: 导入前删除表数据,执行delete from操作(不是tuncate,导入失败可回滚) #### 表若不存在先新建: 导入前若数据库表不存在,执行create table if not exists操作 #### 将所有数据导入到指定表: 将所有excel数据都导入到输入的目标表表 #### 将这些数据导入到同一张表: sheet名相同:将sheet名相同的数据导入同一张表,且以sheet名作为表名 excel名相同:将excel文件名相同的数据导入同一张表 excel名相似:将excel文件名相似的数据导入同一张表 #### 使用sheet名作为表名 勾选以使用sheet名作为表名,默认使用excel文件名作为表名 #### 将表名和列名中的符号都替换为下划线_ 将表名和列名中的符号(冒号引号等)都替换为下划线_, 若excel名字存在特殊符号,勾选此项以避免导入失败 #### 转换表名和列名中文为拼音首字母 将表名和列名中的中文转换为拼音首字母 #### 使用正则表达式提取表名 从excel文件名中使用正则表达式提取表名,不填默认为原excel文件名 #### 为创建的表名添加前缀/后缀: 为创建的表名指定前缀/后缀以示区分 #### 创建表时添加一列值为自增id的主键列 创建表时在数据库表中添加一列,该列将存储数自动增长的数字,并作为该表的主键 #### 将excel文件名(可正则提取) 存到列 将exce文件名存到填写的列,可以对excel文件名应用正则表达式提取后再作为列值 #### 当表列长度不够时,允许增加列长度: 当数据库表中列长度不够时,动态增加列长度,执行alter table modify column 操作 #### 当excel存在多余的列时: 不处理:不做任何操作 忽略多余列:只导入匹配上的列数据 在表中增加新列:在库表中增加新列,执行alter table add column 操作 #### 当excel与表数据重复时: 当库表存在主键或者唯一索引,并且出现数据重复时: 不处理:不做任何操作 忽略:忽略重复数据,执行insert ignore into 操作 更新:更新库表数据,根据唯一键更新库表数据 #### 按这些列更新表数据: 多列以逗号分割,例如:col1,col2,不填默认不更新 #### 设置最大并发连接数 建立多个连接并行插入,以提高大数据量插入效率( 该选项将在插入前commit,提交所有操作,若插入失败将不可回滚, 建议仅在文件较大或较多时开启) ### 其他: #### 导入前清空日志文件 导入前清空该配置下的日志文件记录 #### 导入完成弹出提示框 导入完成弹出提示框 #### 开始前/结束后运行SQL 全部导入开始前或结束后运行SQL文件里的SQL ### 关于工具如何工作: 下面描述了一些工具工作时的逻辑 #### 如何确定表名: 如果excel里只包含一个sheet >> excel文件名 如果excel里包含多个sheet >> excel文件名+_+sheet名 如果表名长度超过了数据库限制 >> 截断 #### 如何确定列名: 默认使用第一行作为列名 如果存在列名为空,将用abcd等作为列名 如果列名重复,使用列名+计数作为列名 #### 如何确定列类型: 工具将计算每列最大长度,如果小于255,将使用varchar(255), 如果大于255,将使用text。