2012-01-19 27 views
7

Tôi đang sử dụng SQSH (phiên bản 2.1) trên Ubuntu 10.04 để kết nối với một cơ sở dữ liệu MSSQL sử dụng một lệnh như thế này:truy vấn SELECT trên bảng với một không gian trong tên sử dụng SQSH

sqsh -S server -U user -P password -D database 

Tôi có một bảng được gọi là Bảng của tôi, nhưng tôi không thể tìm thấy một cách để chạy một truy vấn SELECT trên nó. Đây là những gì tôi đã thử cho đến thời điểm này:

SELECT * FROM 'My Table' 
go 

Đầu ra: Cú pháp không chính xác gần 'Bảng của tôi'. (Tôi nhận được cùng một dấu ngoặc kép)

\set t="My Table" 
SELECT * FROM $t 
go 

Đầu ra: Tên đối tượng không hợp lệ 'My'. (Thật lạ lùng vì nếu tôi làm \ echo $ t, tôi lấy tên đầy đủ của bảng)

SELECT * FROM My\\ Table 
go 

Đầu ra: Tên đối tượng không hợp lệ 'My'.

SELECT * FROM [My Table] 
go 

Dữ liệu Unicode không thể gửi cho khách hàng sử dụng DB-Library (ISQL) hoặc ODBC phiên bản 3.7 hoặc cũ hơn.

Lệnh cuối cùng này hoạt động tốt đối với tên bảng mà không có bất kỳ dấu cách nào.

CẬP NHẬT: các lệnh khác hoạt động tốt, ví dụ: Tôi có thể tải xuống mô tả bảng với:

SELECT column_name,data_type FROM information_schema.columns WHERE table_name = 'My Table' 
go 
+0

Bạn đang sử dụng Sybase và bạn có một bảng với các không gian trên tên? –

+1

Không, đó là cơ sở dữ liệu MSSQL. Rất tiếc, có thể các thẻ đã gây hiểu nhầm. – jackocnr

+0

Bạn có thể kiểm tra điều gì sẽ xảy ra nếu bạn xóa không gian khỏi tên bảng? –

Trả lời

2

Cuối cùng tìm thấy the solution. Tôi phải thêm 2 dòng sau vào /etc/freetds/freetds.conf

tds version = 8.0 
client charset = UTF-8 
8

Đặt tên bảng trong dấu ngoặc kép không hoạt động trong MS SQL Server.
Cách đúng là sử dụng [ ]:

SELECT * FROM [My Table] 
+0

Cảm ơn, nhưng như tôi đã nói trong câu hỏi, điều đó không hiệu quả với tôi. Tôi đã thiếu một số thiết lập cấu hình (xem câu trả lời của tôi), và một khi tôi đã có, truy vấn SELECT làm việc với dấu ngoặc kép hoặc dấu ngoặc vuông. – jackocnr

2

Im sử dụng SQL 2008R2, và các công việc sau cho tôi

['table name'] 
Các vấn đề liên quan