OGD-data from wiener-linien to mysql

source files are
http://data.wien.gv.at/csv/wienerlinien-ogd-linien.csv
http://data.wien.gv.at/csv/wienerlinien-ogd-haltestellen.csv
http://data.wien.gv.at/csv/wienerlinien-ogd-steige.csv

download all the files with wget  and make a short check…
let’s start with the steige-file, containing all stations/platforms.

make a head wienerlinien-ogd-steige.csv to check the header and the first 9 lines/datasets.

log into mysql database (mysql -u -p) and paste the following sql-code

use test;

create table 
wienerlinien_ogd_steige
(
STEIG_ID INT
, FK_LINIEN_ID INT
, FK_HALTESTELLEN_ID INT
, RICHTUNG VARCHAR(1)
, REIHENFOLGE SMALLINT
, RBL_NUMMER VARCHAR(64)
, BEREICH SMALLINT
, STEIG VARCHAR(128)
, STEIG_POINT POINT
, STAND DATETIME
);

now import data using that code:

LOAD DATA
INFILE ‚/wienerlinien-ogd-steige.csv‘
INTO TABLE wienerlinien_ogd_steige
FIELDS
TERMINATED BY ‚;‘
OPTIONALLY ENCLOSED BY ‚“‚
LINES TERMINATED BY ‚\r\n‘
IGNORE 1 LINES
(
  STEIG_ID
, FK_LINIEN_ID
, FK_HALTESTELLEN_ID
, RICHTUNG
, REIHENFOLGE
, RBL_NUMMER
, BEREICH
, STEIG
, @LAT
, @LON
, STAND
)
SET STEIG_POINT = POINT(@LAT,@LON)
;

that should result in the following output
Query OK, 6052 rows affected, 557 warnings (1.56 sec)

Records: 6052  Deleted: 0  Skipped: 0  Warnings: 557
we have some errors, because some rows contain empty strings for integer-data eg.
;““;““;““;
when you write SHOW WARNINGS; after the import you get the first warnings. eg:
| Warning | 1366 | Incorrect integer value: “ for column ‚BEREICH‘ at row 4331 |

compare the inserted rows (6052) with the rows of the source file: wc -l minus the header row.

now let’s view the data

SELECT * FROM wienerlinien_ogd_steige;

SELECT * FROM wienerlinien_ogd_steige
WHERE STEIG_ID = 215037496;

to extract the geo-data do the following

SELECT
  STEIG_ID
, STEIG
, X(STEIG_POINT) AS X 
, Y(STEIG_POINT) AS Y 
FROM wienerlinien_ogd_steige
WHERE STEIG LIKE ‚%13A%‘;
SELECT
  STEIG_ID
, FK_LINIEN_ID
, FK_HALTESTELLEN_ID
, RICHTUNG
, REIHENFOLGE
, RBL_NUMMER
, BEREICH
, STEIG
, X(STEIG_POINT) AS X 
, Y(STEIG_POINT) AS Y 
, STAND
FROM wienerlinien_ogd_steige

WHERE STEIG LIKE ‚%13A%‘;


now we note the number of rows for to compare with the next import
SELECT COUNT(*), STAND FROM wienerlinien_ogd_steige GROUP BY STAND;
+———-+———————+
| COUNT(*) | STAND               |
+———-+———————+
|     3026 | 2013-08-12 10:18:58 |
+———-+———————+

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s