我想知道是否有人成功地将 GTFS 数据加载到 mySQL 数据库。我到处寻找一个好的教程,但我找不到任何有用的东西。
7 回答
我成功地将 GTFS 文件导入 MySQL。
第一步:创建数据库
CREATE DATABASE gtfs
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;
第 2 步:创建表
例如,stops
为stops.txt
、
-- stop_id,stop_code,stop_name,stop_lat,stop_lon,location_type,parent_station,wheelchair_boarding
CREATE TABLE `stops` (
stop_id VARCHAR(255) NOT NULL PRIMARY KEY,
stop_code VARCHAR(255),
stop_name VARCHAR(255),
stop_lat DECIMAL(8,6),
stop_lon DECIMAL(8,6),
location_type INT(2),
parent_station VARCHAR(255),
wheelchair_boarding INT(2),
stop_desc VARCHAR(255),
zone_id VARCHAR(255)
);
第三步:加载本地数据
例如,将本地文件加载stops.txt
到表中stops
,
LOAD DATA LOCAL INFILE 'stops.txt' INTO TABLE stops FIELDS TERMINATED BY ',' IGNORE 1 LINES;
带有示例的完整源代码放在 GitHub 上(此处)。为您的目的进行一些细微的更改。
你试过这个:
https://code.google.com/p/gtfsdb/
该网站说:
GTFS(通用运输饲料规范)数据库
将 GTFS 数据加载到关系数据库中的 Python 代码,以及 Sql/Geo-Alchemy ORM 绑定到 gtfsdb 中的 GTFS 表。
gtfsdb 项目的重点是使 GTFS 数据在软件开发人员的编程环境中可用。对 gtfsdb 项目的需求来自这样一个事实,即许多开发人员通过首先构建一些代码来读取 GTFS 数据(无论是内存加载器、数据库加载器等)来开始与 GTFS 相关的工作。 ); gtfsdb 有望减少对此类苦差事的需求,并在处理 .csv 文件格式的 GTFS 的第一步之外为开发人员提供一个起点。
我通过以下命令将 GTFS 数据加载到 SQLite 数据库中:
创建一个名为test.sqlite3的新 SQLite 数据库
sqlite3 test.sqlite3
将模式设置为 csv
sqlite> .mode csv
使用导入命令.import FILE TABLE将每个文件导入到相应的表中
sqlite> .import agency.txt agency
sqlite> .import calendar.txt calendar
...
sqlite> .import stops.txt stops
现在应该加载您的数据库
我实际上使用以下链接作为基础并将其转换为脚本,就像一个魅力
就我而言,我首先创建了表结构。
然后在mysql命令控制台中通过以下命令加载数据
将数据本地 infile '/media/sf_Downloads/google_transit/stops.txt' 加载到以 ',' 结尾的表停止字段中,由 '"' 括起来,以 '\n' 结尾的行忽略 1 行;
这会将stops.txt 加载到停止表中。忽略stops.txt 文件中的第一行(标题)。
'/media/...' 只是文件的路径,我在其中提取 gtfs 数据。
嗨寻找类似的东西,但仍然没有一个简单的方法来做到这一点。我将使用 Python 尝试 GTFS 到 MySQl
根据Google Developers的说法,GTFS 提要基本上是一个包含文本文件的 zip 文件。您应该能够使用 BLOB 类型字段将其存储在 MySQL 数据库中。但这不推荐。您应该将其作为文件存储在服务器磁盘上,然后将文件的名称/路径存储到数据库中的常规 text/varchar 字段中。