Você precisa escapar das citações. Pense neles como camadas de embrulho, em um jogo de passar o pacote. Cada shell desembrulha uma 'camada'.
Então:
echo "this ; is a semicolon"
Mas se você quiser rodar via ssh:
ssh $user@$host echo "this ; is a semicolon"
O ssh desdobraria a primeira camada do pacote - enviando:
echo this ; is a semicolon
O qual quebraria, porque os ponto-e-vírgulas são interpretados pelo shell.
Então, para fazer isso, você precisa escapar primeiro das aspas - assim, o ssh pode 'desembrulhar' uma camada com segurança:
ssh $user@$host echo "\"this ; is a semicolon\""
ssh irá assim remover a camada 'externa' e 'escapar' e passar:
echo "this ; is a semicolon"
Isto será o que você precisa fazer para o seu forro. Quanto a não perder a legibilidade - é mais fácil falar do que fazer, tenho medo, pois as fugas e o aninhamento de cotas inevitavelmente ficam confusas.
O melhor que posso oferecer é usar uma variável para encapsular sua instrução SQL, para que fique claro que você está enviando uma instrução 'encapsulada:
THING_TO_ECHO='"this ; is a semicolon"'; ssh $user@host echo $THING_TO_ECHO