У меня есть html-шаблон в таблице postgresql, который мне нужно получить и обновить из cmdline.
Моя идея состояла в том, чтобы использовать Makefile для обновления поля.
Я понял, что могу использовать эту команду для извлечения файла, используя функцию в Makefile.
psql_conn=psql -U ${pg_user} -p $(pg_port_staging) -h $(pg_host) -d $(pg_database)
psql_shell=--tuples-only -P format=unaligned
fetch: ## fetch a given template id=XX
ifndef id
@echo "Missing id=XX"
@$(MAKE) list
@exit 1
else
$(call fetch_template,$(id),$(call fetch_name,$(id)))
endif
define fetch_template
$(shell echo "SELECT template FROM pdf_templates WHERE id = $(1)" | ${psql_conn} $(psql_shell} > $(2).html)
endef
define fetch_name
...
endef
Однако у меня проблема с вставкой этого шаблона в таблицуопять после редактирования.
Пример файла шаблона может быть таким, поэтому он будет содержать + { $
и символы UTF8.
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" xml:lang="en" lang="en">
<head>
<style type="text/css" th:inline="text">
body { margin: 0; font-family: Verdana, Geneva, sans-serif; font-size: 11px; }
a { text-decoration: none; }
</style>
</head
<body>
<div th:if="${hasAddresses}">
<h2>Adresser:</h2>
<article th:each="offerElement: ${offer.getElementsWithData().?[specification?.get('elementType') == 'fiber']}">
<div th:with="address=${offerElement.getParsedData().get()}">
<br /><span th:text="${address['deliveryStreet']}"></span> <span th:text="${address['deliveryHouseNumber']}"></span>
<span th:text="${address['deliveryFloor']}"></span> <span th:text="${address['deliveryDoor']}"></span>
<br /><span th:text="${address['deliveryZipCode']}"></span> <span th:text="${address['deliveryCity']}"></span>
<br /><span th:text="${address['deliveryCountry']}"></span>
</div>
</article>
</div>
</body>
</html>
Это удаленный сервер, к которому у меня нет доступа к оболочке. Поэтому нельзя использовать pg_read_file
. Я работал над идеей использования \lo_import File.html
, который загружает файл на сервер, но не может понять, как содержимое можно записать в таблицу. , а не просто появляются в таблице LargeObject.
Другим решением может быть использование Ruby или Python, но я хочу сделать его максимально простым.
Версия psql i 9.4, однако на сервере запущен сервер postgresql 10.4.