

 Amazon Redshift tidak akan lagi mendukung pembuatan Python UDFs baru mulai Patch 198. Python yang ada UDFs akan terus berfungsi hingga 30 Juni 2026. Untuk informasi lebih lanjut, lihat [posting blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Meneruskan pernyataan SQL ke gudang data Amazon Redshift
<a name="pass-sql-statements"></a>

Contoh di halaman ini mencakup berbagai cara untuk meneruskan pernyataan SQL ke gudang data Anda

## Jalankan pernyataan SQL
<a name="data-api-calling-cli-execute-statement"></a>

Untuk menjalankan pernyataan SQL, gunakan `aws redshift-data execute-statement` AWS CLI perintah.

 AWS CLI Perintah berikut menjalankan pernyataan SQL terhadap cluster dan mengembalikan identifier untuk mengambil hasil. Contoh ini menggunakan metode AWS Secrets Manager otentikasi.

```
aws redshift-data execute-statement 
    --secret-arn arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn 
    --cluster-identifier mycluster-test 
    --sql "select * from stl_query limit 1" 
    --database dev
```

Berikut adalah contoh respons tersebut.

```
{
    "ClusterIdentifier": "mycluster-test",
    "CreatedAt": 1598323175.823,
    "Database": "dev",
    "Id": "c016234e-5c6c-4bc5-bb16-2c5b8ff61814",
    "SecretArn": "arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn"
}
```

 AWS CLI Perintah berikut menjalankan pernyataan SQL terhadap cluster dan mengembalikan identifier untuk mengambil hasil. Contoh ini menggunakan metode otentikasi kredensial sementara.

```
aws redshift-data execute-statement 
    --db-user myuser 
    --cluster-identifier mycluster-test 
    --database dev 
    --sql "select * from stl_query limit 1"
```

Berikut adalah contoh respons tersebut.

```
{
    "ClusterIdentifier": "mycluster-test",
    "CreatedAt": 1598306924.632,
    "Database": "dev",
    "DbUser": "myuser",
    "Id": "d9b6c0c9-0747-4bf4-b142-e8883122f766"
}
```

 AWS CLI Perintah berikut menjalankan pernyataan SQL terhadap workgroup tanpa server dan mengembalikan identifier untuk mengambil hasilnya. Contoh ini menggunakan metode otentikasi kredensial sementara.

```
aws redshift-data execute-statement 
    --database dev 
    --workgroup-name myworkgroup 
    --sql "select 1;"
```

Berikut adalah contoh respons tersebut.

```
{
 "CreatedAt": "2022-02-11T06:25:28.748000+00:00",
 "Database": "dev",
 "DbUser": "IAMR:RoleName",
 "Id": "89dd91f5-2d43-43d3-8461-f33aa093c41e",
 "WorkgroupName": "myworkgroup"
}
```

 AWS CLI Perintah berikut menjalankan pernyataan SQL terhadap cluster dan mengembalikan identifier untuk mengambil hasil. Contoh ini menggunakan metode AWS Secrets Manager otentikasi dan token idempotensi.

```
aws redshift-data execute-statement 
    --secret-arn arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn 
    --cluster-identifier mycluster-test 
    --sql "select * from stl_query limit 1" 
    --database dev 
    --client-token b855dced-259b-444c-bc7b-d3e8e33f94g1
```

Berikut adalah contoh respons tersebut.

```
{
    "ClusterIdentifier": "mycluster-test",
    "CreatedAt": 1598323175.823,
    "Database": "dev",
    "Id": "c016234e-5c6c-4bc5-bb16-2c5b8ff61814",
    "SecretArn": "arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn"
}
```

## Jalankan pernyataan SQL dengan parameter
<a name="data-api-calling-cli-execute-statement-parameters"></a>

Untuk menjalankan pernyataan SQL, gunakan `aws redshift-data execute-statement` AWS CLI perintah.

 AWS CLI Perintah berikut menjalankan pernyataan SQL terhadap cluster dan mengembalikan identifier untuk mengambil hasil. Contoh ini menggunakan metode AWS Secrets Manager otentikasi. Teks SQL memiliki parameter `distance` bernama. Dalam hal ini, jarak yang digunakan dalam predikat adalah`5`. Dalam pernyataan SELECT, parameter bernama untuk nama kolom hanya dapat digunakan dalam predikat. Nilai untuk parameter bernama untuk pernyataan SQL ditentukan dalam `parameters` opsi.

```
aws redshift-data execute-statement 
    --secret-arn arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn 
    --cluster-identifier mycluster-test 
    --sql "SELECT ratecode FROM demo_table WHERE trip_distance > :distance"  
    --parameters "[{\"name\": \"distance\", \"value\": \"5\"}]"
    --database dev
```

Berikut adalah contoh respons tersebut.

```
{
    "ClusterIdentifier": "mycluster-test",
    "CreatedAt": 1598323175.823,
    "Database": "dev",
    "Id": "c016234e-5c6c-4bc5-bb16-2c5b8ff61814",
    "SecretArn": "arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn"
}
```

Contoh berikut menggunakan `EVENT` tabel dari database sampel. Untuk informasi selengkapnya, lihat [tabel EVENT](https://docs.aws.amazon.com/redshift/latest/dg/r_eventtable.html) di Panduan *Pengembang Database Amazon Redshift*. 

Jika Anda belum memiliki `EVENT` tabel dalam database Anda, Anda dapat membuatnya menggunakan Data API sebagai berikut:

```
aws redshift-data execute-statement 
--database dev
--cluster-id mycluster-test
--db-user awsuser
--sql "create table event( eventid integer not null distkey, 
                           venueid smallint not null, 
                           catid smallint not null, 
                           dateid smallint not null sortkey, 
                           eventname varchar(200), 
                           starttime timestamp)"
```

Perintah berikut menyisipkan satu baris ke dalam `EVENT` tabel. 

```
aws redshift-data execute-statement 
--database dev
--cluster-id mycluster-test
--db-user awsuser 
--sql "insert into event values(:eventid, :venueid::smallint, :catid, :dateid, :eventname, :starttime)" 
--parameters "[{\"name\": \"eventid\", \"value\": \"1\"}, {\"name\": \"venueid\", \"value\": \"1\"}, 
               {\"name\": \"catid\", \"value\": \"1\"}, 
               {\"name\": \"dateid\", \"value\": \"1\"}, 
               {\"name\": \"eventname\", \"value\": \"event 1\"}, 
               {\"name\": \"starttime\", \"value\": \"2022-02-22\"}]"
```

Perintah berikut menyisipkan baris kedua ke dalam `EVENT` tabel. Contoh ini menunjukkan hal berikut: 
+ Parameter bernama `id` digunakan empat kali dalam teks SQL.
+ Konversi tipe implisit diterapkan secara otomatis saat memasukkan parameter. `starttime`
+ `venueid`Kolom adalah tipe cast ke tipe data SMALLINT.
+ String karakter yang mewakili tipe data DATE secara implisit diubah menjadi tipe data TIMESTAMP.
+ Komentar dapat digunakan dalam teks SQL.

```
aws redshift-data execute-statement 
--database dev
--cluster-id mycluster-test
--db-user awsuser 
--sql "insert into event values(:id, :id::smallint, :id, :id, :eventname, :starttime) /*this is comment, and it won't apply parameterization for :id, :eventname or :starttime here*/" 
--parameters "[{\"name\": \"eventname\", \"value\": \"event 2\"}, 
               {\"name\": \"starttime\", \"value\": \"2022-02-22\"}, 
               {\"name\": \"id\", \"value\": \"2\"}]"
```

Berikut ini menunjukkan dua baris yang disisipkan:

```
 eventid | venueid | catid | dateid | eventname |      starttime
---------+---------+-------+--------+-----------+---------------------
       1 |       1 |     1 |      1 | event 1   | 2022-02-22 00:00:00
       2 |       2 |     2 |      2 | event 2   | 2022-02-22 00:00:00
```

Perintah berikut menggunakan parameter bernama dalam klausa WHERE untuk mengambil baris di mana `eventid` adalah. `1` 

```
aws redshift-data execute-statement 
--database dev
--cluster-id mycluster-test
--db-user awsuser 
--sql "select * from event where eventid=:id"
--parameters "[{\"name\": \"id\", \"value\": \"1\"}]"
```

Jalankan perintah berikut untuk mendapatkan hasil SQL dari pernyataan SQL sebelumnya:

```
aws redshift-data get-statement-result --id 7529ad05-b905-4d71-9ec6-8b333836eb5a        
```

Memberikan hasil sebagai berikut:

```
{
    "Records": [
        [
            {
                "longValue": 1
            },
            {
                "longValue": 1
            },
            {
                "longValue": 1
            },
            {
                "longValue": 1
            },
            {
                "stringValue": "event 1"
            },
            {
                "stringValue": "2022-02-22 00:00:00.0"
            }
        ]
    ],
    "ColumnMetadata": [
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "eventid",
            "length": 0,
            "name": "eventid",
            "nullable": 0,
            "precision": 10,
            "scale": 0,
            "schemaName": "public",
            "tableName": "event",
            "typeName": "int4"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "venueid",
            "length": 0,
            "name": "venueid",
            "nullable": 0,
            "precision": 5,
            "scale": 0,
            "schemaName": "public",
            "tableName": "event",
            "typeName": "int2"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "catid",
            "length": 0,
            "name": "catid",
            "nullable": 0,
            "precision": 5,
            "scale": 0,
            "schemaName": "public",
            "tableName": "event",
            "typeName": "int2"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "dateid",
            "length": 0,
            "name": "dateid",
            "nullable": 0,
            "precision": 5,
            "scale": 0,
            "schemaName": "public",
            "tableName": "event",
            "typeName": "int2"
        },
        {
            "isCaseSensitive": true,
            "isCurrency": false,
            "isSigned": false,
            "label": "eventname",
            "length": 0,
            "name": "eventname",
            "nullable": 1,
            "precision": 200,
            "scale": 0,
            "schemaName": "public",
            "tableName": "event",
            "typeName": "varchar"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": false,
            "label": "starttime",
            "length": 0,
            "name": "starttime",
            "nullable": 1,
            "precision": 29,
            "scale": 6,
            "schemaName": "public",
            "tableName": "event",
            "typeName": "timestamp"
        }
    ],
    "TotalNumRows": 1
}
```

## Jalankan beberapa pernyataan SQL
<a name="data-api-calling-cli-batch-execute-statement"></a>

Untuk menjalankan beberapa pernyataan SQL dengan satu perintah, gunakan `aws redshift-data batch-execute-statement` AWS CLI perintah.

 AWS CLI Perintah berikut menjalankan tiga pernyataan SQL terhadap cluster dan mengembalikan identifier untuk mengambil hasil. Contoh ini menggunakan metode otentikasi kredensial sementara.

```
aws redshift-data batch-execute-statement 
    --db-user myuser 
    --cluster-identifier mycluster-test 
    --database dev 
    --sqls "set timezone to BST" "select * from mytable" "select * from another_table"
```

Berikut adalah contoh respons tersebut.

```
{
    "ClusterIdentifier": "mycluster-test",
    "CreatedAt": 1598306924.632,
    "Database": "dev",
    "DbUser": "myuser",
    "Id": "d9b6c0c9-0747-4bf4-b142-e8883122f766"
}
```