

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

# CREATE TABLE
<a name="create-table"></a>

Membuat tabel dengan nama dan parameter yang Anda tentukan. 

**catatan**  
Halaman ini berisi informasi referensi ringkasan. Untuk informasi selengkapnya tentang membuat tabel di Athena dan `CREATE TABLE` pernyataan contoh, lihat. [Buat tabel di Athena](creating-tables.md) Untuk contoh membuat database, membuat tabel, dan menjalankan `SELECT` kueri pada tabel di Athena, lihat. [Memulai](getting-started.md)

## Sinopsis
<a name="synopsis"></a>

```
CREATE EXTERNAL TABLE [IF NOT EXISTS]
 [db_name.]table_name [(col_name data_type [COMMENT col_comment] [, ...] )]
 [COMMENT table_comment]
 [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
 [CLUSTERED BY (col_name, col_name, ...) INTO num_buckets BUCKETS]
 [ROW FORMAT row_format]
 [STORED AS file_format] 
 [WITH SERDEPROPERTIES (...)]
 [LOCATION 's3://amzn-s3-demo-bucket/[folder]/']
 [TBLPROPERTIES ( ['has_encrypted_data'='true | false',] ['encryption_option'='SSE_S3 | SSE_KMS | CSE_KMS',] ['kms_key'='aws_kms_key_arn',] ['classification'='aws_glue_classification',] property_name=property_value [, ...] ) ]
```

## Parameter
<a name="parameters"></a>

**EKSTERNAL**  
Menentukan bahwa tabel didasarkan pada file data yang mendasari yang ada di Amazon S3, di`LOCATION`yang Anda tentukan. Kecuali saat membuat tabel [Iceberg](querying-iceberg-creating-tables.md), selalu gunakan kata kunci. `EXTERNAL` Jika Anda menggunakan `CREATE TABLE` tanpa `EXTERNAL` kata kunci untuk tabel non-Iceberg, Athena mengeluarkan kesalahan. Saat Anda membuat tabel eksternal, data yang direferensikan harus sesuai dengan format default atau format yang Anda tentukan dengan`ROW FORMAT`,`STORED AS`, dan`WITH SERDEPROPERTIES`Klausul.

**[JIKA TIDAK ADA]**  
Parameter ini memeriksa apakah tabel dengan nama yang sama sudah ada. Jika ya, parameter kembali`TRUE`, dan Amazon Athena membatalkan tindakan. `CREATE TABLE` Karena pembatalan terjadi sebelum Athena memanggil katalog data, itu tidak memancarkan AWS CloudTrail acara.

**[db\_name.] table\_name**  
Menentukan nama untuk tabel yang akan dibuat. Parameter `db_name` opsional menentukan basis data tempat tabel ada. Jika dihilangkan, basis data saat ini diasumsikan. Jika nama tabel termasuk angka, lampirkan `table_name` dalam tanda petikan, sebagai contoh `"table123"`. Jika `table_name` dimulai dengan garis bawah, gunakan backticks, misalnya, ``_mytable``. Karakter khusus (selain garis bawah) tidak didukung.  
Nama tabel Athena adalah sensitif hurup; tetapi, jika Anda bekerja dengan Apache Spark, Spark membutuhkan nama tabel huruf kecil. Untuk pembatasan nama tabel di Athena, lihat. [Nama database, tabel, dan kolom](tables-databases-columns-names.md)

**[ ( col\_name data\_type [COMMENT col\_comment] [, ...] ) ]**  
Menentukan nama untuk setiap kolom yang akan dibuat, bersama dengan tipe data kolom ini. Nama kolom tidak mengizinkan karakter khusus selain garis bawah`(_)`. Jika`col_name`dimulai dengan garis bawah, lampirkan nama kolom di backticks, misalnya``_mycolumn``. Untuk pembatasan nama kolom di Athena, lihat. [Nama database, tabel, dan kolom](tables-databases-columns-names.md)  
Nilai `data_type` dapat menjadi salah satu dari yang berikut:  
+ `boolean` – Nilai adalah `true` dan `false`.
+ `tinyint`— Bilangan bulat bertanda 8-bit dalam format komplemen dua, dengan nilai minimum -2^7 dan nilai maksimum 2 ^ 7-1.
+ `smallint`— Bilangan bulat bertanda 16-bit dalam format komplemen dua, dengan nilai minimum -2^15 dan nilai maksimum 2 ^ 15-1.
+ `int`— Dalam kueri Data Definition Language (DDL) seperti`CREATE TABLE`, gunakan `int` kata kunci untuk mewakili bilangan bulat. Dalam kueri lain, gunakan kata kunci`integer`, di mana `integer` direpresentasikan sebagai nilai bertanda 32-bit dalam format komplemen dua, dengan nilai minimum 2^31 dan nilai maksimum 2^31-1. Dalam driver JDBC,`integer`dikembalikan, untuk memastikan kompatibilitas dengan aplikasi analisis bisnis.
+ `bigint`— Integer bertanda 64-bit dalam format komplemen dua, dengan nilai minimum -2^63 dan nilai maksimum 2 ^ 63-1.
+ `double`— Nomor floating point presisi ganda yang ditandatangani 64-bit. Kisarannya adalah 4.94065645841246544e-324d hingga 1.79769313486231570e\+308d, positif atau negatif. `double`mengikuti Standar IEEE untuk Floating-Point Arithmetic (IEEE 754).
+ `float`— Nomor floating point presisi tunggal bertanda 32-bit. Kisarannya adalah 1.40129846432481707e-45 hingga 3.40282346638528860e\+38, positif atau negatif. `float`mengikuti Standar IEEE untuk Floating-Point Arithmetic (IEEE 754). Setara dengan `real` di Presto. Di Athena, gunakan `float`dalam pernyataan DDL seperti `CREATE TABLE` dan`real` dalam fungsi SQL seperti `SELECT CAST`. AWS Glue Crawler mengembalikan nilai dalam`float`, dan Athena `real` menerjemahkan `float` dan mengetik secara internal (lihat [5 Juni 2018](release-notes.md#release-note-2018-06-05) catatan rilis).
+ `decimal [ ({{precision}}, {{scale}}) ]`, tempat`{{precision}}`adalah jumlah digit, dan`{{scale}}`(opsional) adalah jumlah digit di bagian pecahan, default adalah 0. Sebagai contoh, gunakan definisi jenis ini:`decimal(11,5)`,`decimal(15)`. Nilai maksimum untuk {{precision}} adalah 38, dan nilai maksimum untuk {{scale}} adalah 38.

  Untuk menentukan nilai desimal sebagai literal, seperti saat memilih baris dengan nilai desimal tertentu dalam ekspresi DDL kueri, tentukan tipe definisi `decimal`, dan cantumkan nilai desimal sebagai literal (dalam tanda kutip tunggal) dalam kueri Anda, seperti dalam contoh ini: `decimal_value = decimal '0.12'`.
+ `char` – Data karakter dengan panjang tetap, dengan panjang yang ditentukan antara 1 dan 255, seperti `char(10)`. Untuk informasi lebih lanjut, lihat tipe [data CHAR Hive](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types#LanguageManualTypes-char).
+ `varchar` – Berbagai data karakter panjang, dengan panjang yang ditentukan antara 1 dan 65535, seperti `varchar(10)`. Untuk informasi selengkapnya, lihat tipe data [VARCHAR Hive](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types#LanguageManualTypes-varchar). 
+ `string` – Sebuah literal string yang disertakan dalam tanda kutip tunggal atau ganda.
**catatan**  
Tipe data non-string tidak dapat dilemparkan ke`string`di Athena; melemparkan mereka ke`varchar`Sebagai gantinya
+ `binary`— (untuk data di Parket)
+ `date` – Tanggal dalam format ISO, seperti `{{YYYY}}-{{MM}}-{{DD}}`. Misalnya, `date '2008-09-15'`. Pengecualian adalah Open CSVSer De, yang menggunakan jumlah hari yang telah berlalu sejak 1 Januari 1970. Untuk informasi selengkapnya, lihat [Buka CSV SerDe untuk memproses CSV](csv-serde.md).
+ `timestamp`— Tanggal dan waktu instan dalam format yang [https://docs.oracle.com/javase/8/docs/api/java/sql/Timestamp.html](https://docs.oracle.com/javase/8/docs/api/java/sql/Timestamp.html)kompatibel hingga resolusi maksimum milidetik, seperti`{{yyyy}}-{{MM}}-{{dd}} {{HH}}:{{mm}}:{{ss}}[.f{{...}}]`. Misalnya, `timestamp '2008-09-15 03:04:05.324'`. Pengecualian adalah Open CSVSer De, yang menggunakan `TIMESTAMP` data dalam format numerik UNIX (misalnya,`1579059880000`). Untuk informasi selengkapnya, lihat [Buka CSV SerDe untuk memproses CSV](csv-serde.md).
+ `array` < data\_type >
+ `map` < primitive\_type, data\_type >
+ `struct`< col\_name: data\_type [komentar col\_comment] [, ... ] >

**[Komentar table\_comment]**  
Membuat`comment`tabel properti dan populates dengan`table_comment`Anda tentukan.

**[Partisi OLEH (col\_name data\_type [COMMENT col\_comment],...)]**  
Membuat tabel dipartisi dengan satu atau lebih kolom partisi yang memiliki`col_name`,`data_type`dan`col_comment`ditentukan. Sebuah tabel dapat memiliki satu atau lebih partisi, yang terdiri dari nama kolom yang berbeda dan kombinasi nilai. Sebuah direktori data terpisah dibuat untuk setiap kombinasi tertentu, yang dapat meningkatkan performa kueri dalam beberapa keadaan. Kolom yang dipartisi tidak ada dalam data tabel itu sendiri. Jika Anda menggunakan nilai untuk`col_name`Yang sama dengan kolom tabel, Anda akan mendapatkan pesan kesalahan. Untuk informasi selengkapnya, lihat,[Data partisi](partitions.md).  
Setelah Anda membuat tabel dengan partisi, jalankan kueri berikutnya yang terdiri dari[TABEL PERBAIKAN MSCK](msck-repair-table.md)untuk me-refresh metadata partisi, misalnya,`MSCK REPAIR TABLE cloudfront_logs;`. Untuk partisi yang tidak Hive kompatibel, gunakan[ALTER TABLE ADD PARTITION](alter-table-add-partition.md)untuk memuat partisi sehingga Anda dapat mengkueri data.

**[Berkelompokkan BY (col\_name, col\_name,...) Ke bucket num\_ember]**  
Membagi, dengan atau tanpa partisi, data dalam ditentukan`col_name`ke dalam subset data yang disebut*ember*. Parameter `num_buckets` menentukan jumlah bucket untuk dibuat. Bucketing dapat meningkatkan performa beberapa kueri pada set data yang besar.

**[ROW FORMAT row\_format]**  
Menentukan format baris tabel dan data sumber yang mendasari jika berlaku. Untuk`row_format`, Anda dapat menentukan satu atau lebih pembatas dengan`DELIMITED`atau, alternatif, gunakan`SERDE`seperti yang dijelaskan di bawah ini. Jika `ROW FORMAT` dihilangkan atau `ROW FORMAT DELIMITED` ditentukan, asli SerDe digunakan.  
+ [BIDANG dibatasi diakhiri oleh char [melarikan diri oleh char]]
+ [DILIMITED KOLEKSI ITEM diakhiri oleh arang]
+ [KUNCI MAP diakhiri oleh char]
+ [LINES diakhiri oleh char]
+ [NULL didefinisikan sebagai char]

  Tersedia hanya dengan Hive 0.13 dan saat format file tersimpan AS adalah`TEXTFILE`.
 **--ATAU--**   
+ SERDE 'serde\_name' [DENGAN SERDEPROPERTIES (“property\_name” = “property\_value”, “property\_name” = “property\_value” [,...])]

  `serde_name`Ini menunjukkan SerDe penggunaan. `WITH SERDEPROPERTIES`Klausul ini memungkinkan Anda untuk menyediakan satu atau lebih properti kustom yang diizinkan oleh. SerDe

**[STORED AS file\_format]**  
Menentukan format file untuk data tabel. Jika dihilangkan,`TEXTFILE`adalah default. Pilihan untuk`file_format`adalah:  
+ SEQUENCEFILE
+ TEXTFILE
+ RCFILE
+ ORC
+ PARQUET
+ AVRO
+ ION
+ INputFORMAT input\_format\_classname output\_format\_format\_classname

**[LOKASI 's3://amzn-s3-demo-bucket/[folder]/']**  
Menentukan lokasi data yang mendasari di Amazon S3 dari mana tabel dibuat. Lokasi jalur harus nama bucket atau nama bucket dan satu atau lebih folder. Jika Anda menggunakan partisi, tentukan akar data yang dipartisi. Untuk informasi selengkapnya tentang pengambilan tabel, lihat [Tentukan lokasi tabel di Amazon S3](tables-location-format.md). Untuk informasi tentang format data dan izin, lihat[Pertimbangan Amazon S3](creating-tables.md#s3-considerations).   
Gunakan garis miring trailing untuk folder atau bucket Anda. Jangan gunakan nama file atau karakter glob.  
 **Gunakan:**  
`s3://amzn-s3-demo-bucket/`  
`s3://amzn-s3-demo-bucket/{{folder}}/`  
`s3://amzn-s3-demo-bucket/{{folder}}/{{anotherfolder}}/`  
 **Jangan gunakan:**  
`s3://amzn-s3-demo-bucket`  
`s3://amzn-s3-demo-bucket/*`  
`s3://amzn-s3-demo-bucket/{{mydatafile.dat}}`

**[TBLPROPERTIES (['has\_encrypted\_data'='true \| false',] ['encryption\_option'='SSE\_S3 \| SSE\_KMS \| CSE\_KMS',] ['kms\_key'='aws\_kms\_key\_arn',] ['classification'='classification\_value',] property\_name=property\_value [,...])]**  
Menentukan kustom metadata pasangan kunci-nilai untuk definisi tabel selain properti tabel yang telah ditetapkan, seperti`"comment"`.  
**has\_encrypted\_data** — Athena memiliki properti bawaan,. `has_encrypted_data` Setel properti ini `true` untuk menunjukkan bahwa dataset dasar yang ditentukan oleh CSE-KMS `LOCATION` dienkripsi. Jika dihilangkan dan jika pengaturan grup kerja tidak menimpa pengaturan sisi klien, `false` diasumsikan. Jika dihilangkan atau diatur ke`false`ketika data dasar dienkripsi, hasil kueri dalam kesalahan. Untuk informasi selengkapnya, lihat [Enkripsi saat diam](encryption.md).  
**encryption\_option** — Setel properti ini ke salah satu`SSE_S3`,`SSE_KMS`, atau `CSE_KMS` untuk menunjukkan tingkat enkripsi tertinggi yang digunakan dalam kumpulan data dasar yang ditentukan oleh. `LOCATION` Untuk informasi selengkapnya, lihat [Enkripsi saat diam](encryption.md).  
**kms\_key** - Setel properti ini ke ARN kunci AWS KMS yang digunakan untuk mengenkripsi dan mendekripsi file data tabel. Athena menggunakan kunci ini untuk mengenkripsi file data tabel saat menulis dengan `SSE_KMS` atau `CSE_KMS` enkripsi, dan untuk mendekripsi file data tabel terenkripsi CSE-KMS. Properti ini hanya diperlukan ketika `encryption_option` diatur ke `SSE_KMS` atau`CSE_KMS`. Untuk informasi selengkapnya, lihat [Enkripsi saat diam](encryption.md).  
**klasifikasi** — Tabel yang dibuat untuk Athena di CloudTrail konsol ditambahkan `cloudtrail` sebagai nilai untuk properti. `classification` Untuk menjalankan pekerjaan ETL AWS Glue , Anda harus membuat tabel dengan `classification` properti untuk menunjukkan tipe data untuk AWS Glue as`csv`,,`parquet`, `orc``avro`, atau`json`. Misalnya, `'classification'='csv'`. ETL tugas akan gagal jika Anda tidak menentukan properti ini. Anda kemudian dapat menentukan menggunakan AWS Glue konsol, API, atau CLI. Untuk informasi selengkapnya, lihat [Buat tabel untuk pekerjaan ETL](schema-classifier.md) dan [Menulis Pekerjaan di AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/author-job.html) di *Panduan AWS Glue Pengembang*.  
**compression\_level** - `compression_level` Properti menentukan tingkat kompresi untuk digunakan. Properti ini hanya berlaku untuk kompresi ZSTD. Nilai yang mungkin adalah dari 1 hingga 22. Nilai default-nya adalah 3. Untuk informasi selengkapnya, lihat [Gunakan tingkat kompresi ZSTD](compression-support-zstd-levels.md).  
Untuk informasi selengkapnya tentang properti tabel lainnya, lihat[ALTER TABLE SET TBLPROPERTIES](alter-table-set-tblproperties.md).

## Contoh
<a name="create-table-examples"></a>

`CREATE TABLE`Pernyataan contoh berikut membuat tabel berdasarkan data planet yang dipisahkan tab yang disimpan di Amazon S3. 

```
CREATE EXTERNAL TABLE planet_data (
  planet_name string,
  order_from_sun int,
  au_to_sun float,
  mass float,
  gravity_earth float,
  orbit_years float,
  day_length float
  )
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
LOCATION 's3://amzn-s3-demo-bucket/tsv/'
```

Perhatikan poin-poin berikut:
+ `ROW FORMAT DELIMITED`Klausa menunjukkan bahwa data dibatasi oleh karakter tertentu.
+ `FIELDS TERMINATED BY '\t'`Klausa menentukan bahwa bidang dalam data TSV dipisahkan oleh karakter tab ('\\ t').
+ `STORED AS TEXTFILE`Klausul menunjukkan bahwa data disimpan sebagai file teks biasa di Amazon S3.

Untuk menanyakan data, Anda dapat menggunakan `SELECT` pernyataan sederhana seperti berikut:

```
SELECT * FROM planet_data
```

Untuk menggunakan contoh untuk membuat tabel TSV Anda sendiri di Athena, ganti nama tabel dan kolom dengan nama dan tipe data tabel dan kolom Anda sendiri, dan perbarui `LOCATION` klausa untuk menunjuk ke jalur Amazon S3 tempat file TSV Anda disimpan.

Untuk informasi selengkapnya tentang membuat tabel, lihat [Buat tabel di Athena](creating-tables.md).