Postgres 대소문자 구분
나는 모든 테이블과 대문자 열을 생성하는 도구를 통해 MSSql 서버 2008에서 Postgres에 있는 100개의 테이블을 가져왔습니다.이제 테이블에서 데이터 보기를 만들려면 예를 들어 - STD_TYPE_CODEs -
select * from STD_TYPE_CODES
다음과 같은 오류가 발생합니다.
ERROR: relation "std_type_codes" does not exist
LINE 1: select * from STD_TYPE_CODES
^
********** Error **********
ERROR: relation "std_type_codes" does not exist
SQL state: 42P01
Character: 15
테이블 이름에 따옴표를 붙일 수 있다는 걸 압니다.
select * from "STD_TYPE_CODES"
하지만 MSSql Server와 함께 작업했기 때문에 그런 문제는 없습니다.그래서 이것을 없앨 방법이 없을까요?제발 도와주세요.
포스트그레에서따옴표로 묶지 않은 SQL 이름은 대소문자를 구분하지 않습니다.따라서SELECT * FROM hello
그리고.SELECT * FROM HELLO
동등합니다.
그러나 따옴표로 묶은 이름은 대소문자를 구분합니다. SELECT * FROM "hello"
와 동등하지 않습니다.SELECT * FROM "HELLO"
.
따옴표로 묶은 이름과 따옴표로 묶지 않은 이름 사이에 "브리지"를 만들기 위해 따옴표로 묶지 않은 이름은 암시적으로 소문자로 구분됩니다.hello
,HELLO
그리고.HeLLo
와 동등합니다."hello"
하지만 그렇지는 않습니다."HELLO"
또는"HeLLo"
(아이고!)
따라서 Postgre에서 도면요소(테이블, 뷰, 프로시저 등)를 작성할 때SQL, 따옴표로 묶지 않거나 따옴표로 묶지만 소문자로 지정해야 합니다.
기존 테이블/뷰/등을 변환하려면 다음과 같은 방법을 사용할 수 있습니다.ALTER TABLE "FOO" RENAME TO "foo"
.
또는 MSSQL에서 덤프를 "Postgre"로 수정합니다.SQL 호환"(다음을 포함하도록 함)foo
상심한"foo"
하지만 아닌"FOO"
.
- 덤프 파일을 명시적으로 편집하는 방법 중 하나입니다. (리눅스를 선택할 수 있습니다.
sed -r 's/"[^"]+"/\L\0/g' dumpfile
그러나 이 명령은 문자열 리터럴의 텍스트도 수정할 수 있습니다.) - 또는 MSSQL에서 덤프를 가져올 때 몇 가지 옵션을 지정함으로써. (MSSQL에 그런 옵션이 있는지는 잘 모르겠지만, 사용한 적은 없지만, 아마도 그런 옵션이 존재해야 할 것입니다.)
언급URL : https://stackoverflow.com/questions/21796446/postgres-case-sensitivity
'source' 카테고리의 다른 글
명명된 기본 제약 조건과 명명된 외부 키 제약 조건을 사용하여 테이블 추가 열을 변경하는 방법은 무엇입니까? (0) | 2023.06.30 |
---|---|
관련이 없는 포인터의 동등한 비교가 참으로 평가될 수 있습니까? (0) | 2023.06.30 |
자바 API를 사용하여 mongodb를 "좋아요"로 쿼리하는 방법은 무엇입니까? (0) | 2023.06.30 |
열 참조를 사용하여 VBA의 셀 내용 지우기 (0) | 2023.06.30 |
파이어베이스와 파이어베이스 관리 npm 모듈의 차이점은 무엇입니까? (0) | 2023.06.30 |