2009-11-26 4 views
2

명령 줄 도구는 SQL Server 용 SQLCMD와 비슷한 Informix 11.5와 함께 제공됩니까?원격 Informix 11.5 명령 줄 클라이언트

예인 경우 원격 서버에 연결하고이를 사용하여 정기적 인 SELECT/INSERT/UPDATE 쿼리를 수행하려면 어떻게합니까?

답변

2

시도 DB-Access

은 ... DB-Access를 입력 실행 및 구조화 조회 언어 (SQL) 문 및 저장 프로 시저 언어 (SPL) 루틴을 디버깅하기위한 사용자 인터페이스를 제공합니다 ...

3

Michal Niklas가 말했듯이 IBM Informix Dynamic Server (구어체 IDS 또는 심지어 Informix)와 함께 제공되는 표준 도구는 DB-Access입니다. 그러나 Informix Client SDK (CSDK) 또는 Informix Connect (I-Connect) 제품이 아닌 IDS 자체에서만 배포됩니다.

IDS가 설치되지 않은 컴퓨터에서 IDS에 액세스하려는 경우 컴퓨터에 CSDK 또는 I-Connect가 필요하며 일부 원본 소프트웨어 (10 년이 넘는 Microsoft 이전 버전)가 필요합니다. 버전은 SQLCMD입니다. 이것은 내가 사용하는 것입니다. 그리고 마지막으로 (기침, 멍청이, 아야) 22 년 동안 다양한 버전에서 사용했습니다. DB-Access의 사전 커서 인 isql (제품 Informix SQL의 일부)이라는 프로그램의 명령 줄 동작이 마음에 들지 않아서 작성했습니다. (많은 역사에 - 당신에게 그렇게 중요하지 않습니다.)

사용법 - SQLCMD는 당신이해야할 일보다 많은 옵션을 가지고 있습니다. 기본은하지만, 간단하다 :

sqlcmd -d [email protected] -e 'select * from table' -x -f file.sql 

이가있는 sqlhosts 파일 (일반적으로 $ INFORMIXDIR은/etc/SQLHOSTS)에 규정 된 '는 dbserver'로 알려진 데이터베이스 서버에서 'DBNAME'라는 데이터베이스에 연결합니다. '-e'는 SQL 표현식 (select 문)을 나타냅니다. 결과는 레코드 당 하나의 논리 회선 인 Strict 형식 (Informix UNLOAD 형식)으로 표준 출력에 인쇄됩니다. '-x'는 추적 모드를 켭니다. '-f'옵션은 추가 명령을 위해 명명 된 파일을 읽는 것을 의미합니다. '.sql'확장자는 필수는 아닙니다 (주의 : DB-Access는 '.sql'확장자가 필요하며 추가 할 것입니다). ('-e'또는 '-f'접두어가 붙지 않은 인수는 경험적으로 해석되며, 공백이 있으면 SQL이며, 그렇지 않으면 파일 이름입니다.) '-H'옵션은 열 표제 (레이블) 결과 집합 전에; '-T'옵션은 표제 다음에 결과 앞의 열 유형을 인쇄합니다. '-B'옵션은 벤치 마크 모드에서 실행됩니다. 추적을 시작하고 명령문이 시작된 시간 및 소요 시간을 인쇄합니다. (SQL이 실행되는 데 많은 시간이 소요되는 경우 SQL 문 시작 시점을 아는 것은 벤치마킹 시나리오 에서처럼 유용합니다.) 출력 형식 (CSV 및 변형 XML 포함 - 네임 스페이스를 사용하는 XML은 제외) 및 날짜 형식 등을 제어합니다. 입력 및 출력 및 오류를 리디렉션하는 '기본 제공'명령이 있습니다. 대부분의 명령 행 옵션은 interpeter 등에서 사용될 수 있습니다. 또한 SQLCMD는 히스토리 메커니즘을 제공합니다. SQL 문을 저장하고이를보고, 편집하거나 재실행 할 수 있습니다. 출력 리디렉션과 함께 실행 된 명령문 목록을 저장하지 않을 수 있습니다.

SQLCMD의 유일한 장애는 현재 Windows에 이식되어 있지 않다는 것입니다. Windows에서 약 6 ~ 7 년 전에 한 번 작동했습니다. 그 이후로 MS의 컴파일러는 non-MS API 함수에 대해 몹시 애써왔다. POSIX 기능을 요청하여 이름으로 요청하더라도 함수 앞에 밑줄을 붙이고 접두사를 붙일 수있는 기능을 제공해야한다. (그러나 유감스럽게도,주의를 기울이지 않는 사람들에 의해 학대 당할 수 있으며 주위에 세심한 코더보다 부주의 한 경우가있을 것입니다.) - 나는 'strcpy()'와 같은 함수를 의미합니다. '를 호출하기 전에 원본 및 대상 문자열의 크기를 알고 있으면 완벽하게 사용할 수 있습니다. 할일 목록에 올라 있습니다. 아직 가려워하지 않았습니다. 가려움이 아니기 때문입니다.

고려할 수있는 SQSL이라는 또 다른 오픈 소스 도구가 있습니다. 그것은 SQLCMD (조건 논리 등) 이상의 몇 가지 장점이 있지만 SQLCMD SQSL 이상의 몇 가지 장점이 있다고 생각합니다.

또한 Perl + DBI + DBD :: Informix + dbish가 적합한 지 여부도 고려해 볼 수 있습니다.

+0

매우 자세한 답변을 주셔서 감사합니다. 고맙습니다. 이 사이트의 과거 응답 중 일부를 기반으로 위에서 언급 한 SQLCMD 도구 (ftp://ftp.iiug.org/pub/informix/pub/sqlcmd-86.00.tgz/)를 체크 아웃했지만 할 수 없었습니다 ./configure가 다음 오류로 인해 실패했기 때문에 Ubuntu 8.04 Linux에서 컴파일 할 수 있습니다. INFORMIXDIR ... 확인 : 구성 : 오류 : INFORMIXDIR의 유효한 값을 판별 할 수 없습니다. 나는 실제로 서버가 로컬이 아니기 때문에 IDS를 설치하지 않고서도 사용할 수 있다고 생각했다. 귀하의 설명을 통해 SQLCMD 이상의 것이 필요하다는 것을 분명히 알 수 있습니다. – Saheed

+0

@Saheed : SQLCMD를 컴파일하려면 IBM Informix Client SDK (CSDK)가 필요합니다. 이것은 IDS와 함께 제공되지만 별도로도 제공됩니다. SQLCMD를 실행하려면 IBM Informix Connect (I-Connect) 또는 CSDK가 필요합니다. SQLCMD를 구성하려 할 때 환경에 INFORMIXDIR이 CSDK가 설치된 위치를 가리 키도록 설정해야합니다. 그렇지 않으면/usr/informix ($ INFORMIXDIR의 기본 위치, 아마도 'ln -s/opt/IBM/informix/usr/informix' '). 컴퓨터에 IDS가있을 필요는 없지만 가질 수는 있습니다. IDS를 동일한 디렉토리에 설치할 필요는 없습니다. –

+0

그렇다고해서 CSDK와 IDS를 같은 디렉토리 (또는 I-Connect와 IDS)에 설치하는 것이 일반적입니다. 두 가지를 분리 할 때 장단점이 있습니다. –