### 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)

if self.method not in AVAILABLE_METHODS:
            raise AirflowException(f"Method not found! Available methods: {AVAILABLE_METHODS}")
        redshift_hook: RedshiftDataHook | RedshiftSQLHook
        if self.redshift_data_api_kwargs:
            redshift_hook = RedshiftDataHook(aws_conn_id=self.redshift_conn_id)
        else:
            redshift_hook = RedshiftSQLHook(redshift_conn_id=self.redshift_conn_id)
        conn = S3Hook.get_connection(conn_id=self.aws_conn_id)
        region_info = ""
        if conn.extra_dejson.get("region", False):
            region_info = f"region '{conn.extra_dejson['region']}'"
        if conn.extra_dejson.get("role_arn", False):
            credentials_block = f"aws_iam_role={conn.extra_dejson['role_arn']}"
        else:
            s3_hook = S3Hook(aws_conn_id=self.aws_conn_id, verify=self.verify)
            credentials = s3_hook.get_credentials()
            credentials_block = build_credentials_block(credentials)
        copy_options = "\n\t\t\t".join(self.copy_options)
        destination = f"{self.schema}.{self.table}"
        copy_destination = f"#{self.table}" if self.method == "UPSERT" else destination
        copy_statement = self._build_copy_query(
            copy_destination, credentials_block, region_info, copy_options
        )
        sql: str | Iterable[str]
        if self.method == "REPLACE":