A abordagem mais simplista é ler o arquivo duas vezes, a primeira vez que você salva os parágrafos e a segunda vez que você os troca, por exemplo, com awk
(no modo de parágrafo):
awk -v RS= -v ORS='\n\n' 'NR==FNR{
if (/table1234/) {one=$0} else if (/table7890/){two=$0}
next
}
{
if (/table1234/) {$0=two} else if (/table7890/){$0=one}
}
1' infile infile
Isso imprimirá uma linha vazia à direita, se isso for importante ...
Outra maneira com ol ' ed
que funciona nesse caso específico:
ed -s infile <<\IN
g/INSERT INTO table1234/d
-1r !grep -F 'INSERT INTO table7890' infile
+1,$g/INSERT INTO table7890/d
-1r !grep -F 'INSERT INTO table1234' infile
,p
q
IN