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

#
#
from __future__ import annotations
from typing import TYPE_CHECKING, Iterable, Sequence
from airflow.exceptions import AirflowException
from airflow.models import BaseOperator
from airflow.providers.amazon.aws.hooks.redshift_data import RedshiftDataHook
from airflow.providers.amazon.aws.hooks.redshift_sql import RedshiftSQLHook
from airflow.providers.amazon.aws.hooks.s3 import S3Hook
from airflow.providers.amazon.aws.utils.redshift import build_credentials_block
if TYPE_CHECKING:
    from airflow.utils.context import Context
AVAILABLE_METHODS = ["APPEND", "REPLACE", "UPSERT"]
class S3ToRedshiftOperator(BaseOperator):
    """
    Executes an COPY command to load files from s3 to Redshift.
    .. seealso::
        For more information on how to use this operator, take a look at the guide:
        :ref:`howto/operator:S3ToRedshiftOperator`
    :param schema: reference to a specific schema in redshift database
    :param table: reference to a specific table in redshift database
    :param s3_bucket: reference to a specific S3 bucket
    :param s3_key: key prefix that selects single or multiple objects from S3
    :param redshift_conn_id: reference to a specific redshift database OR a redshift data-api connection
    :param aws_conn_id: reference to a specific S3 connection
        If the AWS connection contains 'aws_iam_role' in ``extras``
        the operator will use AWS STS credentials with a token
        https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-authorization.html#copy-credentials