2016-11-24 6 views
0

Я пытаюсь загрузить данные из текстового файла в мою базу данных, но один из столбцов в базе данных имеет тип Point (lat, lng).Ошибка при попытке загрузить координаты из файла .txt в MySQL

Пример строки в текстовом файле:

1 3 exampleString1 POINT(34.123456, 45.678909) default NULL strg2 

MySQL Query:

LOAD DATA LOCAL INFILE '/location/file.txt' INTO TABLE ExampleTable; 

MySQL Workbench Ошибка: код Ошибка: 1416. Не удается получить объект геометрии из данные, которые вы отправляете в поле GEOMETRY 0.003 sec

+0

Ну по душе, его не магия – RiggsFolly

+0

Оказывается, это не может быть возможно в данный момент http://dev.mysql.com/doc/refman/5.7/en/populating -spatial-columns.html –

ответ

0

Вы пытаетесь присвоить строку геометрии.

создать текстовое поле geom_txt на вашем столе, так что вы можете сохранить 'POINT(34.123456, 45.678909)'

Затем после загрузки файла

UPDATE ExampleTable 
SET geometryField = ST_GeomFromText(geom_txt); 
0

Try:

Файл:

1;3;"example String1";POINT(34.123456, 45.678909);strg2 

MySQL из командной строки:

mysql> DROP TABLE IF EXISTS `ExampleTable`; 
Query OK, 0 rows affected (0.00 sec) 

mysql> CREATE TABLE IF NOT EXISTS `ExampleTable` (
    -> `column0` INT UNSIGNED NOT NULL, 
    -> `column1` INT UNSIGNED NOT NULL, 
    -> `column2` VARCHAR(255) NOT NULL, 
    -> `column3` GEOMETRY NOT NULL, 
    -> `column4` VARCHAR(255) NOT NULL 
    ->) ENGINE=InnoDB; 
Query OK, 0 rows affected (0.00 sec) 

mysql> LOAD DATA LOCAL INFILE '/location/file.txt' 
    -> INTO TABLE `ExampleTable` 
    -> FIELDS TERMINATED BY ';' ENCLOSED BY '"' 
    -> LINES TERMINATED BY '\r' 
    -> (`column0`, `column1`, `column2`, @`column3`, `column4`) 
    -> SET `column3` := ST_GeomFromText(REPLACE(@`column3`, ',', '')); 
Query OK, 1 row affected (0.00 sec) 
Records: 1 Deleted: 0 Skipped: 0 Warnings: 0 

mysql> SELECT 
    -> `column0`, 
    -> `column1`, 
    -> `column2`, 
    -> ST_AsText(`column3`) `column3`, 
    -> `column4` 
    -> FROM 
    -> `ExampleTable`\G 
*************************** 1. row *************************** 
column0: 1 
column1: 3 
column2: example String1 
column3: POINT(34.123456 45.678909) 
column4: strg2 

1 row in set (0.00 sec)