2012-05-11 1 views
1

저는 AS400을 처음 사용하기 때문에 막혔습니다. 나는 문서를 읽었지만 필요한 것을 찾을 수 없습니다. AS400 서버에 대한 odbc 연결이 있습니다. 대신 내가 ODBC를 통해 연결하는 내 스크립트에이 명령의 결과를받을 필요 OUTFILE에가는 결과ODBC 연결을 사용하는 iSeries (AS400) 출력

CALL QSYS.QCMDEXC('DSPUSRPRF USRPRF(*ALL) OUTPUT(*OUTFILE) OUTFILE(CHHFLE/TEST3)', 0000000061.00000) 

:이 명령을 실행하면 내가 필요한 모든 것을 함께 OUTFILE을 얻을. 'OUTPUT (* OUTFILE)'을 'OUTPUT (*)'으로 변경하면 'fetchall()'을 시도 할 때 결과가 표시되지 않습니다. 스크립트에 대한 ODBC 연결을 통해이 정보를 얻을 수있는 방법이 있습니까?

EDIT : pyodbc를 사용하여 python 스크립트로 리눅스 서버에 연결합니다. 이 연결을 사용하여 SQL 쿼리를 성공적으로 실행할 수는 있지만 레코드 정렬과 같은 명령 결과를 얻는 방법을 알 수는 없습니다.

+0

결과를 RecordSet 또는 다시 얻으려고합니까? 너는 무엇에 접근하고 있니? VBScript, .NET 또는 일부 다른 Windows 기술? (ODBC 기술을 사용하기 때문에 Windows 기술이 필요함). – David

+0

일부 사람들은 단순한 의미로 간주하지만 플랫폼은 더 이상 AS/400이 아닙니다. 실제 이름은 실제로 중요하지 않습니다. 웹에서 도움을 얻으 려하지 않는 한. 'AS/400'으로 검색하면 10 년 전에 결과를 얻을 수 있습니다. Win98에서 일하는 것이 아니라면 도움이되지 않을 수도 있습니다. 'iSeries'또는 현재 이름 인 'IBM i'까지 사용해보십시오. –

+0

@Buck, 팁 주셔서 감사합니다. – recklessmortal

답변

1

나는 당신이 올바르게 묻고있는 것을 해석하고 싶습니다. 사용자 프로필 데이터에 액세스하고 파일로 덤프하는 것처럼 보입니다. 그런 다음 Windows에서 실행되는 스크립트 또는 그 파일에서 해당 파일의 내용을 사용하려는 것 같습니다. 그러한 경우 :

일반적으로 Windows 세계에서 파일의 데이터에 액세스 할 때 ODBC 및 VBScript 또는 .NET을 통해 AS/400은 데이터베이스처럼 취급됩니다. 라이브러리의 모든 파일은 내장 DB2 데이터베이스를 통해 제공됩니다. 그것은 모두 자동이고 Universal DB2 데이터베이스의 일부입니다.

Select * From CHHFLE.TEST3 

이를 :

그래서,이 파일을 만든 후, 당신은

당신은 연결을 만들고 다음 SQL 문을 실행할 것

이 내용을 읽어 라이브러리 CHHFLE에 TEST3라는 이름의 파일이 있어야합니다 , 물론, 당신이 이것을 액세스 할 수있는 적절한 권한이 있다고 가정합니다. 스크립트에서 수행하기 전에 데이터베이스에 대해 SQL 스크립트를 실행할 수있는 기능이 포함 된 Operations Navigator 도구를 사용하여이를 테스트 할 수 있어야합니다.

추가

위의 의견을 읽고 파이썬에서 DB2 연결에 this question의 정보가 있습니다. 도움이되기를 바랍니다.

0

OUTPUT(*)은 불행히도 표준 출력이 아닙니다. 즉, OUTPUT(*)을 ODBC 연결로 리디렉션 할 수 없습니다. OUTPUT(*OUTFILE)을 통해 DB2 테이블로 덤프하는 것은 좋은 계획입니다. 일단 완료되면 다른 DB2 테이블로 작업하는 것처럼 표준 커서/페치 루프를 사용하십시오.

+0

필자가 우려하는 것은 outfile을 실행하고 채우는 데 시간이 걸리는 명령을 실행 하겠지만, 서버에 명령을 보낸 후 내 스크립트는 outfile이 작성되기 전에 즉시 outfile을 쿼리합니다. 지연으로 빌드해야하거나 완료를 위해 outfile을 체크 아웃해야합니까? – recklessmortal

+0

단일 ODBC 호출에 필요한 결과 집합을 반환하는 저장 프로 시저를 작성합니다. –