### Apache Airflow Provider(s)

amazon

### Versions of Apache Airflow Providers

7.2.1

### Apache Airflow version

2.5.1

### Operating System

Ubuntu

### Deployment

Official Apache Airflow Helm Chart

### Deployment details

_No response_

### What happened

I am trying to use the `S3ToRedshiftOperator` to copy data into an existing table which has a column defined as non-null with default.

The copy fails with the following error:
```
redshift_connector.error.ProgrammingError: {'S': 'ERROR', 'C': '42601', 'M': 'NOT NULL column without DEFAULT must be included in column list', 'F': '../src/pg/src/backend/commands/commands_copy.c', 'L': '2727', 'R': 'DoTheCopy'}
```

This is happening because when using the `UPSERT` method, the operator first creates a temporary table with this statement ([here](https://github.com/apache/airflow/blob/47cf233ccd612a68bea1ad3898f06b91c63c1964/airflow/providers/amazon/aws/transfers/s3_to_redshift.py#L173)):
```
CREATE TABLE #bar (LIKE foo.bar);
```
And then attempts to copy data into this temporary table. By default, `CREATE TABLE ... LIKE` does not include default values: _The default behavior is to exclude default expressions, so that all columns of the new table have null defaults._ (from the [docs](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_TABLE_NEW.html)).

### What you think should happen instead

We should be able to include default values when creating the temporary table.

### How to reproduce

* Create a table with a column defined as non-null with default value
* Use the operator to copy data into it using the `UPSERT` method

### Anything else

_No response_

### Are you willing to submit PR?

- [ ] 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)

assert S3ToRedshiftOperator.template_fields == (
            "s3_bucket",
            "s3_key",
            "schema",
            "table",
            "column_list",
            "copy_options",
            "redshift_conn_id",
            "method",
        )
    def test_execute_unavailable_method(self):
        """
        Test execute unavailable method
        """
        with pytest.raises(AirflowException):
            S3ToRedshiftOperator(
                schema="schema",
                table="table",
                s3_bucket="bucket",
                s3_key="key",
                method="unavailable_method",
                task_id="task_id",
                dag=None,
            ).execute({})
    @pytest.mark.parametrize("param", ["sql", "parameters"])
    def test_invalid_param_in_redshift_data_api_kwargs(self, param):