Trong PostgreSQL, các tên chưa được trích dẫn không phân biệt chữ hoa chữ thường. Vì vậy, SELECT * FROM hello
và SELECT * FROM HELLO
tương đương.
Tuy nhiên, các tên được trích dẫn có phân biệt chữ hoa chữ thường. SELECT * FROM "hello"
là không tương đương với SELECT * FROM "HELLO"
.
Để tạo "cầu nối" giữa tên được trích dẫn và tên không được trích dẫn, tên không được trích dẫn hoàn toàn là chữ thường, do đó hello
, HELLO
và HeLLo
tương đương với "hello"
, nhưng không phải là "HELLO"
hoặc "HeLLo"
(OOPS!).
Do đó, khi tạo các thực thể (bảng, dạng xem, thủ tục, v.v.) trong PostgreSQL, bạn nên chỉ định chúng hoặc không được trích dẫn hoặc được trích dẫn nhưng-viết thường.
Để chuyển đổi các bảng / chế độ xem / v.v. hiện có, bạn có thể sử dụng một cái gì đó như ALTER TABLE "FOO" RENAME TO "foo"
.
Hoặc, cố gắng sửa đổi kết xuất từ MSSQL để làm cho nó "Tương thích với PostgreSQL" (để nó sẽ chứa foo
s hoặc "foo"
s chứ không phải "FOO"
s).
- Bằng cách chỉnh sửa tệp kết xuất một cách rõ ràng. (Nếu đang sử dụng Linux, bạn có thể thực hiện
sed -r 's/"[^"]+"/\L\0/g' dumpfile
- tuy nhiên, hãy lưu ý rằng lệnh này cũng có thể sửa đổi văn bản trong chuỗi ký tự.) - Hoặc bằng cách chỉ định một số tùy chọn khi nhận kết xuất từ MSSQL. (Tôi không chắc liệu có các tùy chọn như vậy trong MSSQL hay không, chưa bao giờ sử dụng nó, nhưng có lẽ các tùy chọn như vậy nên tồn tại.)