Apakah ada cara untuk menyalin data dari S3 ke Snowflake tanpa menentukan kolom secara manual sebelumnya?

Saya tidak ingin harus mendefinisikan skema untuk tabel di Snowflake ATAU skema kolom mana yang harus diimpor dari S3. Saya ingin ini menjadi skema-di-baca, bukan skema-di-tulis.

Saya menggunakan integrasi penyimpanan untuk akses ke tahap eksternal S3.

Pertanyaan saya agak mirip dengan pertanyaan ini, tapi saya tidak' t ingin harus mendefinisikan setiap kolom secara individual. Jika ada cara untuk menambahkan kolom tambahan dengan cepat, itu akan menyelesaikan masalah saya juga.

2
S.S. 31 Januari 2020, 22:15

2 jawaban

Jawaban Terbaik

Anda perlu menggunakan alat pihak ketiga yang menganalisis seluruh file data S3 Anda untuk membangun skema SQL dari kumpulan data dalam file. Atau mungkin alat tersebut diberikan akses ke definisi sumber data (yang tidak dimiliki Snowflake) untuk mempermudah pekerjaan alat tersebut.

Anda mungkin menemukan potongan kode Prosedur Tersimpan Snowflake dengan mencari di sekitar sini di stackoverflow, yang menampilkan definisi skema dengan mis. meratakan file data JSON secara rekursif.

Jika Anda ingin impor menjadi fleksibel, Anda perlu menggunakan format data yang fleksibel seperti JSON dan tipe data SQL yang fleksibel seperti VARIANT. Ini akan berfungsi bahkan jika struktur data Anda berubah.

Jika Anda ingin menggunakan format kaku seperti CSV atau tipe data SQL kaku (kebanyakan kaku) maka semuanya menjadi rumit. Data kaku tidak fleksibel, dan misalnya file CSV tidak memiliki informasi jenis apa pun yang disematkan, membuat dugaan besar-besaran yang tidak tahan di masa depan.
Dan mungkin Anda puas karena semua kolom Anda berakhir sebagai VARCHAR...

2
Hans Henrik Eriksen 1 Februari 2020, 11:15

Saat ini kami tidak memiliki inferensi skema untuk COPY. Saya berasumsi bahwa Anda sudah tahu tentang opsi kolom varian untuk JSON tetapi itu tidak akan memberi Anda skema penuh. https://docs.snowflake.net/manuals/user-guide/ semistructured-concepts.html

Dinesh Kulkarni

(PM, Kepingan Salju)

3
Dinesh 31 Januari 2020, 19:32