如何将GTFS文件导入MySQL?

3
GTFS 是公共交通时刻表的常见格式。

通用交通馈送规范(GTFS)为公共交通时刻表和相关地理信息定义了一种通用格式。 GTFS“馈送”允许公共交通机构发布其交通数据,并使开发人员以可互操作的方式消耗该数据。

现在,我有一个以 GTFS 格式跟踪的文件,包括多个 .txt 文件(表格)。如何将其导入到 MySQL 中?


1
据我所知,GTFS的数据会生成多个CSV文件,可以使用LOAD DATA INFILE <your-file-name> FIELDS <field-list> SEPARATED BY ',' SKIP FIRST 1 ROW将其导入到MySQL中。 - Satya
1
使用 LOAD DATA INFILE <file> INTO TABLE <table> FIELDS <field-list> TERMINATED BY ',' IGNORE 1 LINES 或类似的语句。详情请参考 https://dev.mysql.com/doc/refman/5.1/en/load-data.html。 - Shotgun Ninja
另外,我认为你混淆了“数据库”和“表格”的概念;从技术上讲,有数据库,其中包含模式,模式包含由列和其他组织实体构成的表格,表格包含数据行。 - Shotgun Ninja
1
好的,对于每个文件,用适当的<file-for-table-x>、<table-x>和<field-list>替换LOAD DATA INFILE <file-for-table-x> INTO TABLE \gtfs`.<table-x> FIELDS <field-list> TERMINATED BY ',' IGNORE 1 LINES。或者在此之前调用use `gtfs`;,并忽略`gtfs`.`部分。 - Shotgun Ninja
哦,没错,这是MySQL。在其他SQL方言中,“模式”被称为MySQL中的“数据库”...大致如此。仍然存在一些概念上的差异,即数据库包含模式,但在MySQL中,您实际上是在数据库级别上操作,而在许多其他RDBMS中,您是在模式级别上操作。 - Shotgun Ninja
显示剩余2条评论
1个回答

2
在Shotgun Ninja和Satya的帮助下,我成功了。以下是我的做法。
cat load.sql | mysql -p -u root 

load.sql 基于 github/sbma44/py-gtfs-mysql, 这里。主要代码如下:

CREATE DATABASE IF NOT EXISTS gtfs;
USE gtfs

DROP TABLE IF EXISTS agency;
-- agency_id,agency_name,agency_url,agency_timezone,agency_phone,agency_lang
CREATE TABLE `agency` (
    agency_id INT(20) 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

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