テーブルに空の文字列があることが問題のようです。これらは、おそらく次のようなcaseステートメントで処理する必要があります。
execute %{ALTER TABLE "table1" ALTER COLUMN columnB TYPE integer USING CAST(CASE columnB WHEN '' THEN NULL ELSE columnB END AS INTEGER)}
更新:更新された質問に基づいて完全に書き直されました。
テーブルに空の文字列があることが問題のようです。これらは、おそらく次のようなcaseステートメントで処理する必要があります。
execute %{ALTER TABLE "table1" ALTER COLUMN columnB TYPE integer USING CAST(CASE columnB WHEN '' THEN NULL ELSE columnB END AS INTEGER)}
更新:更新された質問に基づいて完全に書き直されました。