MySQL - 载入GTFS数据

3

我想知道有没有人成功地将GTFS数据加载到MySQL数据库中。我已经找了很多地方,但是找不到任何有用的教程。


我以前做过这件事,但其中一些文件非常大,需要使用命令行导入或MySQL大转储。 - rink.attendant.6
7个回答

2
我成功地将GTFS文件导入MySQL中。

步骤1:创建数据库

CREATE DATABASE gtfs
    DEFAULT CHARACTER SET utf8
    DEFAULT COLLATE utf8_general_ci;

步骤 2:创建表格

例如,为 stops.txt 创建名为 stops 的表格。

-- 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上(这里)。根据您的需要进行一些微小的更改。

0

我通过以下命令将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

现在你的数据库应该已经加载完毕了。

0

0
在我的情况下,我首先创建了表结构。
然后通过以下命令在mysql命令控制台中加载数据: load data local infile '/media/sf_Downloads/google_transit/stops.txt' into table stop fields terminated by ',' enclosed by '"' lines terminated by '\n' ignore 1 rows;
这将把stops.txt加载到stop表中。忽略stops.txt文件中的第一行(标题)。
'/media/...'只是我提取gtfs数据的文件路径。

0
你试过这个吗:

https://code.google.com/p/gtfsdb/

网站上写着:
GTFS(通用公交数据规范)数据库
Python代码将GTFS数据加载到关系型数据库中,并在gtfsdb中提供Sql/Geo-Alchemy ORM绑定到GTFS表。
gtfsdb项目的重点是为软件开发人员以编程方式提供GTFS数据。 gtfsdb项目的需求来自于许多开发人员首先构建一些读取GTFS数据的代码(无论是内存加载器、数据库加载器等),gtfsdb可以希望减少这种单调乏味的工作,并为开发人员提供超越处理.csv文件格式的第一步的起点。

0

-1
根据Google Developers的说法,GTFS feed基本上是一个包含文本文件的zip文件。您应该能够使用BLOB类型字段将其存储在MySQL数据库中。但这并不推荐。您应该将其存储为服务器磁盘上的文件,然后将文件名/路径存储到数据库中的常规文本/varchar字段中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接