AWK CSV-файл для вывода файла SQL - PullRequest
3 голосов
/ 12 декабря 2011

Может ли кто-нибудь помочь мне здесь, так как я не могу заставить свою команду awk вывести несколько простых 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

Ответы [ 2 ]

4 голосов
/ 12 декабря 2011

Я не очень уверен, в чем твоя проблема.

, но если проблема заключается в одинарных кавычках, вы можете попробовать это

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 голосов
/ 12 декабря 2011

Сначала кажется, что в конце инструкции вставки пропущена точка с запятой.

Попробуйте вставить SQL в сеанс клиента mysql - это покажет вам, если вы сгенерировали SQL неправильно.Я подозреваю, что mysql отклоняет дату (если это столбец даты).

Я бы использовал printf - он делает код проще для чтения - у вас так много кавычек, что его трудно читать - использоватькак можно меньше цитат - добавляйте их только тогда, когда это необходимо.

awk -F',' '{ printf("INSERT INTO Testing (Date,User,Usage) 
VALUES('%s', '%s', %d);\n", $1, $2, $3); }' file.csv
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...