如何在 mysql 中创建模式以及如何将现有记录导入数据库?

how to create schema in mysql and how to import existing record into the database?

我的文件名称数据包含我的 linux 机器中的信息

  2 Mar 1 1234 141.98.80.59
  1 Mar 1 1234 171.239.249.233
  5 Mar 1 admin 116.110.119.156
  4 Mar 1 admin1 177.154.8.15
  2 Mar 1 admin 141.98.80.63
 

我在 Mysql 中创建了一个名称为“invaliduser”的数据库,并在其中创建了 table“invalidlog”,并且我创建了一个这样的模式

CREATE TABLE invalidlog(
    Count INT,
    Month CHAR(10),
    Date INT(10),
    User VARCHAR(50),
    IP_ADD INT UNSIGNED
);

当我尝试使用以下命令在 mysql 中导入数据文件时

mysql -u root -p invaliduser < data

显示错误:

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2 Mar 1 1234 141.98.80.59 1 Mar 1 1234 171.239.249.233 5 Mar 1 admin' at line 1

这是创建架构的正确方法吗?

您不能简单地将数据导入 table,您需要从文件生成有效的 SQL 语法。这可以用 awk:

awk -v sinq="'" '{ print "INSERT INTO invalidlog (Count,Month,Date,User,IPADD) VALUES ("sinqsinq","sinqsinq","sinqsinq","sinqsinq","sinqsinq");"}' file

将变量 sinq 设置为单引号,然后将其与 space 分隔字段一起使用以生成所需的 sql.

输出:

INSERT INTO invalidlog (Count,Month,Date,User,IPADD) VALUES ('2','Mar','1','1234','141.98.80.59');
INSERT INTO invalidlog (Count,Month,Date,User,IPADD) VALUES ('1','Mar','1','1234','171.239.249.233');
INSERT INTO invalidlog (Count,Month,Date,User,IPADD) VALUES ('5','Mar','1','admin','116.110.119.156');
INSERT INTO invalidlog (Count,Month,Date,User,IPADD) VALUES ('4','Mar','1','admin1','177.154.8.15');
INSERT INTO invalidlog (Count,Month,Date,User,IPADD) VALUES ('2','Mar','1','admin','141.98.80.6');

然后awk命令可以与mysql集成:

mysql -u root -p pass invaliduser <<< "$(awk -v sinq="'" '{ print "INSERT INTO invalidlog (Count,Month,Date,User,IPADD) VALUES ("sinqsinq","sinqsinq","sinqsinq","sinqsinq","sinqsinq");"}' file)"