1

我有一个doveadm由制表符分隔的命令输出,如下所示:

Username        Quota name      Type    Value   Limit   %
user2@example2.com    User quota      STORAGE 203032  1024000 19
some@example.com    User quota      MESSAGE 816     -       0
other@ex.com    User quota      STORAGE 116873  1024000 11
email@ex.com    User quota      MESSAGE 235     -       0

我怎样才能像这样将每一行传输到 SQL 查询?

INSERT INTO quota (username, quota, type, value, limit, percentage) VALUES ('user2@example2.com', 'User quota', 'STORAGE', 203032, 1024000, 19);
...
4

1 回答 1

1

我会用 awk 说:

awk -F'\t' 'NR > 1 {printf "INSERT INTO quota (username, quota, type, value, limit, percentage) VALUES (\047%s\047, \047%s\047, \047%s\047, %d, %d, %d);\n", $1, $2, $3, $4, $5, $6}' file

结果将如下所示:

INSERT INTO quota (username, quota, type, value, limit, percentage) VALUES ('user2@example2.com', 'User quota', 'STORAGE', 203032, 1024000, 19);
INSERT INTO quota (username, quota, type, value, limit, percentage) VALUES ('some@example.com', 'User quota', 'MESSAGE', 816, 0, 0);
INSERT INTO quota (username, quota, type, value, limit, percentage) VALUES ('other@ex.com', 'User quota', 'STORAGE', 116873, 1024000, 11);
INSERT INTO quota (username, quota, type, value, limit, percentage) VALUES ('email@ex.com', 'User quota', 'MESSAGE', 235, 0, 0);

希望这可以帮助。

于 2018-01-29T00:30:24.017 回答