在互聯網的幫助下,我讓這個shell腳本在bash中運行。它會像字符串一樣查找列值。取決於你的SQL風格,你可以說WHERE LEN(column_value) = 7
它肯定需要一段時間才能運行,它實際上在我們的數據庫創建完成之前創建了鎖。
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!