1

我的 MySQL 数据库中有下表:

CREATE  TABLE IF NOT EXISTS `virt100706_wie`.`banned_ips` (
  `idbanned_ips` INT NOT NULL AUTO_INCREMENT ,
  `ip` TEXT NOT NULL ,
  `date` DATE NOT NULL ,
  `reason` TEXT NULL ,
  PRIMARY KEY (`idbanned_ips`) )
ENGINE = InnoDB

我想将发送垃圾邮件、属于黑客、僵尸网络等的 IP 列表添加到它,并永久阻止它访问我的网站。

我在这里找到了一个很好的列表,但它以 CSV 格式发布,我需要以 SQL 格式(INSERT语句)。

我的问题是:是否有任何以 SQL 格式发布的垃圾邮件 IP 列表?或者是否有任何工具可以将 CSV 转换为 SQLINSERT格式?

提前致谢 !

4

2 回答 2

3

您可以从下载的 csv 文件中自己创建 SQL INSERT 语句。通过正确的“awk”命令将文件传输到文件中并将输出写入文件 - 见下文。比使用该文件作为您的 SQL INSERT 提要。

此命令将创建您需要的 SQL:

$ tail -n+2 spam-ip.com_10-28-2013.csv | awk 'BEGIN { FS = ", " } ; {print "INSERT INTO virt100706_wie.banned_ips (ip,date) VALUES (\"" $2 "\",now());"}' > spam-ip.com_10-28-2013.sql

示例管道输出:

$ tail spam-ip.com_10-28-2013.sql
INSERT INTO virt100706_wie.banned_ips (ip,date) VALUES ("61.191.191.154",now());
INSERT INTO virt100706_wie.banned_ips (ip,date) VALUES ("95.79.195.2",now());
INSERT INTO virt100706_wie.banned_ips (ip,date) VALUES ("194.8.75.54",now());
INSERT INTO virt100706_wie.banned_ips (ip,date) VALUES ("218.247.161.37",now());
INSERT INTO virt100706_wie.banned_ips (ip,date) VALUES ("94.75.193.168",now());
INSERT INTO virt100706_wie.banned_ips (ip,date) VALUES ("94.142.128.220",now());
INSERT INTO virt100706_wie.banned_ips (ip,date) VALUES ("212.157.248.198",now());
INSERT INTO virt100706_wie.banned_ips (ip,date) VALUES ("99.228.96.58",now());
INSERT INTO virt100706_wie.banned_ips (ip,date) VALUES ("92.112.40.145",now());
INSERT INTO virt100706_wie.banned_ips (ip,date) VALUES ("118.35.46.144",now());
$

比类似的东西:

$ mysql -u XXX -p virt100706_wie < spam-ip.com_10-28-2013.sql
于 2013-10-28T11:06:32.613 回答
2

我有时不得不做这种事情。这是一项值得为其编写脚本的任务。通常我不写脚本——我会使用 emacs 键盘宏,但如果你的编辑器不支持键盘宏,这里有另一种方法:

  • 在电子表格程序中打开 CSV
  • 编写一个公式列,在正确位置替换值(假设 IP 地址在 A 列中)

    ="INSERT INTO virt100706_wie.banned_ips (ip,date) VALUES ('" & A1 & "',NOW());"

  • 填写公式

然后将结果复制并粘贴到编辑器中并保存为.sql文件。

于 2013-10-28T10:39:29.507 回答