Я создал текстовый файл. Название этого файла - «test.txt», а содержание - первая часть ниже. Я также создал скрипт с именем insert.sh
.
Я запускаю команду с ./insert.sh test.txt
.
Если слова / строки заключены в одинарные кавычки, слова будут вставлены в столбцы. Также он будет вставлять числа без одинарных кавычек. У CSV, который я в конечном итоге буду использовать, не будет одинарных кавычек, и я не хочу менять данные
Как вставить содержимое переменной в одинарные кавычки внутри команды INSERT INTO
?
Я использую PSQL.
Текстовый файл, test.txt
'one','ten','hundred'
'two','twenty','twohundred'
Script, insert.sh:
#!/bin/bash
while read cell
do
name=$cell
echo "$cell"
####Insert from txt into table####
sudo -u username -H -- psql -d insert_test -c "
INSERT INTO first (ten, hundred, thousend) VALUES ($cell);
"
done < $1
как то так:
INSERT INTO first (ten, hundred, thousend) VALUES (INSERT" $cell "QUOTES);
UPDATE:
Я изменил код. Я добавил одинарные кавычки вокруг $ cell, как вы и предлагали.
#!/bin/bash
while read cell
do
name=$cell
echo "$cell"
####Insert from txt into table####
sudo -u username -H -- psql -d insert_test -c "
INSERT INTO first (ten, hundred, thousend) VALUES ('$cell');
"
done < $1
и я удалил кавычки из текстового файла, так как файл CSV, который я хочу использовать позже, не будет иметь одинарных кавычек.
новый текстовый файл.
один, десять, сто
два, двадцать, twohundred
и я получаю ошибку:
один, два, три
ERROR: INSERT has more target columns than expressions
LINE 2: INSERT INTO first (ten, hundred, thousend) VALUES ('one,two,...