2013-01-16 5 views

답변

31

내가 어떻게하는지 설명하기 전에, 나는 강력하게을 제안하지 않았다. 테이블 또는 열 이름 등 인용되지 않은 경우의 PostgreSQL에서

:

SELECT name FROM mytable WHERE id = 10 

경우 :

SELECT Name FROM MyTable WHERE ID = 10 

실제로 자동 제 경우을 낮추기 때문에, 상기 쿼리 절첩은 동일 모든 이름을 대문자로 변환하면이 문 은 작동하지 않습니다 :

,841,

당신은해야합니다 따옴표이 쿼리의 모든 하나의 이름은 그것이 작동되도록하려면 다음, 다른 한편으로는, 당신은 단지 계약을 표준 PostgreSQL을 소문자를 사용하는 경우

SELECT "NAME" FROM "MYTABLE" WHERE "ID" = 10 

, 당신은 어떤 경우를 사용할 수 있습니다 당신이 어떤 이름을 인용하지 않는 한 그것은 효과가있을 것입니다. 당신은 여전히 ​​대문자로 변환하는 고집


지금, 당신은 파일에 데이터베이스 스키마를 덤프하여 pg_dump --schema-only를 사용하는 것을 할 수 있습니다.

이 작업을 수행 한 후 모든 CREATE TABLE 문을 확인하고이 덤프를 기반으로 적절한 ALTER TABLE 문을 구성하십시오.이를 수행하려면 스크립트 (Perl 또는 Python)를 작성해야합니다.

또는 INFORMATION_SCHEMA.TABLES 및/또는 INFORMATION_SCHEMA.COLUMNS을 읽고 적절한 ALTER TABLE 문을 작성하고 실행할 수 있습니다.

+0

'CREATE TABLE'에있는 이중 따옴표 열 이름은 따옴표 문자를 포함하는 열 이름을 만듭니다. 그러나 여전히 * 모든 것이 소문자입니다. – weberc2

+0

@ weberc2 : 이것은 단순히 거짓입니다. SQLFiddle proof : http://sqlfiddle.com/#!17/de97a/1 – mvp

+0

내 텍스트 편집기에 스마트 인용 부호를 삽입 한 것처럼 보입니다. 내 실수. – weberc2

관련 문제