2011-12-12 110 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