1.1.3导入Excel数据到MySQL数据库
一、操作环境:
操作系统:Windows 10
MySQL版本:MySQL 8.0
MS Excel版本:MS Excel 2016
测试数据库:test
二、导入Excel数据到MySQL数据库中
(一)通过MySQL Workbench
1.准备部署
1.1打开MySQL80服务:依次进入控制面板-管理工具-服务,右键手动(或以管理员身份打开CMD窗口,输入net start mysql80)打开MySQL80服务。
1.2打开MySQL Workbench(建议设置环境变量,方便打开):双击“Local instance MySQL Router ”建立连接,进入操作界面。
1.3选择数据库,并查看数据库字符集:点击“Create a new SQL tab for executing queries”,新建SQL命令窗口,输入:
use test; show variables like 'character%';
输出结果:
| Variable_name | Value |
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 8.0\share\charsets\ |
看到character_set_database的值为utf8mb4(utf8mb4是utf8的超集,其中mb4就是most bytes 4的意思,专门用来兼容四字节的unicode),也就不用再去设置数据库的字符集了。
1.4将Excel文件另存为CSV UTF-8(逗号分隔)(*.csv)类型的文件。
2.执行.csv格式文件导入
方法一:通过“Table Data Import Wizard”导入.csv文件
Step1:先使用create table命令新建一个空表,需给出新表的名字,以及表列的名字及定义,并使用逗号分隔表列的名字(经测试这样做相对于直接导入.csv文件新建表能规避第一行第一个数据出现问题),示例
create table zjbxy201805 (company_id int not null auto_increment, company_name char(50) not null, total_preminums double, primary key(company_id) )engine=InnoDB;
说明:zjbxy201805是要新建的表的表名,company_id、company_name以及total_preminums为表列名,其中company_id在每增加一行记录时会自动增量(需设置为主键)。
step2:右键Schemas列表中需要导入数据的数据库名,点击“Table Data Import Wizard”,然后选择要导入的.csv文件,并选择“use existing table”,在“Configure Import Setting”中选择编码方式为utf-8(默认),并设置待导入数据表中字段与已建数据库表中字段的对应关系,然后next直至完成。
(若出现Can't analyze file.Please try to change encoding type.if that doesn't help. Maybe the file is not:csv,or the file is empty.错误,建议将把CSV文件中的表头的中文先改成英文,然后下载一个Notepad ++ ,安装好之后导入要转换格式的csv文件,选择菜单栏的编码-转换为utf-8格式,而非utf-8-BOM格式,之后点击保存后再上传)
在当前数据库中查看通过导入.csv文件新建的表:
show tables;
查看新导入的数据库表中的所有内容:
select * from zjbxy201805;
select * from zjbxy201805 where company_id=1;
其中zjbxy201805既是通过导入.csv格式文件所新创建的数据库表名。
备注:不事先通过SQL命令创建表,而是直接通过导入.csv格式文件来新建的数据库,往往会出现在对第一个字段(表中的第一行第一个数据)进行筛选操作时出现Error 1054。
方法二:通过Load Data Infile命令将.csv格式文件导入MySQL数据库中(Load Data Infile在MySQL80版本中默认在服务端及客户端被禁用[1])
Step1:配置Local Data Infile选项
打开C:\ProgramData\MySQL\MySQL Server 8.0\my.ini配置文件,在服务端配置部分中[mysqld]语句下,增加local-infile=1语句,即如下:
[mysqld]
local-infile=1
然后,以管理员身份运行CMD命令符窗口,输入以下代码启动MySQL服务及登录MySQL(若已登录需先退出):
C:\WINDOWS\system32>net start mysql80 C:\WINDOWS\system32>mysql --local-infile=1 -uroot -p密码
备注:
1.第二条语句也可以写为mysql --local-infile-infile -uroot -p密码。
2.Load Data Infile命令在文件导入数据库表中之前需要确保数据库表的存在。
3.若设置不成功过,则会出现错误:ERROR 1148 (42000): The used command is not allowed with this MySQL version。
参考:
[1]https://dev.mysql.com/doc/refman/8.0/en/load-data-local.html

浙公网安备 33010602011771号