AWK csv文件到sql文件输出

有人可以帮我在这里,因为我不能让我的awk命令输出一些简单的3列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