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

标签 mysql sql centos

我有名称数据的文件,其中包含我的 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”的数据库,在里面我创建了表“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


这是创建模式的正确方法吗?

最佳答案

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

awk -v sinq="'" '{ print "INSERT INTO invalidlog (Count,Month,Date,User,IPADD) VALUES ("sinq$1sinq","sinq$2sinq","sinq$3sinq","sinq$4sinq","sinq$5sinq");"}' file
将变量 sinq 设置为单引号,然后将其与空格分隔的字段一起使用以生成所需的 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 ("sinq$1sinq","sinq$2sinq","sinq$3sinq","sinq$4sinq","sinq$5sinq");"}' file)"

关于mysql - 如何在 mysql 中创建模式以及如何将现有记录导入数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66441998/

相关文章:

WLAN 上的 mysql 客户端

mysql - 如何搜索逗号分隔值

MySQL,最多 3 个值

MySQL 设计表

Apache 没有启动

caching - 使用 Varnish 更改 header 中的引荐来源网址

linux - 了解 CentOS 7 上的性能结果

mysql - CakePHP 关联困惑

sql - 在 Management Studio 中查看表列表所需的权限

sql - 在 IF EXISTS 语句之前使用 @@ROWCOUNT 时总是获取 0 行