2013-05-06 1 views
1

Netezza IDE에서 쿼리를 실행하고 결과를 CSV 파일 형식으로 내보내려고합니다. 쉘이나 다른 스크립트를 사용하여 우리가 똑같이 할 수있는 API가 있습니까?Netezza에서 SQL 쿼리 결과를 내보낼 수 있습니까?

누구나 알고있는 Netezza에서 사용할 수있는 쉘이 있습니까? SQL 쿼리를 실행하고 결과를 텍스트 파일이나 CSV 파일 (선호)로 가져올 수 있습니까?

답변

1

태그 중에 powershell이 ​​있으므로 Windows에서 작동하는 도구가 필요하다고 가정합니다. Netezza를위한 명령 행 클라이언트 - nzsql는 - 윈도우를 사용할 수 없습니다하지만 당신은 네티와 함께 ​​사용할 수있는 타사 명령 줄 SQL 클라이언트의 커플/쉘이 :

  • jisql, JDBC 클라이언트; 매개 변수는 SquirreL과 동일합니다.
  • dbish, perl 기반 ODBC 클라이언트. 당신의 ODBC DSN 뉴질랜드를 호출하는 경우, 명령 줄

dbish dbi:ODBC:NZ user password

두 도구는 CSV 파일로 출력 결과에 대한 옵션이 될 것입니다.

1

Netezza에는 클라이언트 응용 프로그램이 NZ에서 데이터를 가져 오는 데 사용할 수 있어야하는 ODBC 드라이버가 있습니다.

nzsql 명령 줄 조회 도구를 사용하여 데이터를 파일에 저장하는 쉘 스크립트를 작성할 수도 있습니다. 나는 문자열 필드의 연결 및 쉼표 문자로 SQL을 작성하는 경향이

SELECT FIELD1||','||FIELD2 

이 당신이 MPP를 활용할 수 있기 때문에 종종 빠르게 클라이언트 응용 프로그램보다에서 데이터베이스를 연결 한가, 그 일을 수행 데이터베이스의 성격.

나는 성공적으로 네티에서 데이터를 끌어 PowerShell을 통해 ODBC 연결을 사용하고 있습니다 :

$conn = new-object system.data.odbc.odbcconnection 
$conn.connectionstring = "Driver={NetezzaSQL};servername=*SERVERNAME*;port=*PORT*;database=*DATABASE*;username=*USERNAME*;password=*PASSWORD*" 
$conn.open() 

$cmd = new-object System.Data.Odbc.OdbcCommand 
$cmd.CommandText = [System.IO.File]::ReadAllText("C:\SQL\MySQLFile.sql") 
$cmd.connection = $conn 
$cmd.CommandTimeout = 0 

$datareader = $cmd.ExecuteReader(); 
$stream = new-object System.IO.StreamWriter("C:\SQL\MyExportFile.csv", TRUE) 

while ($datareader.Read()) { $stream.WriteLine($datareader[0]) } 
$stream.close() 
$datareader.close() 
$conn.close() 

는 SQL 자체가 나를 위해 필드 사이에 쉼표를 추가합니다.

+0

동일한 코드를 실행하면서 물론 파일 경로를 사용하면 $ 스트림 행에 오류가 발생합니다. ','다음에 누락 된 표현식이 있습니다. –

+1

TRUE 대신 TRUE를 시도하십시오. 이 코드를 작성한 이후로 너무 오래되었습니다 ... –

1

CREATE EXTERNAL TABLE을 사용하여 Netezza에서 원격 시스템으로 데이터를 언로드 할 수 있습니다. 자세한 내용은 Netezza 데이터로드 가이드 5 장을 참조하십시오.

그러나 가장 쉬운 방법은 SQL Squirrel과 JDBC를 사용하는 것입니다. 여기에 SQL 다람쥐 다운로드 :

http://squirrel-sql.sourceforge.net/

는 네티 JDBC 드라이버 및 설치 연결을 가져옵니다. NZ 인스턴스에 연결하면 SQL 창으로 이동하여 SQL 쿼리를 작성하십시오. 기본적으로 100 행만 반환합니다. 그러나 결과를 마우스 오른쪽 버튼으로 클릭하면 "CSV로 내보내기"라는 옵션이 있습니다. 해당 옵션을 선택하고 "전체 테이블 내보내기"확인란이 선택되어 있는지 확인하십시오. 이것은 전체를 끌어낼 것입니다.

2

Aginity Workbench for Netezza를 사용하면 쉽게 수행 할 수 있습니다. 응용 프로그램은 Windows에서 실행되는 IDE입니다. 또한 Windows의 cmd 또는 bat 파일에서 실행할 수 있도록 명령 줄 인터페이스를 제공합니다. ODBC 또는 OleDb 드라이버를 사용하여 Netezza에 연결할 수 있습니다. 여기 더 자세한 정보 http://www.aginity.com

+1

Aginity를 통해 큰 (> 100 만 행) 데이터 세트를 내보낼 때 종종 "메모리 부족"오류가 발생합니다. 작은 임시 요청을 처리하는 가장 쉬운 방법입니다. –

+1

매개 변수와 같은 Aginity Workbench 명령을 사용하는 경우 "메모리 부족"오류를 해결해야하는 GUI 사용을 피할 수 있습니다. 도구 -> Workbench 명령 행 빌더 메뉴 옵션을 사용하십시오. – Tim

0

파이프로 구분 된 데이터를 원하고 너무 많은 필드가 없으면 nzsql 명령에서 지정할 수 있습니다.

nzsql -d $DB-u $USER-pw $PASS -h $HOST -c 
    "SELECT OTLT_KEY||'|'||NHS_OTL_CD||'|'||NPD_ST||'|'||NPD_CNTY||'|' 
    FROM OTL_NHS_RLTD" > ./OTL_NHS_RLTD.psv 
-1
-c $ 사용자-PW $ PASS -h $ 호스트가 "OTLT_KEY || SELECT

nzsql -d $ DB-U '|'|| NHS_OTL_CD || '|'|| NPD_ST을 || '| '|| NPD_CNTY ||'| ' NHS_OTL_CD || | '' "> ./OTL_NHS_RLTD.psv

또는

-c $ 사용자-PW $ PASS -h $ 호스트가

nzsql -d $ DB-U"OTLT_KEY ||를 선택 OTL_NHS_RLTD FROM || '|'|| NPD_ST || '|'|| NPD_CNTY || '|' FROM OTL_NHS_RLTD "-o /path/OTL_NHS_RLTD.psv