mysql - awk 从 csv 创建批量 MySQL 插入

标签 mysql linux sed awk

我有一个包含数据的巨大 CSV 文件,我正在尝试生成 mySQL 批量插入语句。

CSV格式的数据如下

90927597|1356976813998|1356976814177|1356976817457|17756249959|17756249959|18663111085|17753220005|1090917|1775624995900|A
90927599|1356976813098|1356976814797|1356976823738|12562175250|12562175250|12566502514|12565207040|1890362|1256217525000|A
90927602|1356976813098|1356976814797|1356976823738|12562175250|12562175250|12566502514|12565207040|1890362|1256217525000|A
90927603|1356976813098|1356976814797|1356976823738|12562175250|12562175250|12566502514|12565207040|1890362|1256217525000|A

我想创建一个批量插入,将每 2 行组合成一个插入语句

具有所需输出的 ​​MySQL 语句

insert into data (90927597,1356976813998,1356976814177,1356976817457,17756249959,17756249959,18663111085,17753220005,1090917,1775624995900,A,90927599,1356976813098,1356976814797,1356976823738,12562175250,12562175250,12566502514,12565207040,1890362,1256217525000,A);
insert into data (90927602,1356976813098,1356976814797,1356976823738,12562175250,12562175250,12566502514,12565207040,1890362,1256217525000,A, 90927603,1356976813098,1356976814797,1356976823738,12562175250,12562175250,12566502514,12565207040,1890362,1256217525000,A);

谢谢

最佳答案

$ cat tst.awk
BEGIN{ FS="|"; OFS="," }
{
    $1 = $1
    head = ( (NR%2) == 1 ? tail "insert into data (" : "," )
    printf "%s%s", head, $0
    tail = ");\n"
}
END { printf "%s", tail }

$ awk -f tst.awk file
insert into data (90927597,1356976813998,1356976814177,1356976817457,17756249959,17756249959,18663111085,17753220005,1090917,1775624995900,A,90927599,1356976813098,1356976814797,1356976823738,12562175250,12562175250,12566502514,12565207040,1890362,1256217525000,A);
insert into data (90927602,1356976813098,1356976814797,1356976823738,12562175250,12562175250,12566502514,12565207040,1890362,1256217525000,A,90927603,1356976813098,1356976814797,1356976823738,12562175250,12562175250,12566502514,12565207040,1890362,1256217525000,A);

关于mysql - awk 从 csv 创建批量 MySQL 插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16544747/

相关文章:

mysql - 如何在不使用 JSON 模块的情况下使用 Perl 打印 JSON 数据?

php - Propel 1 中按 NULL 排序

mysql - Percona Xtrabackup 在备份期间失败

java.io.IOException : The pipe is being closed is thrown on Windows but works fine on Linux 异常

linux - 如何使用fuse挂载远程计算机中的目录?

linux - 在 Jenkins 中运行 Selenium Webdriver 时出错

linux - SED 替换匹配行,但如果它被注释掉则不会

php - 错误 : SQLSTATE[HY000] [2002] No such file or directory

linux - 您可以使用 sed 删除匹配项和之后的某些行吗?

regex - Sed 在搜索冒号时添加前缀