解决的问题
mysql数据库在公司内网服务器,而excel数据表在本地,需要堡垒机跳转才能访问,无法直连,因此在本地任何客户端导入数据表的方法都不好使。
数据库只开放了一个端口,无法将数据表传到数据库服务器上,再登入数据库利用load data infile命令导入。
解决办法
登陆内网任意一台可以链接数据库的服务器,将excel文件导出为.sql
文件,然后使用mysql -h host -Pport -u user_name -pPassword database < file.sql
命令即可完成导入
创建数据表
- 登入数据库
mysql -hHost -Pport -uUser_name -pPassword -Ddatabase
- 创建数据表
create [temporary] table [if not exists] table_name
(create_definition)
[table_options]
[parttion_options]
以我要创建的存储我国省市行政区划代码为例,我的语句是
create table city_code_dic (id int not null auto_increment,
city_code varchar(6),
city_name varchar(20),
primary key (id));
需要注意的是最新版本的mysql存储中文字符时,一个varchar
可以存储一个汉字,经过测试最长的行政区划名称也只有15个字,因此varchar(20)
绰绰有余。
excel导出为.sql
我的excel表格长的是这个样子的:
首先鼠标点击C1单元格,输入一句insert语句,比如
="insert into city_code_dic (city_code, city_name) values('"&&"','"&&"');"
,然后让光标停留在两个&中间,再点击要取值的单元格,此处是A1,就会发现A1自动填入两个&之间了。然后需要将C1格式填充整列,可以选择拖动填充,我这里有3000多行不想拖动,就可以在名称栏里输入填充的列,比如我的是
C1:C3578
,然后按Shift+Return
选中单元格,再将鼠标光标定位在要复制的公式栏最后,按Cmd/Ctrl+Return
即可将生成的列复制出来,另存为.sql文件,再上传到能连接到数据库的服务器上,执行文章开头所说的命令就可以了。