2017-05-02 1 views
0

Netezza 데이터베이스의 어딘가에서 특정 정보를 찾으려고합니다. 모든 열을 검색하여 내가 찾고있는 이름과 일치하는지 확인했습니다.Netezza에서 특정 형식의 값으로 열 찾기

SELECT * 
FROM _V_SYS_COLUMNS 
WHERE 
COLUMN_NAME like '%COW%' 
; 

성공하지 못했습니다. 그래서 데이터베이스의 각 열의 첫 번째 값을 확인하고 길이가 7 자인지 확인합니다.

의견이 있으십니까? 나는 그것이 실행하는 데 시간이 걸릴 거대한 쿼리라는 것을 이해합니다.

답변

0

인터넷에서 도움을 받아이 쉘 스크립트를 bash로 실행했습니다. 문자열과 같은 열 값을 찾습니다. SQL의 맛에 따라 WHERE LEN(column_value) = 7

확실히 실행하는 데 시간이 걸릴 수 있습니다. 실제로 완료되기 전에 DB에 잠금이 생성되었습니다.

HTH

#!/bin/sh 
# 
# search.sh 

DB=$1 
STRING=$2 

if [ "$DB" == "" -o "$STRING" == "" ] 
then 
    echo "usage:" 
    echo " alltextsearch DB STRING" 
    exit 2 
fi 

sql $DB <<!EOT! | grep \| | grep -v '^|col1' 

DECLARE GLOBAL TEMPORARY TABLE SESSION.gen_sql (
    sql_command varchar(500) 
) 
ON COMMIT PRESERVE ROWS 
WITH NORECOVERY; 
\g 
INSERT INTO SESSION.gen_sql 
SELECT 'SELECT ''OWNER.TABLE.COLUMN'',''VALUE''\g' 
\g 
INSERT INTO SESSION.gen_sql 
SELECT SQUEEZE(
    'SELECT ''' 
     +table_owner+'.'+table_name+'.'+column_name+''',' 
     +column_name 
    +' FROM '+table_owner+'.'+table_name 
    +' WHERE '+column_name+' LIKE ''%$STRING%'' \g') 
    FROM iicolumns 
    WHERE column_datatype IN ('C','CHAR','TEXT','VARCHAR','NCHAR','NVARCHAR') 
\g 

COPY SESSION.gen_sql(sql_command= CHAR(0)nl) 
    INTO 'temp.sql'; 
\g 
\i temp.sql 
!EOT!