Adicionei alguns códigos ao final de um script bash que estou usando. O código mostrado aqui destina-se a copiar um csv para minha tabela postgres e, em seguida, remover colchetes, aspas e aspas duplas da coluna de título de test_table.
#copy csv to table
psql -U postgres -d ebay_sold -c "COPY test_table (item_number,title,url,price) FROM '/home/perl_experiments/xmlcsv.txt' (DELIMITER('|'))"
#Remove brackets, then double qotes, then single quotes from title column
psql -U postgres -d ebay_sold -c "UPDATE test_table SET title = regexp_replace(title, '[()]', '', 'g')"
psql -U postgres -d ebay_sold -c "UPDATE test_table SET title = regexp_replace(title, '"', '', 'g')"
psql -U postgres -d ebay_sold -c "UPDATE test_table SET title = regexp_replace(title, '''', '', 'g')"
A cópia para a tabela postgres funciona bem. Os colchetes de remoção, aspas duplas e aspas simples funcionam como esperado quando aplicados manualmente em postgres. No entanto, quando executo o script bash, recebo:
line 27: syntax error: unterminated quoted string
O erro que estou recebendo está relacionado à linha
psql -U postgres -d ebay_sold -c "UPDATE test_table SET title = regexp_replace(title, '"', '', 'g')"
Como eu digo este comando funciona bem quando executado manualmente quando estou logado no postgres, alguém tem alguma idéia porque eu estou recebendo esse erro quando eu executar o script no bash?