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

posted @ 2018-07-25 22:13  heacool  阅读(633)  评论(0)    收藏  举报