【问题标题】:How does one load IP addresses into Mysql Table from a CSV file?如何将 IP 地址从 CSV 文件加载到 Mysql 表中?
【发布时间】:2017-08-18 01:10:57
【问题描述】:

我正在尝试找到一种方法来加载我称之为 ipCompare_tbl 的 mysql 表,该表使用名为 myIPs.csv 的 CSV 文件中的 IP 地址。

ipCompare_tbl 中的字段是 ipStart 和 ipEnd。我还为名为 id 的主键生成器字段添加了 auto_incrementor。

我的目标是加载 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):不正确的整数值:第 1 行的列 'ipStart' 的“130.20.0.0”'

我正在为它运行以下代码:

    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;

【问题讨论】:

标签: mysql csv inet-aton


【解决方案1】:

将表架构更改为

CREATE TABLE ipCompare_tbl(
ipStart varchar(15) NOT NULL,
ipEnd varchar(15) NOT NULL,
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY ( id ));

【讨论】:

  • 尝试了 varchar 并返回:错误 1261 (01000):第 1 行不包含所有列的数据
  • 不是因为 varchar。您的加载脚本说您的字段应该用逗号分隔,但您在 csv 中使用制表符
【解决方案2】:

您需要在加载 CSV 时将 IP 地址转换为数字。

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了,因为它已经是数字了。

【讨论】:

  • 加载语句让我很伤心: ERROR 1064 (42000): You have an error in your SQL syntax;检查与您的 MySQL 服务器版本相对应的手册,以获取在 'FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY ';' 附近使用的正确语法IGNORE 1 LINES ' 在第 3 行
  • 我正在使用 David 建议的 varchar(15) 以及 Barmar 的以下负载: LOAD DATA INFILE '/Volumes/G- DRIVEmobileUSB/MySQL/myIPs.csv' INTO TABLE ipCompare_tbl (@ipstart , @ipend, id) 由 ',' 终止的字段由 '"' 以';' 终止的行忽略 1 行设置 ipStart = INET_ATON(@ipstart), ipEnd = INET_ATON(@ipend);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 2015-06-22
  • 2022-11-08
相关资源
最近更新 更多