### Description

#27647 has introduced filtering for invalid schemas in Hive hook based on the characters `;` and `!`. I'm wondering if a more generic filtering could be introduced, e.g. one that adheres to the regex `[^a-z0-9_]`, since Hive schemas (and table names) can only contain alphanumeric characters and the character `_`.

Note: since the Hive metastore [stores schemas and tables in lowercase](https://stackoverflow.com/questions/57181316/how-to-keep-column-names-in-camel-case-in-hive/57183048#57183048), checking against `[^a-z0-9_]` is probably better than `[^a-zA-Z0-9_]`.

### Use case/motivation

Ensure that Hive schemas used in `apache-airflow-providers-apache-hive` hooks contain no invalid characters.

### Related issues

_No response_

### Are you willing to submit a PR?

- [X] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

hook = MockHiveCliHook()
        bools = (True, False)
        for create, recreate in itertools.product(bools, bools):
            mock_load_file.reset_mock()
            hook.load_df(df=pd.DataFrame({"c": range(0, 10)}), table="t", create=create, recreate=recreate)
            assert mock_load_file.call_count == 1
            kwargs = mock_load_file.call_args[1]
            assert kwargs["create"] == create
            assert kwargs["recreate"] == recreate
    @mock.patch("airflow.providers.apache.hive.hooks.hive.HiveCliHook.run_cli")
    def test_load_df_with_data_types(self, mock_run_cli):
        ord_dict = OrderedDict()
        ord_dict["b"] = [True]
        ord_dict["i"] = [-1]
        ord_dict["t"] = [1]
        ord_dict["f"] = [0.0]
        ord_dict["c"] = ["c"]
        ord_dict["M"] = [datetime.datetime(2018, 1, 1)]
        ord_dict["O"] = [object()]
        ord_dict["S"] = [b"STRING"]
        ord_dict["U"] = ["STRING"]
        ord_dict["V"] = [None]
        df = pd.DataFrame(ord_dict)
        hook = MockHiveCliHook()
        hook.load_df(df, "t")
        query = """
            CREATE TABLE IF NOT EXISTS t (
                `b` BOOLEAN,
                `i` BIGINT,