2011-12-12 140 views
3

有人可以帮助我在这里,我不能让我的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 
+1

这两个命令如何不同?看起来和我一样... – gbn

+0

@Grimlockz命令是相等的oO –

+1

你使用MySQL吗? LOAD DATA LOCAL INFILE'会更容易。 – Kevin

回答

3

我不是很确定你的问题是什么。

,但如果问题是单引号,你可以试试这个

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') 

希望这是你想要的。

2

首先,它看起来像缺少插入语句末尾的分号。

尝试将SQL粘贴到一个mysql客户端会话 - 这会告诉你,如果你生成的SQL不正确。我怀疑mysql是否拒绝日期(如果它是日期列)。

我将使用printf - 它使代码更易于阅读 - 您有太多的引号难以阅读 - 尽可能使用小引号 - 只有在需要时才添加它们。

awk -F',' '{ printf("INSERT INTO Testing (Date,User,Usage) 
VALUES('%s', '%s', %d);\n", $1, $2, $3); }' file.csv