BUAT FORMAT FILE EKSTERNAL (TRANSACT-SQL)
Berlaku untuk: SQL Server 2016 (13.x) dan yang lebih baru Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Membuat objek format file eksternal yang menentukan data eksternal yang disimpan di Hadoop, Azure Blob Storage, Azure Data Lake Store atau untuk aliran input dan output yang terkait dengan aliran eksternal. Membuat format file eksternal adalah prasyarat untuk membuat Tabel Eksternal. Dengan membuat Format File Eksternal, Anda menentukan tata letak aktual data yang dirujuk oleh tabel eksternal. Untuk membuat Tabel Eksternal, lihat MEMBUAT TABEL EKSTERNAL (Transact-SQL).
Berikut adalah format file yang didukung:
Teks dibatasi
Hive RCFile
Tidak berlaku untuk Azure Synapse Analytics, Azure SQL Managed Instance, atau SQL Server 2022 (16.x) .
Hive ORC
Tidak berlaku untuk Azure Synapse Analytics, Azure SQL Managed Instance, atau SQL Server 2022 (16.x) .
Parquet
JSON
Hanya berlaku untuk Azure SQL Edge. Untuk informasi tentang menggunakan OPENROWSET untuk mengimpor data JSON di platform lain, lihat Mengimpor dokumen JSON ke file SQL Server atau Kueri JSON menggunakan kumpulan SQL tanpa server di Azure Synapse Analytics.
Delta
Hanya berlaku untuk kumpulan SQL tanpa server di Azure Synapse Analytics dan SQL Server 2022 (16.x).
Sintaks
-- Create an external file format for DELIMITED (CSV/TSV) files.
CREATE EXTERNAL FILE FORMAT file_format_name
WITH (
FORMAT_TYPE = DELIMITEDTEXT
[ , FORMAT_OPTIONS ( <format_options> [ ,...n ] ) ]
[ , DATA_COMPRESSION = {
'org.apache.hadoop.io.compress.GzipCodec'
}
]);
<format_options> ::=
{
FIELD_TERMINATOR = field_terminator
| STRING_DELIMITER = string_delimiter
| FIRST_ROW = integer -- Applies to: Azure Synapse Analytics and SQL Server 2022 and later versions
| DATE_FORMAT = datetime_format
| USE_TYPE_DEFAULT = { TRUE | FALSE }
| ENCODING = {'UTF8' | 'UTF16'}
| PARSER_VERSION = {'parser_version'}
}
Argumen
file_format_name
Menentukan nama untuk format file eksternal.
FORMAT_TYPE
Menentukan format data eksternal.
FORMAT_TYPE = PARKE
Menentukan format Parquet.
FORMAT_TYPE = ORC
Menentukan format Optimized Row Columnar (ORC). Opsi ini memerlukan Apache Hive versi 0.11 atau lebih tinggi pada kluster Hadoop eksternal. Di Hadoop, format file ORC menawarkan kompresi dan performa yang lebih baik daripada format file RCFILE.
FORMAT_TYPE = RCFILE, SERDE_METHOD = SERDE_method
Menentukan format file Kolom Rekaman (RcFile). Opsi ini mengharuskan Anda menentukan metode Apache Hive Serializer dan Deserializer (SerDe). Persyaratan ini sama jika Anda menggunakan Apache Hive/HiveQL di Hadoop untuk mengkueri file RC. Perhatikan, metode SerDe peka huruf besar/kecil.
Contoh menentukan RCFile dengan dua metode SerDe yang didukung PolyBase.
FORMAT_TYPE = RCFILE, SERDE_METHOD = 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe'
FORMAT_TYPE = RCFILE, SERDE_METHOD = 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe'
FORMAT_TYPE = DELIMITEDTEXT
Menentukan format teks dengan pemisah kolom, juga disebut terminator bidang.
FORMAT_TYPE = JSON
Menentukan format JSON. Hanya berlaku untuk Azure SQL Edge.
FORMAT_TYPE = DELTA
Menentukan format Delta Lake. Berlaku untuk kumpulan SQL tanpa server di Azure Synapse Analytics dan SQL Server 2022 (16.x).
FORMAT_OPTIONS
Opsional. Hanya untuk jenis data teks yang dibatasi.
Hanya kumpulan SQL tanpa server di Azure Synapse Analytics yang mendukung PARSER_VERSION
.
Kumpulan SQL tanpa server tidak mendukung opsi .DATE_FORMAT
DATA_COMPRESSION = data_compression_method
Menentukan metode kompresi data untuk data eksternal. Saat DATA_COMPRESSION tidak ditentukan, defaultnya adalah data yang tidak dikompresi.
Agar berfungsi dengan baik, file terkompresi Gzip harus memiliki ekstensi file ".gz".
Jenis format DELIMITEDTEXT mendukung metode kompresi ini:
- DATA_COMPRESSION =
org.apache.hadoop.io.compress.GzipCodec
Opsi format teks yang dibatasi
Opsi format yang dijelaskan di bagian ini bersifat opsional dan hanya berlaku untuk file teks yang dibatasi.
FIELD_TERMINATOR = field_terminator
Hanya berlaku untuk file teks yang dibatasi. Pemisah bidang menentukan satu atau beberapa karakter yang menandai akhir setiap bidang (kolom) dalam file yang dibatasi teks. Defaultnya adalah karakter |
pipa . Untuk dukungan terjamin, sebaiknya gunakan satu atau beberapa karakter ASCII.
Contoh:
FIELD_TERMINATOR = '|'
FIELD_TERMINATOR = ' '
FIELD_TERMINATOR = ꞌ\tꞌ
FIELD_TERMINATOR = '~|~'
STRING_DELIMITER
STRING_DELIMITER = *string_delimiter*
Menentukan terminator bidang untuk data string tipe dalam file yang dibatasi teks. Pemisah string memiliki panjang satu atau beberapa karakter dan diapit oleh kuotasi tunggal. Defaultnya adalah string kosong "". Untuk dukungan terjamin, sebaiknya gunakan satu atau beberapa karakter ASCII.
Contoh:
STRING_DELIMITER = '"'
STRING_DELIMITER = '0x22'
(Heksa kutipan ganda)STRING_DELIMITER = '*'
STRING_DELIMITER = ꞌ,ꞌ
STRING_DELIMITER = '0x7E0x7E'
(Dua tilde, misalnya,~~
)
FIRST_ROW = first_row_int
Berlaku untuk: Azure Synapse Analytics, SQL Server 2022, dan versi yang lebih baru
Menentukan nomor baris yang dibaca terlebih dahulu di semua file selama pemuatan PolyBase. Parameter ini dapat mengambil nilai 1 - 15. Jika nilai diatur ke dua, baris pertama di setiap file (baris header) dilewati saat data dimuat. Baris dilewati berdasarkan keberadaan pemisah baris (/r/n, /r, /n). Ketika opsi ini digunakan untuk ekspor, baris ditambahkan ke data untuk memastikan file dapat dibaca tanpa kehilangan data. Jika nilai diatur ke >2, baris pertama yang diekspor adalah Nama kolom tabel eksternal.
DATE_FORMAT = datetime_format
Menentukan format kustom untuk semua data tanggal dan waktu yang mungkin muncul dalam file teks yang dibatasi. Jika file sumber menggunakan format tanggalwaktu default, opsi ini tidak diperlukan. Hanya satu format tanggalwaktu kustom yang diizinkan per file. Anda tidak dapat menentukan lebih dari satu format tanggalwaktu kustom per file. Namun, Anda dapat menggunakan lebih dari satu format tanggalwaktu jika masing-masing format adalah format default untuk jenis datanya masing-masing dalam definisi tabel eksternal.
Penting
PolyBase hanya menggunakan format tanggal kustom untuk mengimpor data. Ini tidak menggunakan format kustom untuk menulis data ke file eksternal.
Saat DATE_FORMAT tidak ditentukan atau merupakan string kosong, PolyBase menggunakan format default berikut:
tanggalwaktu:
'yyyy-MM-dd HH:mm:ss'
smalldatetime:
'yyyy-MM-dd HH:mm'
tanggal:
'yyyy-MM-dd'
datetime2:
'yyyy-MM-dd HH:mm:ss'
datetimeoffset:
'yyyy-MM-dd HH:mm:ss'
waktu:
'HH:mm:ss'
Penting
Menentukan kustom DATE_FORMAT
akan mengambil alih semua format jenis default. Ini berarti Anda harus memiliki format tanggal yang sama di semua sel tanggalwaktu, tanggal, dan waktu dalam file Anda. Dengan ditimpa DATE_FORMAT
, Anda tidak boleh memiliki nilai tanggal dan waktu dalam format yang berbeda.
Contoh format tanggal ada dalam tabel berikut:
Catatan tentang tabel:
Tahun, bulan, dan hari dapat memiliki beberapa format dan pesanan. Tabel hanya memperlihatkan format ymd . Bulan dapat memiliki satu atau dua digit, atau tiga karakter. Hari dapat memiliki satu atau dua digit. Tahun dapat memiliki dua atau empat digit.
Milidetik (
fffffff
) tidak diperlukan.am
ataupm
(tt
) tidak diperlukan. Default adalahAM
.
Jenis penanggalan | Contoh | Deskripsi |
---|---|---|
datetime | DATE_FORMAT = yyyy-MM-dd HH:mm:ss.fff |
Selain tahun, bulan, dan hari, format tanggal ini mencakup 00-24 jam, 00-59 menit, 00-59 detik, dan 3 digit untuk milidetik. |
datetime | DATE_FORMAT = yyyy-MM-dd hh:mm:ss.ffftt |
Selain tahun, bulan, dan hari, format tanggal ini mencakup 00-12 jam, 00-59 menit, 00-59 detik, 3 digit untuk milidetik, dan AM, am, PM, atau PM. |
smalldatetime | DATE_FORMAT = yyyy-MM-dd HH:mm |
Selain tahun, bulan, dan hari, format tanggal ini mencakup 00-23 jam, 00-59 menit. |
smalldatetime | DATE_FORMAT = yyyy-MM-dd hh:mmtt |
Selain tahun, bulan, dan hari, format tanggal ini mencakup 00-11 jam, 00-59 menit, tanpa detik, dan AM, am, PM, atau pm. |
date | DATE_FORMAT = yyyy-MM-dd |
Tahun, bulan, dan hari. Tidak ada elemen waktu yang disertakan. |
date | DATE_FORMAT = yyyy-MMM-dd |
Tahun, bulan, dan hari. Ketika bulan ditentukan dengan MMM , nilai input adalah satu atau string, Jan , , Feb , Jun Jul May Sep Aug Apr Mar , , Oct , , Nov atau .Dec |
datetime2 | DATE_FORMAT = yyyy-MM-dd HH:mm:ss.fffffff |
Selain tahun, bulan, dan hari, format tanggal ini mencakup 00-23 jam, 00-59 menit, 00-59 detik, dan 7 digit untuk milidetik. |
datetime2 | DATE_FORMAT = yyyy-MM-dd hh:mm:ss.ffffffftt |
Selain tahun, bulan, dan hari, format tanggal ini mencakup 00-11 jam, 00-59 menit, 00-59 detik, 7 digit untuk milidetik, dan AM, am, PM, atau PM. |
datetimeoffset | DATE_FORMAT = yyyy-MM-dd HH:mm:ss.fffffff zzz |
Selain tahun, bulan, dan hari, format tanggal ini mencakup 00-23 jam, 00-59 menit, 00-59 detik, dan 7 digit untuk milidetik, dan offset zona waktu yang Anda masukkan ke dalam file input sebagai {+|-}HH:ss . Misalnya, karena waktu Los Angeles tanpa penghematan siang hari adalah 8 jam di belakang UTC, nilai -08:00 dalam file input menentukan zona waktu untuk Los Angeles. |
datetimeoffset | DATE_FORMAT = yyyy-MM-dd hh:mm:ss.ffffffftt zzz |
Selain tahun, bulan, dan hari, format tanggal ini mencakup 00-11 jam, 00-59 menit, 00-59 detik, 7 digit untuk milidetik, (AM, am, PM, atau pm), dan offset zona waktu. Lihat deskripsi di baris sebelumnya. |
time | DATE_FORMAT = HH:mm:ss |
Tidak ada nilai tanggal, hanya 00-23 jam, 00-59 menit, dan 00-59 detik. |
Format tanggal dan waktu yang didukung
Format file eksternal dapat menjelaskan sejumlah besar format tanggal dan waktu:
datetime | smalldatetime | date | tanggalwaktu2 | tanggalwaktulewat |
---|---|---|---|---|
[M[M]] M-[d]d-[yy]yy HH:mm:ss[.fff] | [M[M]] M-[d]d-[yy]yy HH:mm[:00] | [M[M]] M-[d]d-[yy]yy | [M[M]] M-[d]d-[yy]yy HH:mm:ss[.fffffff] | [M[M]] M-[d]d-[yy]yy HH:mm:ss[.fffffff] zzz |
[M[M]] M-[d]d-[yy]yy hh:mm:ss[.fff][tt] | [M[M]] M-[d]d-[yy]yy hh:mm[:00][tt] | [M[M]] M-[d]d-[yy]yy hh:mm:ss[.fffffff][tt] | [M[M]] M-[d]d-[yy]yy hh:mm:ss[.fffffff][tt] zzz | |
[M[M]] M-[yy]yy-[d]d HH:mm:ss[.fff] | [M[M]] M-[yy]yy-[d]d HH:mm[:00] | [M[M]] M-[yy]yy-[d]d | [M[M]] M-[yy]yy-[d]d HH:mm:ss[.fffffff] | [M[M]] M-[yy]yy-[d]d HH:mm:ss[.fffffff] zzz |
[M[M]] M-[yy]yy-[d]d hh:mm:ss[.fff][tt] | [M[M]] M-[yy]yy-[d]d hh:mm[:00][tt] | [M[M]] M-[yy]yy-[d]d hh:mm:ss[.fffffff][tt] | [M[M]] M-[yy]yy-[d]d hh:mm:ss[.fffffff][tt] zzz | |
[yy]yy-[M[M]]M-[d]d HH:mm:ss[.fff] | [yyy]yy-[M[M]]M-[d]d HH:mm[:00] | [yyy]yy-[M[M]]M-[d]d | [yy]yy-[M[M]]M-[d]d HH:mm:ss[.fffffff] | [yy]yy-[M[M]]M-[d]d HH:mm:ss[.fffffff] zzz |
[yy]yy-[M[M]]M-[d]d hh:mm:ss[.fff][tt] | [yy]yy-[M[M]]M-[d]d hh:mm[:00][tt] | [yyy]yy-[M[M]]M-[d]d hh:mm:ss[.fffffff][tt] | [yyy]yy-[M[M]]M-[d]d hh:mm:ss[.fffffff][tt] zzz | |
[yy]yy-[d]d-[M[M]]]M HH:mm:ss[.fff] | [yy]yy-[d]d-[M[M]]]M HH:mm[:00] | [yyy]yy-[d]d-[M[M]]]M | [yy]yy-[d]d-[M[M]]]M HH:mm:ss[.fffffff] | [yy]yy-[d]d-[M[M]]M HH:mm:ss[.fffffff] zzz |
[yy]yy-[d]d-[M[M]]]M hh:mm:ss[.fff][tt] | [yy]yy-[d]d-[M[M]]M hh:mm[:00][tt] | [yy]yy-[d]d-[M[M]]M hh:mm:ss[.fffffff][tt] | [yy]yy-[d]d-[M[M]]]M hh:mm:ss[.fffffff][tt] zzz | |
[d]d-[M[M]]M-[yy]yy HH:mm:ss[.fff] | [d]d-[M[M]]M-[yy]yy HH:mm[:00] | [d]d-[M[M]]M-[yy]yy | [d]d-[M[M]]M-[yy]yy HH:mm:ss[.fffffff] | [d]d-[M[M]]M-[yy]yy HH:mm:ss[.fffffff] zzz |
[d]d-[M[M]]M-[yy]yy hh:mm:ss[.fff][tt] | [d]d-[M[M]]M-[yy]yy hh:mm[:00][tt] | [d]d-[M[M]]M-[yy]yy hh:mm:ss[.fffffff][tt] | [d]d-[M[M]]M-[yy]yy hh:mm:ss[.fffffff][tt] zzz | |
[d]d-[yy]yy-[M[M]]]M HH:mm:ss[.fff] | [d]d-[yy]yy-[M[M]]]M HH:mm[:00] | [d]d-[yy]yy-[M[M]]]M | [d]d-[yy]yy-[M[M]]]M HH:mm:ss[.fffffff] | [d]d-[yy]yy-[M[M]]]M HH:mm:ss[.fffffff] zzz |
[d]d-[yy]yy-[M[M]]M hh:mm:ss[.fff][tt] | [d]d-[yy]yy-[M[M]]M hh:mm[:00][tt] | [d]d-[yy]yy-[M[M]]M hh:mm:ss[.fffffff][tt] | [d]d-[yy]yy-[M[M]]]M hh:mm:ss[.fffffff][tt] zzz |
Detail:
Untuk memisahkan nilai bulan, hari, dan tahun, Anda harus menggunakan salah satu pemisah berikut:
-
, ,/
atau.
. Untuk kesederhanaan, tabel hanya menggunakan pemisah-
.Untuk menentukan bulan sebagai teks, gunakan tiga karakter atau lebih. Bulan dengan satu atau dua karakter ditafsirkan sebagai angka.
Untuk memisahkan nilai waktu, gunakan
:
simbol .Huruf yang diapit dalam tanda kurung siku bersifat opsional.
Huruf menunjuk
tt
[AM|PM|am|pm]. AM adalah default. Ketikatt
ditentukan, nilai jam (hh) harus dalam rentang 0 hingga 12.Huruf
zzz
yang menunjuk offset zona waktu untuk zona waktu sistem saat ini dalam format {+|-}HH:ss].
USE_TYPE_DEFAULT = { TRUE | FALSE }
Menentukan cara menangani nilai yang hilang dalam file teks berbatas saat PolyBase mengambil data dari file teks. Nilai defaultnya adalah FALSE.
BENAR
Saat mengambil data dari file teks, simpan setiap nilai yang hilang dengan menggunakan nilai default untuk jenis data kolom terkait dalam definisi tabel eksternal. Misalnya, ganti nilai yang hilang dengan:
0
jika kolom didefinisikan sebagai kolom numerik. Kolom desimal tidak didukung dan akan terjadi kesalahan.String kosong "" jika kolom adalah kolom string.
1900-01-01 jika kolom adalah kolom tanggal.
Di Azure Synapse Analytics,
USE_TYPE_DEFAULT=true
tidak didukung untukFORMAT_TYPE = DELIMITEDTEXT, PARSER_VERSION = '2.0'
.
SALAH
Simpan semua nilai yang hilang sebagai NULL. Setiap nilai NULL yang disimpan dengan menggunakan kata NULL dalam file teks yang dibatasi diimpor sebagai string
NULL
.
PENGODEAN = {'UTF8' | 'UTF16'}
Di Azure Synapse Analytics and Analytics Platform System (PDW) (APS CU7.4), PolyBase dapat membaca file teks berbatas yang dikodekan UTF8 dan UTF16-LE.
Di SQL Server, PolyBase tidak mendukung pembacaan file yang dikodekan UTF16.
Izin
Memerlukan izin UBAH FORMAT FILE EKSTERNAL APA PUN.
Keterangan
Format file eksternal dicakup database di SQL Server dan Azure Synapse Analytics. Ini adalah cakupan server dalam Analytics Platform System (PDW).
Opsi format semuanya opsional dan hanya berlaku untuk file teks yang dibatasi.
Saat data disimpan dalam salah satu format terkompresi, PolyBase terlebih dahulu mendekompresi data sebelum mengembalikan rekaman data.
Batasan
Pemisah baris dalam file teks yang dibatasi harus didukung oleh LineRecordReader Hadoop. Artinya, pemisah tersebut harus \r
, \n
, atau \r\n
. Pembatas ini tidak dapat dikonfigurasi pengguna.
Kombinasi metode SerDe yang didukung dengan RCFiles, dan metode kompresi data yang didukung tercantum sebelumnya dalam artikel ini. Tidak semua kombinasi didukung.
Jumlah maksimum kueri PolyBase bersamaan adalah 32. Ketika 32 kueri bersamaan berjalan, setiap kueri dapat membaca maksimal 33.000 file dari lokasi file eksternal. Folder akar dan setiap subfolder juga dihitung sebagai file. Jika tingkat konkurensi kurang dari 32, lokasi file eksternal dapat berisi lebih dari 33.000 file.
Karena keterbatasan jumlah file dalam tabel eksternal, sebaiknya simpan kurang dari 30.000 file di akar dan subfolder lokasi file eksternal. Selain itu, sebaiknya simpan jumlah subfolder di bawah direktori akar ke angka kecil. Ketika terlalu banyak file direferensikan, pengecualian kehabisan memori Java Virtual Machine mungkin terjadi.
Saat mengekspor data ke Hadoop atau Azure Blob Storage melalui PolyBase, hanya data yang diekspor, bukan nama kolom (metadata) seperti yang didefinisikan dalam perintah CREATE EXTERNAL TABLE.
Penguncian
Mengambil kunci bersama pada objek FORMAT FILE EKSTERNAL.
Performa
Menggunakan file terkompresi selalu dilengkapi dengan tradeoff antara mentransfer lebih sedikit data antara sumber data eksternal dan SQL Server sambil meningkatkan penggunaan CPU untuk mengompresi dan mendekompresi data.
File teks terkompresi Gzip tidak dapat dibagi. Untuk meningkatkan performa file teks terkompresi Gzip, sebaiknya buat beberapa file yang semuanya disimpan dalam direktori yang sama dalam sumber data eksternal. Struktur file ini memungkinkan PolyBase untuk membaca dan mendekompresi data lebih cepat dengan menggunakan beberapa proses pembaca dan dekompresi. Jumlah ideal file terkompresi adalah jumlah maksimum proses pembaca data per simpul komputasi. Dalam SQL Server dan Analytics Platform System (PDW), jumlah maksimum proses pembaca data adalah 8 per simpul kecuali Azure Synapse Analytics Gen2, yaitu 20 pembaca per simpul. Di Azure Synapse Analytics, jumlah maksimum proses pembaca data per simpul bervariasi menurut SLO. Lihat Pola dan strategi pemuatan Azure Synapse Analytics untuk detailnya.
Contoh
J. Membuat format file eksternal DELIMITEDTEXT
Contoh ini membuat format file eksternal bernama textdelimited1 untuk file yang dibatasi teks. Opsi yang tercantum untuk FORMAT_OPTIONS menentukan bahwa bidang dalam file harus dipisahkan menggunakan karakter |
pipa . File teks juga dikompresi dengan codec Gzip. Jika DATA_COMPRESSION tidak ditentukan, file teks tidak dikompresi.
Untuk file teks yang dibatasi, metode kompresi data dapat berupa Codec default, org.apache.hadoop.io.compress.DefaultCodec
, atau Gzip Codec, org.apache.hadoop.io.compress.GzipCodec
.
CREATE EXTERNAL FILE FORMAT textdelimited1
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS (
FIELD_TERMINATOR = '|',
DATE_FORMAT = 'MM/dd/yyyy' ),
DATA_COMPRESSION = 'org.apache.hadoop.io.compress.GzipCodec'
);
B. Membuat format file eksternal RCFile
Contoh ini membuat format file eksternal untuk RCFile yang menggunakan serialization/deserialization
metode org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe
. Ini juga menentukan untuk menggunakan Codec Default untuk metode kompresi data. Jika DATA_COMPRESSION tidak ditentukan, defaultnya adalah tidak ada pemadatan.
CREATE EXTERNAL FILE FORMAT rcfile1
WITH (
FORMAT_TYPE = RCFILE,
SERDE_METHOD = 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe',
DATA_COMPRESSION = 'org.apache.hadoop.io.compress.DefaultCodec'
);
C. Membuat format file eksternal ORC
Contoh ini membuat format file eksternal untuk file ORC yang mengompresi data dengan org.apache.io.compress.SnappyCodec
metode kompresi data. Jika DATA_COMPRESSION tidak ditentukan, defaultnya adalah tidak ada pemadatan.
CREATE EXTERNAL FILE FORMAT orcfile1
WITH (
FORMAT_TYPE = ORC,
DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
);
D. Membuat format file eksternal PARQUET
Contoh ini membuat format file eksternal untuk file Parquet yang memadatkan data dengan org.apache.io.compress.SnappyCodec
metode kompresi data. Jika DATA_COMPRESSION tidak ditentukan, defaultnya adalah tidak ada pemadatan.
CREATE EXTERNAL FILE FORMAT parquetfile1
WITH (
FORMAT_TYPE = PARQUET,
DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
);
E. Membuat file teks yang dibatasi melewati baris header
Berlaku untuk: Azure Synapse Analytics, dan SQL Server 2022 (16.x) dan yang lebih baru.
Contoh ini membuat format file eksternal untuk file CSV dengan satu baris header. Untuk informasi selengkapnya, lihat Virtualisasi file CSV dengan PolyBase.
CREATE EXTERNAL FILE FORMAT skipHeader_CSV
WITH (FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS(
FIELD_TERMINATOR = ',',
STRING_DELIMITER = '"',
FIRST_ROW = 2,
USE_TYPE_DEFAULT = True)
);
F. Membuat format file eksternal JSON
Berlaku untuk: Azure SQL Edge.
Contoh ini membuat format file eksternal untuk file JSON yang mengompresi data dengan org.apache.io.compress.SnappyCodec
metode kompresi data. Jika DATA_COMPRESSION tidak ditentukan, defaultnya adalah tidak ada pemadatan. Contoh ini berlaku untuk Azure SQL Edge dan saat ini tidak didukung untuk produk SQL lainnya.
CREATE EXTERNAL FILE FORMAT jsonFileFormat
WITH (
FORMAT_TYPE = JSON,
DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
);
G. Membuat format file eksternal tabel Delta
Contoh ini membuat format file eksternal untuk format file jenis tabel Delta. Contoh ini berlaku untuk SQL Server 2022 (16.x). Untuk informasi selengkapnya, lihat Virtualisasi file tabel delta dengan PolyBase.
CREATE EXTERNAL FILE FORMAT DeltaFileFormat
WITH (
FORMAT_TYPE = DELTA
);