2013-04-30 16 views
5

tworzę tabelę zewnętrznego jak pokazano poniżejutworzyć tabelę zewnętrzną z nagłówkami w Netezza (postgres'owy)

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

To działa dobrze. Moje pytanie brzmi:

Czy istnieje sposób, abyśmy mogli nazwać wartości nagłówków jako nazwy kolumn w pliku test.csv? Czy to możliwe w Netezza lub postgres.

Myślę, że możemy to zrobić za pomocą polecenia KOPIUJ, ale chcę to zrobić za pomocą polecenia ZEWNĘTRZNA TABELA.

Dzięki

Odpowiedz

1

To nie dość, i to prawdopodobnie dodać pewną ilość narzutu do zapytania, ale można zrobić coś takiego:

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

Jest to kolejny przykład, wzdłuż tej samej idei że qSlug dał ...

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 

Możesz wtedy po prostu usunąć ostatnią kolumnę z pliku csv.

+0

Działa tylko dla wszystkich danych znakowych lub rzuca wszystkie twoje prawdziwe dane na znak pierwszy. – Chris

2

W wersji 7.2 Netezza można teraz określić opcję IncludeHeader, aby osiągnąć to za pomocą zewnętrznych tabel.

Jest to udokumentowane here

0

Tam faktycznie jest sposobem na to nagłówek w pliku, jeśli masz wersję 7.2 lub wyższa Netezza.

Ta opcja to "nagłówek dodatkowy", ale nie wygląda tak, jak w przypadku programu Aginity Workbench podświetla się "włączanie nagłówka" tak, jakby była to opcja (przynajmniej w mojej wersji: 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; 

Zauważysz, że Aginity nie stosuje podświetlania opcji, ale wykona i napisze nagłówek do pierwszego wiersza.