\set path '''c:\\server\\data\\'''
COPY paymentMethods (name,regexString) FROM :path || 'paymentMethods.csv' WITH (FORMAT csv, HEADER true);
COPY priceLevels (name) FROM :path || 'priceLevels.csv' WITH (FORMAT csv, HEADER false);
하지만를! COPY
명령은 표현식이 아닌 경로에 대한 리터럴 문자열을 예상하므로 실제로 경로를 지정해야합니다. 이 정보로 등 SELECT
, INSERT
, UPDATE
,
같은 명령을 위해 일 것입니다주의 만 파벨가 지적했듯이, psql
변수를 사용하고, psql
의 변수에 문자열을 연결할 수 있습니다. (PostgreSQL의의 서버로 보내드립니다)
\set path 'c:\\server\\data\\'
\set paymentMethodsPath :path 'paymentMethods.csv'
\set priceLevelsPath :path 'priceLevels.csv'
COPY paymentMethods (name,regexString) FROM :'paymentMethodsPath' WITH (FORMAT csv, HEADER true);
COPY priceLevels (name) FROM :'priceLevels' WITH (FORMAT csv, HEADER false);
생성합니다 : 좋은 해결책, 즉 SQL 식에 문자열로 변수를 삽입 psql
의 :'var'
구문을 사용하는 것입니다
COPY paymentMethods (name,regexString) FROM E'c:\\server\\data\\paymentMethods.csv' WITH (FORMAT csv, HEADER true);
COPY priceLevels (name) FROM E'c:\\server\\data\\priceLevels.csv' WITH (FORMAT csv, HEADER false);
이 :'var'
구문은 (지금이 도입 된 하나 기억하지 않습니다) 모든 psql
버전에서 작동하지 않습니다,하지만 이전 버전에 대한 당신은 쉽게 달러 인용 사용할 수 있습니다
\set path 'c:\\server\\data\\'
\set paymentMethodsPath :path 'paymentMethods.csv'
\set priceLevelsPath :path 'priceLevels.csv'
COPY paymentMethods (name,regexString) FROM $$:paymentMethodsPath$$ WITH (FORMAT csv, HEADER true);
COPY priceLevels (name) FROM $$:priceLevels$$ WITH (FORMAT csv, HEADER false);
을또는 작은 따옴표로 탈출 : 그것은
\set path 'c:\\server\\data\\'
\set paymentMethodsPath 'E''':path'paymentMethods.csv'''
\set priceLevelsPath 'E''':path'priceLevels.csv'''
COPY paymentMethods (name,regexString) FROM :paymentMethodsPath WITH (FORMAT csv, HEADER true);
COPY priceLevels (name) FROM :priceLevels WITH (FORMAT csv, HEADER false);
즉.
그래서, 당신의 대답은 내가 원한 것은 psql 스크립트에서 불가능하다는 것입니다. – mark
업데이트가 가능한 답변을 참조하십시오 –