Замечание: я сам наткнулся на эту проблему в MS Windows, и у меня уже было что-то, что можно вставить в psql, используя его стандартный ввод Я должен был объединить входы. И вот где это становится действительно сложно. Помимо ответа Эрвина, я подумал поделиться несколько ценным, на мой взгляд, примером, поэтому я публикую его здесь как ответ на тот случай, если кому-то еще понадобится «использовать переменную» \copy
при передаче данных в stdin на платформе Windows.
Если вы хотите скопировать некоторые данные из stdin и одновременно использовать «переменную» \copy
, все может оказаться непросто, если вы не можете использовать скобки. Ниже приведен пример того, как это можно сделать. Обратите внимание на тройной (sic!) Символ вставки в скобках для имен столбцов в скобках
@echo off
set TBL=wd
(
echo truncate %TBL%;
echo \copy %TBL% (depth,path,name,created,accessed,modified,size^^^) from stdin csv
C:\msys64\usr\bin\find ^
"e:/somepath" ^
-type f -printf "%%d,\"%%h\",\"%%f\",\"%%t\",\"%%a\",\"%%c\",%%s\n"
) | "C:\Program Files\PostgreSQL\9.4\bin\psql.exe" -h some.server -U user dbname