Я пытаюсь импортировать CSV, предоставляемый службой, которая должна предоставить мне базу данных городов .
Способ форматирования городов в формате csv:
CC_FIPS FULL_NAME_ND
AN Aixas
AN Aixirivall
AN Aixovall
AN Andorra la Vella
AN Ansalonga
Итак, я пришел к следующему запросу mysql:
LOAD DATA LOCAL
INFILE 'GEODATASOURCE-CITIES-FREE.TXT'
INTO TABLE `city`
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(cc_fips,full_name_nd);
Все они импортируются, но записи в столбце full_name_nd
имеют пробел после.Поскольку, как вы можете видеть, в конце каждой строки есть дополнительные \r\n
.
, которые я могу подтвердить с помощью cat short.txt | od -c
0000000 C C _ F I P S \t F U L L _ N A M
0000020 E _ N D \r \n A N \t A i x a s \r \n
0000040 \r \n A N \t A i x i r i v a l l \r
0000060 \n \r \n A N \t A i x o v a l l \r \n
0000100 \r \n A N \t A n d o r r a l a
0000120 V e l l a \r \n \r \n A N \t A n s a
0000140 l o n g a \r \n \r \n A N \t A n y o
0000160 s \r \n \r \n A N \t A r a n s \r \n \r
0000200 \n A N \t A r i n s a l \r \n \r \n A
0000220 N \t A u b i n y a \r \n \r \n A N \t
Итак, изменив запрос, используя \r\n\r\n
:
LOAD DATA LOCAL
INFILE 'GEODATASOURCE-CITIES-FREE.TXT'
INTO TABLE `city`
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\r\n\r\n'
IGNORE 1 LINES
(cc_fips,full_name_nd);
Но этот запрос не будет работать: (
Query OK, 0 rows affected (0.40 sec)
Records: 0 Deleted: 0 Skipped: 0 Warnings: 0
Я даже пытался с
LOAD DATA LOCAL
INFILE 'GEODATASOURCE-CITIES-FREE.TXT'
INTO TABLE `city`
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(cc_fips,@col_with_spaces)
SET full_name_nd = TRIM(@col_with_spaces);
Но, очевидно, TRIM()
не работаетна \r
, \n
или других специальных пробелах.
Надеюсь, что кто-нибудь может помочь.
С уважением,