将GTFS格式的公共交通调度数据导入MySQL

最近在分析图卢兹的公共交通调度数据,为了操作方便,决定导入MySQL。本文介绍如何将GTFS格式的数据导入MySQL。

1. 创建数据库

我是导入到之前配置好的AWS EC2,不过在本机上安装也简单,以Ubuntu如例,相关命令如下:

sudo apt-get install mysql-server #会提示输入密码,作为数据库用户root的密码

#安装phpmyadmin,可选
sudo apt-get install phpmyadmin 
#create a symbolic,否则会提示错误:The requested URL /phpMyAdmin was not found on this server
sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
#访问:http://localhost/phpmyadmin/

#将local-infile=1加入到/etc/mysql/my.cnf (加在[mysql]下方),为的是能使用mysql命令:LOAD DATA LOCAL
[mysql]
local-infile=1

2. 导入GTFS数据

这一步其实就是操作数据库,创建数据库,创建表,导入数据,将SQL语句保存在一个文件load.sql,运行如下命令:

#! /usr/bin/env bash
cat load.sql | mysql -pJelline -u root  #Jelline是密码

load.sql核心内容如下(只选了其中一部分):

-- 创建数据库
DROP DATABASE IF EXISTS gtfs;
-- CREATE DATABASE IF NOT EXISTS gtfs;
CREATE DATABASE gtfs
    DEFAULT CHARACTER SET utf8
    DEFAULT COLLATE utf8_general_ci;

USE gtfs

-- 创建表
DROP TABLE IF EXISTS agency;
-- agency_id,agency_name,agency_url,agency_timezone,agency_phone,agency_lang
CREATE TABLE `agency` (
    agency_id VARCHAR(255) NOT NULL PRIMARY KEY,
    agency_name VARCHAR(255),
    agency_url VARCHAR(255),
    agency_timezone VARCHAR(50),
    agency_phone VARCHAR(255),
    agency_lang VARCHAR(50)
);

-- 导入数据
LOAD DATA LOCAL INFILE 'agency.txt' INTO TABLE agency FIELDS TERMINATED BY ',' IGNORE 1 LINES;

完整源代码和数据集见我的GitHub: tisseo_toulouse_gtfs

3. 关于GTFS

了解各个文件的组织,可以看这个:General Transit Feed Specification Reference

The General Transit Feed Specification (GTFS) defines a common format for public transportation schedules and associated geographic information. GTFS “feeds” allow public transit agencies to publish their transit data and developers to write applications that consume that data in an interoperable way.

参考资料:
[1]StackOverflow: How can I import GTFS files into MySQL?
[2]GitHub: tisseo_toulouse_gtfs

发表评论

电子邮件地址不会被公开。 必填项已用*标注

2 thoughts on “将GTFS格式的公共交通调度数据导入MySQL