2013-04-30 20 views
5

tôi đang tạo ra một bảng bên ngoài như hình dưới đâytạo bảng bên ngoài với tiêu đề trong Netezza (postgres)

CREATE EXTERNAL TABLE '~\test.csv' 
USING (DELIMITER ',' Y2BASE 2000 ENCODING 'internal' REMOTESOURCE 'ODBC' ESCAPECHAR '\') 
AS SELECT * FROM TEST_TABLE; 

Nó hoạt động tốt. Câu hỏi của tôi là:

Có cách nào chúng ta có thể đặt tên cho các giá trị tiêu đề dưới dạng tên cột trong tệp test.csv không? Có thể trong Netezza hoặc postgres.

Tôi nghĩ rằng chúng tôi có thể làm điều đó bằng cách sử dụng COPY, tuy nhiên tôi muốn làm điều đó bằng cách sử dụng lệnh BÊN NGOÀI.

Cảm ơn

Trả lời

1

Nó không đẹp, và nó có thể sẽ thêm một số lượng nguyên cần thiết để truy vấn, nhưng bạn có thể làm điều gì đó như thế này:

CREATE EXTERNAL TABLE ... AS 
SELECT ColumnId, OtherColumn 
FROM (
    SELECT FALSE as IsHeader, ColumnId::VARCHAR(512), OtherColumn::VARCHAR(512) 
    FROM TEST_TABLE 
    UNION ALL 
    SELECT TRUE as IsHeader, 'ColumnId', 'OtherColumn' 
) x 
ORDER BY IsHeader DESC 
0

Đây là một ví dụ khác, cùng ý tưởng tương tự rằng qSlug đã ...

CREATE EXTERNAL TABLE 
'C:\HEADER_TEST.csv' USING 
(DELIMITER '|' ESCAPECHAR '\' Y2BASE 2000 REMOTESOURCE 'ODBC') AS 

--actual query goes here. Leave the 'data' field on there. 
(select store_name, address1, 'data' 
from yourtable 
limit 10) 
union 
--field names go here. Leave the 'header' field on there. 
select 'store_name', 'address1', 'header' 
from _v_dual 
order by 3 desc 

bạn có thể sau đó chỉ cần xóa các cột cuối cùng từ file csv của bạn.

+0

Chỉ hoạt động đối với tất cả dữ liệu ký tự hoặc truyền tất cả dữ liệu thực của bạn sang char trước. – Chris

2

Trong phiên bản 7.2 của Netezza, bây giờ bạn có thể chỉ định tùy chọn IncludeHeader để đạt được điều này với các bảng bên ngoài.

Đây là tài liệu here

0

Có thực sự là một cách để bao gồm tiêu đề trong file nếu bạn có phiên bản Netezza 7.2 hoặc cao hơn.

Tùy chọn này là 'đầu đề', nhưng nó không giống như "Bàn làm việc" của Aginity Workbench làm nổi bật 'như là một tùy chọn (ít nhất là trong phiên bản của tôi: 4.8).

CREATE EXTERNAL TABLE '~\test.csv' 
    USING 
( 
DELIMITER ',' 
Y2BASE 2000 
ENCODING 'internal' 
REMOTESOURCE 'ODBC' 
ESCAPECHAR '\' 
/****THIS IS THE OPTION ****/ 
INCLUDEHEADER 
) 
     AS 
    SELECT * 
    FROM TEST_TABLE; 

Bạn sẽ nhận thấy rằng Aginity không áp dụng nổi bật để lựa chọn nhưng nó sẽ thực hiện và viết một tiêu đề để hàng đầu tiên.