Как загрузить 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 ));
Другие вопросы по тегам