AWK CSV文件到SQL文件输出
问题描述:
有人可以帮助我在这里,我不能让我的awk命令输出一些简单的3列CSV到SQLAWK CSV文件到SQL文件输出
CSV
01Aug2011,user,12
02Aug2011,userb,34
AWK
我知道这个工作对我来说
awk -F',' '{ print "INSERT INTO Testing (`Date`,`User`,`Usage`) VALUES (" "'"$1"'""," """'"$2"'""," """'"$3"'"")" ""}' new.csv > output.log
,但不是这一个
awk -F',' '{ print "INSERT INTO Testing (`Date`,`User`,`Usage`) VALUES (" "`"$1"`""," """`"$2"`""," """`"$3"`"")" ""}' new.csv > output.log
答
我不是很确定你的问题是什么。
,但如果问题是单引号,你可以试试这个
awk -F',' '{ printf "INSERT INTO Testing (\x27\Date\x27,\x27User\x27,\x27Usage\x27) VALUES (\x27%s\x27,\x27%s\x27,\x27%s\x27)",$1,$2,$3;print ""}' yourFile
与例如输入线,输出是:
INSERT INTO Testing ('Date','User','Usage') VALUES ('01Aug2011','user','12')
INSERT INTO Testing ('Date','User','Usage') VALUES ('02Aug2011','userb','34')
希望这是你想要的。
答
首先,它看起来像缺少插入语句末尾的分号。
尝试将SQL粘贴到一个mysql客户端会话 - 这会告诉你,如果你生成的SQL不正确。我怀疑mysql是否拒绝日期(如果它是日期列)。
我将使用printf - 它使代码更易于阅读 - 您有太多的引号难以阅读 - 尽可能使用小引号 - 只有在需要时才添加它们。
awk -F',' '{ printf("INSERT INTO Testing (Date,User,Usage)
VALUES('%s', '%s', %d);\n", $1, $2, $3); }' file.csv
这两个命令如何不同?看起来和我一样... – gbn
@Grimlockz命令是相等的oO –
你使用MySQL吗? LOAD DATA LOCAL INFILE'会更容易。 – Kevin