SELECT
*
FROM
[SERVER2NAME].[THEDB].[THEOWNER].[THETABLE]
Вы также можете посмотреть на использование связанных серверов. Связанными серверами могут быть и другие типы источников данных, такие как платформы DB2. Это один из способов попыток доступа к DB2 с помощью SQLQL TSQL или Sproc call ...
Вы также можете попробовать Perl
$ cat muscleman.txt
INSERT INTO data VALUES (11,1), (NULL,2), (NULL,3), (NULL,4);
INSERT INTO data VALUES (22,1), (NULL,2), (NULL,3), (NULL,4);
INSERT INTO data VALUES (33,1), (NULL,2), (NULL,3), (NULL,4);
$ perl -pe ' /(\d+)/ and $x=$1; s/NULL/$x/g ' muscleman.txt
INSERT INTO data VALUES (11,1), (11,2), (11,3), (11,4);
INSERT INTO data VALUES (22,1), (22,2), (22,3), (22,4);
INSERT INTO data VALUES (33,1), (33,2), (33,3), (33,4);
$
Спасибо @Sundeep за еще один короткий ответ!
$ perl -pe '($x)=/(\d+)/; s/NULL/$x/g' muscleman.txt
INSERT INTO data VALUES (11,1), (11,2), (11,3), (11,4);
INSERT INTO data VALUES (22,1), (22,2), (22,3), (22,4);
INSERT INTO data VALUES (33,1), (33,2), (33,3), (33,4);
$
Не могли бы вы попробовать следующее.
echo "INSERT INTO data VALUES (11,1), (NULL,2), (NULL,3), (NULL,4);" |
awk '
match([110],/\([0-9]+/){
value=substr([110],RSTART+1,RLENGTH-1)
}
{
gsub("NULL",value)
}
1'
Вывод будет следующим.
INSERT INTO data VALUES (11,1), (11,2), (11,3), (11,4);
Согласно комментарию OP, если вы хотите выполнить эту операцию для файла Input_file, выполните следующие действия (просто передайте имя файла Input_file сценарию awk
)
awk '
match([112],/\([0-9]+/){
value=substr([112],RSTART+1,RLENGTH-1)
}
{
gsub("NULL",value)
}
1' Input_file
С sed
(протестировано на GNU sed 4.2.2 , синтаксис будет варьироваться для разных реализаций)
$ cat ip.txt
INSERT INTO data VALUES (11,1), (NULL,2), (NULL,3), (NULL,4);
foo (42,14), (4,NULL), (5,3), (NULL,14)
$ sed -E ':a s/([0-9]+)(.*)NULL/\1\2\1/; ta' ip.txt
INSERT INTO data VALUES (11,1), (11,2), (11,3), (11,4);
foo (42,14), (4,42), (5,3), (42,14)
-E
использовать ERE вместо значения по умолчанию BRE :a
метка a
([0-9]+)(.*)NULL
первая последовательность цифр, затем другой текст, за которым следует последнее вхождение NULL
в строке \1\2\1
согласно ожидаемому результату ta
переходить к метке a
, если замена прошла успешно