Я работаю над проектом переноса данных с SQL Сервер на PostgreSQL. В рамках этого у нас есть несколько ежедневных заданий (Windows пакетные файлы), которые экспортируют и импортируют данные из одной базы данных в другую. Я конвертирую пакетные файлы (.bat) для поддержки PostgreSQL. Исходные пакетные файлы имеют служебную команду BCP для экспорта данных таблиц в текстовые файлы. Однако таблицы, сгенерированные командой BCP, имеют кодированный формат. Ниже приведена команда BCP, записанная в одном из командных файлов.
bcp "SELECT CarrierId,CarrierName,TransType FROM dbo.Carrier WHERE (CarrierId >= 1250) AND (TransType > 0) AND (BillProcessed=getdate())" queryout "D:\TransReports\Data\Carrier.txt" -N -S sql1.data.svr -T -E -c >>D:\TransReports\Logs\MonthlyExport%BILLDATE_YYYYMMDD%.log
Приведенная выше служебная команда BCP создает файл данных в кодированном формате. Теперь я конвертирую вышеупомянутую команду BCP в PostgreSQL экспорт данных в формат файла. Для этого я использую команду PostgreSQL "psql .exe" в командном файле. Ниже приведена команда, которую я написал для экспорта данных в формат файла.
"C:\Program Files (x86)\pgAdmin 4\v3\runtime\psql.exe" -h %PGHOST% -p 5432 -U %PGUSER% -d cps_prod01 -c "SET client_encoding = 'UTF8';"
chcp 65001
set PGCLIENTENCODING=utf-8
"C:\Program Files (x86)\pgAdmin 4\v3\runtime\psql.exe" -h %PGHOST% -p 5432 -U %PGUSER% -d trans_prod01 -t -o "D:\TransReports\Data\Carrier.txt" -A -c "SSELECT CarrierId,CarrierName,TransType FROM dbo.Carrier WHERE (CarrierId >= 8000) AND (TransType > 0) AND (BillProcessed=CURRENT_DATE)" >> D:\TransReports\Data\MonthlyExport%BILLDATE_YYYYMMDD%.log
Приведенная выше команда создает файл данных, но в текстовом формате. Мне нужно сгенерировать файл данных в закодированном формате, аналогичном исходным пакетным файлам (SQL Поддержка сервера). Я указал параметры для установки кодировки UTF-8, но файл данных все еще создается в текстовом формате.
Я не знаю, какой тип кодировки (UTF-8 или ??) делает утилита BCP использует для генерации файлов данных в кодированном формате. поэтому я не уверен, что использую правильные параметры с командой PostgreSQL "psql .exe" для генерации файлов закодированных данных, похожих на утилиту BCP.
Может кто-нибудь сообщить мне правильные Команда "psql .exe", которая генерирует файлы закодированных данных, которые совпадают с файлами, сгенерированными утилитой SQL BCP сервера. Заранее спасибо.