Я хочу обновить файл с rollno.и имя из CSV-файла, где имя и номер ролика разделены запятой - PullRequest
0 голосов
/ 17 октября 2018

Мой входной файл представляет собой CSV-файл, содержащий детали в виде:

2233,anish sharma
2234,azad khan
2235,birbal singh
2236,chaitanya kumar

Мой ожидаемый вывод - отображение двух деталей в двух отдельных столбцах.

Я выполнил следующий код.Полное имя не отображается.Часть после пробела не появляется.Какие изменения должны быть сделаны?

echo "Roll no updation"
tput cup 10 10
echo "Key in file name (rollno,name separated by comma)"
tput cup 12 10
read infile
for i in `cat $infile`
do
    rollno=`echo $i|cut -d , -f1`
    name=`echo $i|cut -d , -f2`
    psql -U postgres -A -t -F, -c "update student set name = '$name' where rollno = '$rollno' current record" >bq 
done

1 Ответ

0 голосов
/ 17 октября 2018

Ваш цикл должен быть написан таким образом

# comma separates records
IFS=,
cat "$infile" | while read rollno name; do
    psql -U postgres -A -t -F, -c \
        "update student set name = '$name'
         where rollno = '$rollno'" >bq
done

Но вы должны знать, что этот код подвержен SQL-инъекции.Используйте его только в том случае, если вы можете доверять источнику данных!

Любой ' в файле приведет к ошибкам и, что еще хуже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...