Как загрузить IP-адреса в Mysql Table из CSV-файла?
Я пытаюсь найти способ загрузить таблицу mysql, которую я вызываю ipCompare_tbl с IP-адресами из файла CSV с именем myIPs.csv.
Поля в ipCompare_tbl - это ipStart и ipEnd. Я также включил auto_incrementor для поля генератора первичного ключа с именем id.
Моя цель - загрузить ipCompare_tbl с:
ipStart ipEnd id
123.10.0.0 123.0.0.255 1
130.20.0.0 130.0.0.255 2
140.30.0.0 140.0.0.255 3
Я продолжаю получать следующую ошибку: ОШИБКА 1366 (HY000): Неверное целочисленное значение: "130.20.0.0" для столбца "ipStart" в строке 1
Я запускаю следующий код для этого:
DROP TABLE IF EXISTS ipCompare_tbl;
CREATE TABLE ipCompare_tbl(
ipStart int(10) unsigned NOT NULL,
ipEnd int(10) unsigned NOT NULL,
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY ( id ));
LOAD DATA INFILE 'myIPs.csv' INTO TABLE ipCompare_tbl
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY ';'
IGNORE 1 LINES;
SELECT INET_ATON(ipStart), INET_ATON(ipEnd)
FROM ipCompare_tbl;
2 ответа
Вам нужно преобразовать IP-адреса в числа при загрузке CSV.
LOAD DATA INFILE 'myIPs.csv' INTO TABLE ipCompare_tbl
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY ';'
IGNORE 1 LINES
(@ipstart, @ipend, id)
SET ipStart = INET_ATON(@ipstart), ipEnd = INET_ATON(@ipend);
Тогда вам не нужно использовать INET_ATON
когда вы выбираете, так как это уже цифры.
Измените схему таблицы на
CREATE TABLE ipCompare_tbl(
ipStart varchar(15) NOT NULL,
ipEnd varchar(15) NOT NULL,
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY ( id ));