MySQL 导入 IP 数据库实操笔记

MySQL导入IP数据库文件

偶然在网上获取了一份IP数据文件,虽数据不够完整,但很适合用于学习实践。该源文件为.mdb格式,我们可先通过Excel打开,再将其转为.csv文件,后续导入MySQL数据库。以下是详细操作步骤:

1. 创建数据库与数据表

首先登录MySQL,创建存储IP数据的数据库和对应数据表,用于承接后续导入的数据。

1.1 执行SQL语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-- 创建IP数据专用数据库
CREATE DATABASE ipdat;
-- 切换至该数据库
USE ipdat;
-- 创建存储IP数据的表
CREATE TABLE ip_database (
id INT AUTO_INCREMENT PRIMARY KEY,
StartIPNum BIGINT,
StartIPText VARCHAR(15),
EndIPNum BIGINT,
EndIPText VARCHAR(15),
Country VARCHAR(50),
Local VARCHAR(50),
Start1 BIGINT,
End1 BIGINT
) ENGINE=InnoDB DEFAULT CHARSET=gbk;

1.2 操作效果

数据表创建完成后,可通过可视化工具查看表结构,效果如下:

2. 转换源文件为CSV格式

源文件是.mdb格式,需借助Excel将其转为MySQL支持导入的.csv格式,步骤如下:

2.1 打开.mdb文件

用Excel直接打开获取的.mdb格式IP数据文件,打开后可查看数据的原始排版与内容:

2.2 另存为CSV格式

  1. 打开文件后,点击Excel菜单栏中的文件
  2. 选择另存为,在保存类型中选择*CSV(逗号分隔)(.csv)**;
  3. 选择保存路径并确认保存,完成格式转换。

转换过程中的操作界面参考如下:

3. 导入CSV文件至MySQL

CSV文件准备就绪后,通过MySQL的LOAD DATA语句导入数据,需先开启本地文件读取权限。

3.1 开启本地文件读取权限

MySQL默认可能关闭本地文件读取功能,需手动开启,两种常见方式如下:

  1. 配置文件方式(永久生效)
    编辑MySQL的配置文件(Windows通常为my.ini,Linux通常为my.cnf),添加或修改以下配置:
    1
    local_infile = 1
    保存后重启MySQL服务使配置生效。
  2. 会话临时开启(临时生效)
    登录MySQL后执行以下命令,仅当前会话有效:
    1
    SET GLOBAL local_infile = 1;

3.2 执行导入语句

使用LOAD DATA LOCAL INFILE语句将CSV文件数据导入数据表,语句如下:

1
2
3
4
5
6
7
LOAD DATA LOCAL INFILE 'C:/ip_db.CSV'  -- CSV文件的本地绝对路径
INTO TABLE ip_database -- 目标数据表名
CHARACTER SET gbk -- 编码与数据表一致,避免乱码
FIELDS TERMINATED BY ',' -- CSV文件字段分隔符
ENCLOSED BY '"' -- 字段包围符
LINES TERMINATED BY '\r\n' -- 行分隔符,Windows系统默认
IGNORE 1 ROWS; -- 忽略CSV文件的表头行

3.3 导入效果验证

执行导入语句后,若提示类似X rows affected的信息,说明导入成功。可通过查询语句验证数据:

1
SELECT * FROM ip_database LIMIT 10;

成功导入后的数据展示效果如下:

可能遇到的错误

  1. 编码乱码:若导入后数据乱码,需确保CSV文件编码、CHARACTER SET参数、数据表编码三者一致(建议统一为gbkutf8mb4)。
  2. 文件路径错误:Windows系统路径需使用/\\,Linux系统需填写正确的绝对路径(如/home/user/ip_db.csv)。
  3. 权限不足:若提示权限错误,可检查MySQL用户是否有FILE权限,或直接使用管理员账号操作。