Sejujurnya, jika Anda tidak dapat mengulang melalui array, Anda mungkin belum boleh bermain-main dengan file - dan data CSV bisa menjadi jauh lebih rumit daripada sekadar "dipecah dengan koma". semua ini sah
"hello", "hello, world", "hello, ""world"""Dan berisi tiga bidang. hello hello, world hello, "world"Pemrosesan data CSV yang sederhana hanya dengan memisahkan koma akan kembali menggigit Anda nanti, dan sulitSaya sarankan Anda mencoba menggunakan beberapa perangkat lunak pembacaan CSV yang ada, karena sudah mengetahui masalahnya. Saya menggunakan yang ini. Pembaca CSV Cepat[^]
Saat memuat data CSV dari Cloud Storage, Anda dapat memuat data ke tabel atau partisi baru, atau menambahkan atau menimpa tabel atau partisi yang ada. Saat data Anda dimuat ke BigQuery, data akan diubah menjadi format kolom untuk Kapasitor (format penyimpanan BigQuery)
Saat Anda memuat data dari Cloud Storage ke dalam tabel BigQuery, set data yang berisi tabel tersebut harus berada di lokasi regional atau multi-regional yang sama dengan bucket Cloud Storage
Untuk informasi tentang memuat data CSV dari file lokal, lihat
Cobalah sendiri
Jika Anda baru di Google Cloud, buat akun untuk mengevaluasi performa BigQuery dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan menerapkan beban kerja
Coba BigQuery gratisKeterbatasan
Anda tunduk pada batasan berikut saat memuat data ke BigQuery dari bucket Cloud Storage
- Jika lokasi set data Anda disetel ke nilai selain multi-region bq load \ --source_format=CSV \ mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json 2, maka bucket Cloud Storage harus berada di region yang sama atau berada di multi-region yang sama dengan set data
- BigQuery tidak menjamin konsistensi data untuk sumber data eksternal. Perubahan pada data pokok saat kueri sedang berjalan dapat mengakibatkan perilaku yang tidak diharapkan
- BigQuery tidak mendukung pembuatan versi objek Cloud Storage. Jika Anda menyertakan nomor pembuatan di URI Cloud Storage, tugas pemuatan akan gagal
Saat Anda memuat file CSV ke BigQuery, perhatikan hal berikut
- File CSV tidak mendukung data bersarang atau berulang
- Hapus karakter byte order mark (BOM). Mereka mungkin menyebabkan masalah yang tidak terduga
- Jika Anda menggunakan kompresi gzip, BigQuery tidak dapat membaca data secara paralel. Memuat data CSV terkompresi ke BigQuery lebih lambat daripada memuat data yang tidak terkompresi. Melihat
- Anda tidak dapat menyertakan file terkompresi dan tidak terkompresi dalam tugas pemuatan yang sama
- Ukuran maksimum untuk file gzip adalah 4 GB
- Saat Anda memuat data CSV atau JSON, nilai dalam kolom bq load \ --source_format=CSV \ mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json 3 harus menggunakan pemisah tanda hubung ( bq load \ --source_format=CSV \ mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json 4) dan tanggal harus dalam format berikut. bq load \ --source_format=CSV \ mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json 5 (tahun-bulan-hari)
- Saat Anda memuat data JSON atau CSV, nilai dalam kolom bq load \ --source_format=CSV \ mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json 6 harus menggunakan pemisah tanda hubung ( bq load \ --source_format=CSV \ mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json 4) untuk bagian tanggal dari stempel waktu, dan tanggal harus dalam format berikut. bq load \ --source_format=CSV \ mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json 5 (tahun-bulan-hari). Bagian bq load \ --source_format=CSV \ mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json _9 (jam-menit-detik) dari stempel waktu harus menggunakan pemisah titik dua ( bq load \ --source_format=CSV \ --skip_leading_rows=2 mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json 0)
Sebelum kamu memulai
Berikan peran Identity and Access Management (IAM) yang memberi pengguna izin yang diperlukan untuk melakukan setiap tugas dalam dokumen ini, dan membuat kumpulan data untuk menyimpan data Anda
Izin yang diperlukan
Untuk memuat data ke BigQuery, Anda memerlukan izin IAM untuk menjalankan tugas pemuatan dan memuat data ke dalam tabel dan partisi BigQuery. Jika memuat data dari Cloud Storage, Anda juga memerlukan izin IAM untuk mengakses bucket yang berisi data Anda
Izin untuk memuat data ke BigQuery
Untuk memuat data ke dalam tabel atau partisi BigQuery baru atau menambahkan atau menimpa tabel atau partisi yang ada, Anda memerlukan izin IAM berikut
- bq load \ --source_format=CSV \ --skip_leading_rows=2 mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json _1
- bq load \ --source_format=CSV \ --skip_leading_rows=2 mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json _2
- bq load \ --source_format=CSV \ --skip_leading_rows=2 mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json _3
- bq load \ --source_format=CSV \ --skip_leading_rows=2 mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json _4
Setiap peran IAM standar berikut mencakup izin yang Anda perlukan untuk memuat data ke dalam tabel atau partisi BigQuery
- bq load \ --source_format=CSV \ --skip_leading_rows=2 mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json _5
- bq load \ --source_format=CSV \ --skip_leading_rows=2 mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json _6
- bq load \ --source_format=CSV \ --skip_leading_rows=2 mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json _7 (termasuk izin bq load \ --source_format=CSV \ --skip_leading_rows=2 mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json 4)
- bq load \ --source_format=CSV \ --skip_leading_rows=2 mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json _9 (termasuk izin bq load \ --source_format=CSV \ --skip_leading_rows=2 mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json 4)
- bq load \ --source_format=CSV \ --time_partitioning_type=DAY \ mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json 1 (termasuk izin bq load \ --source_format=CSV \ --skip_leading_rows=2 mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json 4)
Selain itu, jika Anda memiliki izin bq load \ --source_format=CSV \ --time_partitioning_type=DAY \ mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json _3, Anda dapat membuat dan memperbarui tabel menggunakan tugas muat di kumpulan data yang Anda buat
Untuk informasi selengkapnya tentang peran dan izin IAM di BigQuery, lihat Peran dan izin yang telah ditentukan sebelumnya
Izin untuk memuat data dari Cloud Storage
Untuk memuat data dari bucket Cloud Storage, Anda memerlukan izin IAM berikut
- bq load \ --source_format=CSV \ --time_partitioning_type=DAY \ mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json 4
- bq load \ --source_format=CSV \ --time_partitioning_type=DAY \ mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json 5
- bq load \ --source_format=CSV \ --time_partitioning_type=DAY \ mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json 6 (diperlukan jika Anda menggunakan URI )
Buat kumpulan data
Buat set data BigQuery untuk menyimpan data Anda
Memuat data CSV ke dalam tabel
Untuk memuat data CSV dari Cloud Storage ke tabel BigQuery baru, pilih salah satu opsi berikut
Untuk mengikuti panduan langkah demi langkah untuk tugas ini langsung di Editor Cloud Shell, klik Pandu saya Bimbing saya Di Google Cloud Console, buka halaman BigQuery Buka BigQuery Menggunakan. Contoh berikut memuat file CSV ke tabel baru bq load \
--source_format=CSV \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.csv \
./myschema.json
3 Di Google Cloud Console, buka halaman BigQuery Buka BigQuery Di editor kueri, masukkan pernyataan berikut Klik play_circle Lari. Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Gunakan perintah bq load \
--source_format=CSV \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.csv \
./myschema.json
4, tentukan bq load \
--source_format=CSV \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.csv \
./myschema.json
5 menggunakan bendera bq load \
--source_format=CSV \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.csv \
./myschema.json
6, dan sertakan. Anda dapat menyertakan satu URI, daftar URI yang dipisahkan koma, atau URI yang berisi a. Sediakan inline skema, dalam file definisi skema, atau gunakan deteksi otomatis skema. Jika Anda tidak menentukan skema, dan bq load \
--source_format=CSV \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.csv \
./myschema.json
7 adalah bq load \
--source_format=CSV \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.csv \
./myschema.json
0, dan tabel tujuan ada, maka skema tabel tujuan akan digunakan (Opsional) Berikan bendera bq load \
--source_format=CSV \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.csv \
./myschema.json
_9 dan tetapkan nilainya ke lokasi Anda Bendera opsional lainnya termasuk LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
_04. Kunci Cloud KMS untuk enkripsi data tabel Untuk informasi lebih lanjut tentang perintah bq load \
--source_format=CSV \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.csv \
./myschema.json
_4, lihat Untuk informasi lebih lanjut tentang tabel yang dipartisi, lihat Untuk informasi lebih lanjut tentang tabel berkerumun, lihat Untuk informasi selengkapnya tentang enkripsi tabel, lihat Untuk memuat data CSV ke BigQuery, masukkan perintah berikut Di mana Contoh Perintah berikut memuat data dari LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
_10 ke dalam tabel bernama bq load \
--source_format=CSV \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.csv \
./myschema.json
3 di LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
12. Skema didefinisikan dalam file skema lokal bernama LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
13 Perintah berikut memuat data dari LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
_10 ke dalam tabel bernama bq load \
--source_format=CSV \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.csv \
./myschema.json
3 di LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
12. Skema didefinisikan dalam file skema lokal bernama LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
13. File CSV menyertakan dua baris header. Jika bq load \
--autodetect \
--source_format=CSV \
mydataset.mytable \
gs://mybucket/mydata.csv
_9 tidak ditentukan, perilaku default adalah menganggap file tidak berisi header Perintah berikut memuat data dari LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
_10 ke tabel terpartisi waktu konsumsi bernama bq load \
--source_format=CSV \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.csv \
./myschema.json
3 di LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
12. Skema didefinisikan dalam file skema lokal bernama LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
13 Perintah berikut memuat data dari LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
_10 ke dalam tabel terpartisi baru bernama bq load \
--source_format=CSV \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.csv \
./myschema.json
3 di LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
12. Tabel dipartisi pada kolom LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
_26. Skema didefinisikan dalam file skema lokal bernama LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
13 Perintah berikut memuat data dari LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
_10 ke dalam tabel bernama bq load \
--source_format=CSV \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.csv \
./myschema.json
3 di LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
12. Skema terdeteksi secara otomatis Perintah berikut memuat data dari LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
_10 ke dalam tabel bernama bq load \
--source_format=CSV \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.csv \
./myschema.json
3 di LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
12. Skema didefinisikan sebaris dalam format ________34______34 Perintah berikut memuat data dari banyak file di LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
40 ke dalam tabel bernama bq load \
--source_format=CSV \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.csv \
./myschema.json
3 di LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
12. URI Cloud Storage menggunakan karakter pengganti. Skema terdeteksi secara otomatis Perintah berikut memuat data dari banyak file di LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
40 ke dalam tabel bernama bq load \
--source_format=CSV \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.csv \
./myschema.json
3 di LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
12. Perintah tersebut menyertakan daftar URI Cloud Storage yang dipisahkan koma dengan karakter pengganti. Skema didefinisikan dalam file skema lokal bernama LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
13Menghibur
Catatan. Saat Anda memuat data ke tabel kosong menggunakan Google Cloud Console, Anda tidak dapat menambahkan label, deskripsi, masa berlaku tabel, atau masa berlaku partisi.
Setelah tabel dibuat, Anda dapat memperbarui masa berlaku, deskripsi, dan label tabel, tetapi Anda tidak dapat menambahkan masa berlaku partisi setelah tabel dibuat menggunakan Google Cloud Console. Untuk informasi selengkapnya, lihat Mengelola tabelSQL
bq
API
Buat tugas LOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); _47 yang mengarah ke sumber data di Cloud Storage
(Opsional) Tentukan lokasi Anda di properti LOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); 48 di bagian LOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); 49 sumber daya pekerjaan
Properti LOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); _50 harus sepenuhnya memenuhi syarat, dalam format LOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); 51. Setiap URI dapat berisi satu '*'
Tentukan format data CSV dengan menyetel properti LOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); 52 ke bq load \ --source_format=CSV \ --time_partitioning_field mytimestamp \ mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json 5
Untuk memeriksa status pekerjaan, hubungi LOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); _54, di mana job_id adalah ID pekerjaan yang dikembalikan oleh permintaan awal
- Jika LOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); _55, pekerjaan berhasil diselesaikan
- Jika properti LOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); _56 ada, permintaan gagal, dan objek tersebut akan menyertakan informasi yang menjelaskan apa yang salah. Saat permintaan gagal, tidak ada tabel yang dibuat dan tidak ada data yang dimuat
- Jika LOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); _56 tidak ada, pekerjaan selesai dengan sukses, meskipun mungkin ada beberapa kesalahan non-fatal, seperti masalah mengimpor beberapa baris. Kesalahan non-fatal tercantum dalam properti LOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); 58 objek pekerjaan yang dikembalikan
Catatan API
Pekerjaan beban bersifat atomik dan konsisten;
Sebagai praktik terbaik, buat ID unik dan berikan sebagai LOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); 59 saat menelepon LOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); 60 untuk membuat tugas pemuatan. Pendekatan ini lebih kuat untuk kegagalan jaringan karena klien dapat memilih atau mencoba kembali ID pekerjaan yang diketahui
Memanggil LOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); _60 pada ID pekerjaan tertentu bersifat idempoten. Anda dapat mencoba lagi sebanyak yang Anda suka pada ID pekerjaan yang sama, dan paling banyak salah satu dari operasi tersebut akan berhasil
C#
Sebelum mencoba sampel ini, ikuti petunjuk penyiapan C# di panduan memulai BigQuery menggunakan pustaka klien. Untuk informasi selengkapnya, lihat dokumentasi referensi BigQuery C# API.
Lihat di GitHub
LOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); 1
Pergi
Sebelum mencoba sampel ini, ikuti petunjuk penyiapan Go di panduan memulai BigQuery menggunakan pustaka klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API BigQuery Go .
Lihat di GitHub
LOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); 2
Jawa
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di panduan memulai BigQuery menggunakan pustaka klien. Untuk informasi lebih lanjut, lihat dokumentasi referensi BigQuery Java API.
Lihat di GitHub
LOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); 3
Node. js
Sebelum mencoba contoh ini, ikuti Node. js petunjuk penyiapan di quickstart BigQuery menggunakan library klien. Untuk informasi selengkapnya, lihat BigQuery Node. js dokumentasi referensi API.
Lihat di GitHub
LOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); 4
PHP
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di panduan memulai BigQuery menggunakan pustaka klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API BigQuery PHP .
Lihat di GitHub
LOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); 5
Piton
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di panduan memulai BigQuery menggunakan pustaka klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API Python BigQuery.
Gunakan metode untuk memuat data dari file CSV di Cloud Storage. Berikan definisi skema eksplisit dengan menyetel properti ke daftar objek
Lihat di GitHub
LOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); 6
Rubi
Sebelum mencoba sampel ini, ikuti petunjuk penyiapan Ruby di panduan memulai BigQuery menggunakan pustaka klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API Ruby BigQuery.
Lihat di GitHub
LOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); 7
Memuat data CSV ke dalam tabel yang menggunakan partisi waktu berbasis kolom
Untuk memuat data CSV dari Cloud Storage ke dalam tabel BigQuery yang menggunakan partisi waktu berbasis kolom
Sebelum mencoba sampel ini, ikuti petunjuk penyiapan Go di panduan memulai BigQuery menggunakan pustaka klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API BigQuery Go . Lihat di GitHub LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
8 Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di panduan memulai BigQuery menggunakan pustaka klien. Untuk informasi lebih lanjut, lihat dokumentasi referensi BigQuery Java API. Lihat di GitHubPergi
Jawa
LOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); _9
Node. js
Sebelum mencoba contoh ini, ikuti Node. js petunjuk penyiapan di quickstart BigQuery menggunakan library klien. Untuk informasi selengkapnya, lihat BigQuery Node. js dokumentasi referensi API.
Lihat di GitHub
bq --location=location load \ --source_format=format \ dataset.table \ path_to_source \ schema _0
Piton
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di panduan memulai BigQuery menggunakan pustaka klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API Python BigQuery.
Lihat di GitHub
bq --location=location load \ --source_format=format \ dataset.table \ path_to_source \ schema _1
Menambahkan atau menimpa tabel dengan data CSV
Anda dapat memuat data tambahan ke dalam tabel baik dari file sumber atau dengan menambahkan hasil kueri
Di konsol Google Cloud, gunakan opsi Preferensi tulis untuk menentukan tindakan yang harus diambil saat Anda memuat data dari file sumber atau dari hasil kueri
Anda memiliki opsi berikut saat memuat data tambahan ke dalam tabel
Opsi konsolLOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); 35 flag alatProperti BigQuery APIDeskripsiTulis jika kosongTidak didukungLOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); 63Menulis data hanya jika tabel kosong. Tambahkan ke tabelLOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); _64 atau LOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); 65; . Timpa tabelLOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); 68 atau LOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); 69LOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); 70Menghapus semua data yang ada di tabel sebelum menulis data baru. Tindakan ini juga akan menghapus skema tabel dan menghapus kunci Cloud KMS apa punJika Anda memuat data ke tabel yang sudah ada, pekerjaan pemuatan dapat menambahkan data atau menimpa tabel
Catatan. Halaman ini tidak mencakup menambahkan atau menimpa tabel yang dipartisi. Untuk informasi tentang menambahkan dan menimpa tabel berpartisi, lihat.Di Google Cloud Console, buka halaman BigQuery Buka BigQuery Menggunakan. Contoh berikut menambahkan file CSV ke tabel bq load \
--source_format=CSV \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.csv \
./myschema.json
3 Di Google Cloud Console, buka halaman BigQuery Buka BigQuery Di editor kueri, masukkan pernyataan berikut Klik play_circle Lari. Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Gunakan perintah bq load \
--source_format=CSV \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.csv \
./myschema.json
4, tentukan bq load \
--source_format=CSV \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.csv \
./myschema.json
5 menggunakan bendera bq load \
--source_format=CSV \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.csv \
./myschema.json
6, dan sertakan. Anda dapat menyertakan satu URI, daftar URI yang dipisahkan koma, atau URI yang berisi a Sediakan inline skema, dalam file definisi skema, atau gunakan deteksi otomatis skema. Jika Anda tidak menentukan skema, dan bq load \
--source_format=CSV \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.csv \
./myschema.json
7 adalah bq load \
--source_format=CSV \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.csv \
./myschema.json
0, dan tabel tujuan ada, maka skema tabel tujuan akan digunakan Tentukan bendera LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
_68 untuk menimpa tabel. Gunakan bendera LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
_64 untuk menambahkan data ke tabel. Jika tidak ada flag yang ditentukan, defaultnya adalah menambahkan data Dimungkinkan untuk memodifikasi skema tabel saat Anda menambahkan atau menimpanya. Untuk informasi selengkapnya tentang perubahan skema yang didukung selama operasi pemuatan, lihat Memodifikasi skema tabel (Opsional) Berikan bendera bq load \
--source_format=CSV \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.csv \
./myschema.json
_9 dan tetapkan nilainya ke lokasi Anda Bendera opsional lainnya termasuk Di mana Contoh Perintah berikut memuat data dari LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
_10 dan menimpa tabel bernama bq load \
--source_format=CSV \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.csv \
./myschema.json
3 di LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
12. Skema didefinisikan menggunakan deteksi otomatis skema Perintah berikut memuat data dari LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
_10 dan menambahkan data ke tabel bernama bq load \
--source_format=CSV \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.csv \
./myschema.json
3 di LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
12. Skema didefinisikan menggunakan file skema JSON — LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
13 Buat tugas LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
_47 yang mengarah ke sumber data di Cloud Storage (Opsional) Tentukan lokasi Anda di properti LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
48 di bagian LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
49 sumber daya pekerjaan Properti LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
_50 harus sepenuhnya memenuhi syarat, dalam format LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
51. Anda dapat menyertakan beberapa URI sebagai daftar yang dipisahkan koma. Catatan yang juga didukung Tentukan format data dengan menyetel properti bq --location=location load \
--source_format=format \
dataset.table \
path_to_source \
schema
20 ke bq load \
--source_format=CSV \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.csv \
./myschema.json
5 Tentukan preferensi tulis dengan menyetel properti bq --location=location load \
--source_format=format \
dataset.table \
path_to_source \
schema
22 ke LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
70 atau LOAD DATA OVERWRITE mydataset.mytable
FROM FILES (
format = 'CSV',
uris = ['gs://bucket/path/file.csv']);
67 Sebelum mencoba sampel ini, ikuti petunjuk penyiapan Go di panduan memulai BigQuery menggunakan pustaka klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API BigQuery Go . Lihat di GitHub bq --location=location load \
--source_format=format \
dataset.table \
path_to_source \
schema
_7 Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di panduan memulai BigQuery menggunakan pustaka klien. Untuk informasi lebih lanjut, lihat dokumentasi referensi BigQuery Java API. Lihat di GitHub bq --location=location load \
--source_format=format \
dataset.table \
path_to_source \
schema
_8 Sebelum mencoba contoh ini, ikuti Node. js petunjuk penyiapan di quickstart BigQuery menggunakan library klien. Untuk informasi selengkapnya, lihat BigQuery Node. js dokumentasi referensi API. Untuk mengganti baris dalam tabel yang ada, atur nilai bq --location=location load \
--source_format=format \
dataset.table \
path_to_source \
schema
25 dalam parameter bq --location=location load \
--source_format=format \
dataset.table \
path_to_source \
schema
26 ke bq --location=location load \
--source_format=format \
dataset.table \
path_to_source \
schema
27Menghibur
SQL
bq
bq --location=location load \
--source_format=format \
dataset.table \
path_to_source \
schema
_4API
Pergi
Jawa
Node. js
Lihat di GitHub
bq --location=location load \ --source_format=format \ dataset.table \ path_to_source \ schema _9
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di panduan memulai BigQuery menggunakan pustaka klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API BigQuery PHP .
Lihat di GitHub
bq load \ --source_format=CSV \ mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json 0
Piton
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di panduan memulai BigQuery menggunakan pustaka klien. Untuk informasi selengkapnya, lihat dokumentasi referensi API Python BigQuery.
Untuk mengganti baris dalam tabel yang sudah ada, setel properti ke konstanta SourceFormat LOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'CSV', uris = ['gs://bucket/path/file.csv']); 70
Lihat di GitHub
bq load \ --source_format=CSV \ mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json 1
Memuat data CSV yang dipartisi hive
BigQuery mendukung pemuatan data CSV yang dipartisi hive yang disimpan di Cloud Storage dan akan mengisi kolom partisi hive sebagai kolom di tabel tujuan yang dikelola BigQuery. Untuk informasi selengkapnya, lihat Memuat Data yang Dipartisi Secara Eksternal dari Cloud Storage
Detail pemuatan data CSV
Bagian ini menjelaskan cara BigQuery menangani berbagai opsi pemformatan CSV
Pengkodean
BigQuery mengharapkan data CSV berenkode UTF-8. Jika Anda memiliki file CSV dengan data yang dienkode dalam format ISO-8859-1 (juga dikenal sebagai Latin-1), Anda harus menentukan enkode secara eksplisit sehingga BigQuery dapat mengonversi data menjadi UTF-8 dengan benar
Jika Anda tidak menentukan enkode, atau jika Anda menentukan enkode UTF-8 saat file CSV tidak berenkode UTF-8, BigQuery akan mencoba mengonversi data menjadi UTF-8. Secara umum, data Anda akan berhasil dimuat, tetapi mungkin tidak sesuai dengan byte demi byte yang Anda harapkan. Untuk menghindari hal ini, tentukan penyandian yang benar dengan menggunakan bq --location=location load \ --source_format=format \ dataset.table \ path_to_source \ schema 29
Catatan. Secara default, jika file CSV berisi karakter ASCII bq load \ --source_format=CSV \ --time_partitioning_type=DAY \ mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json 7 (NULL), Anda tidak dapat memuat data ke BigQuery. Jika Anda ingin mengizinkan ASCII bq load \ --source_format=CSV \ --time_partitioning_type=DAY \ mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json _7 dan karakter kontrol ASCII lainnya, setel bq --location=location load \ --source_format=format \ dataset.table \ path_to_source \ schema 32 ke pekerjaan pemuatan AndaJika BigQuery tidak dapat mengonversi karakter selain karakter ASCII bq load \ --source_format=CSV \ --time_partitioning_type=DAY \ mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json 7, BigQuery mengonversi karakter tersebut menjadi karakter pengganti Unicode standar. �
Pembatas bidang
Pembatas dalam file CSV dapat berupa karakter single-byte apa pun. Jika file sumber menggunakan pengkodean ISO-8859-1, karakter apa pun dapat menjadi pembatas. Jika file sumber menggunakan pengkodean UTF-8, karakter apa pun dalam rentang desimal 1-127 (U+0001-U+007F) dapat digunakan tanpa modifikasi. Anda dapat menyisipkan karakter ISO-8859-1 di luar rentang ini sebagai pembatas, dan BigQuery akan menafsirkannya dengan benar. Namun, jika Anda menggunakan karakter multibita sebagai pembatas, beberapa byte akan diinterpretasikan secara tidak benar sebagai bagian dari nilai bidang
Umumnya, praktik terbaik adalah menggunakan pembatas standar, seperti tab, pipa, atau koma. Standarnya adalah koma
Tipe data
Boolean. BigQuery dapat mengurai salah satu pasangan berikut untuk data Boolean. 1 atau 0, benar atau salah, t atau f, ya atau tidak, atau y atau n (semua tidak peka huruf besar/kecil). Deteksi otomatis skema secara otomatis mendeteksi semua ini kecuali 0 dan 1Byte. Kolom dengan tipe BYTES harus dikodekan sebagai Base64
Tanggal. Kolom dengan tipe DATE harus dalam format bq load \ --source_format=CSV \ mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json 5
Tanggal Waktu. Kolom dengan tipe DATETIME harus dalam format bq --location=location load \ --source_format=format \ dataset.table \ path_to_source \ schema 35
Geografi. Kolom dengan tipe GEOGRAPHY harus berisi string dalam salah satu format berikut
- Teks terkenal (WKT)
- Biner terkenal (WKB)
- GeoJSON
Jika Anda menggunakan WKB, nilainya harus disandikan hex
Daftar berikut menunjukkan contoh data yang valid
- WKT. bq --location=location load \ --source_format=format \ dataset.table \ path_to_source \ schema _36
- GeoJSON. bq --location=location load \ --source_format=format \ dataset.table \ path_to_source \ schema _37
- WKB yang disandikan hex. bq --location=location load \ --source_format=format \ dataset.table \ path_to_source \ schema _38
Sebelum memuat data GEOGRAFI, baca juga
Selang. Kolom dengan jenis bq --location=location load \ --source_format=format \ dataset.table \ path_to_source \ schema 39 harus dalam format bq --location=location load \ --source_format=format \ dataset.table \ path_to_source \ schema 40, di mana
- Y = Tahun. Kisaran yang didukung adalah 0-10.000
- M = Bulan. Kisaran yang didukung adalah 1-12
- D = Hari. Kisaran yang didukung adalah 1- [hari terakhir dari bulan yang ditunjukkan]
- H = Jam
- M = Menit
- S = Kedua
- [. F] = Pecahan detik hingga enam digit, dengan presisi mikrodetik
Anda dapat menunjukkan nilai negatif dengan menambahkan tanda hubung (-)
Daftar berikut menunjukkan contoh data yang valid
- bq --location=location load \ --source_format=format \ dataset.table \ path_to_source \ schema _41
- bq --location=location load \ --source_format=format \ dataset.table \ path_to_source \ schema _42
- bq --location=location load \ --source_format=format \ dataset.table \ path_to_source \ schema _43
Untuk memuat data INTERVAL, Anda harus menggunakan perintah dan menggunakan flag bq --location=location load \ --source_format=format \ dataset.table \ path_to_source \ schema 45 untuk menentukan skema. Anda tidak dapat mengunggah data INTERVAL dengan menggunakan konsol
JSON. Kutipan diloloskan dengan menggunakan urutan dua karakter bq --location=location load \ --source_format=format \ dataset.table \ path_to_source \ schema 46. Untuk informasi lebih lanjut, lihat contoh dari
Waktu. Kolom dengan tipe TIME harus dalam format bq --location=location load \ --source_format=format \ dataset.table \ path_to_source \ schema 47
Stempel waktu. BigQuery menerima berbagai format stempel waktu. Stempel waktu harus menyertakan bagian tanggal dan bagian waktu
Bagian tanggal dapat diformat sebagai bq load \ --source_format=CSV \ mydataset.mytable \ gs://mybucket/mydata.csv \ ./myschema.json _5 atau bq --location=location load \ --source_format=format \ dataset.table \ path_to_source \ schema 49
Bagian stempel waktu harus diformat sebagai bq --location=location load \ --source_format=format \ dataset.table \ path_to_source \ schema 50 (detik dan pecahan detik adalah opsional)
Tanggal dan waktu harus dipisahkan dengan spasi atau 'T'
Opsional, tanggal dan waktu dapat diikuti dengan offset UTC atau penanda zona UTC (bq --location=location load \ --source_format=format \ dataset.table \ path_to_source \ schema 51). Untuk informasi lebih lanjut, lihat
Misalnya, salah satu dari berikut ini adalah nilai stempel waktu yang valid
- 19-08-2018 12. 11
- 19-08-2018 12. 11. 35
- 19-08-2018 12. 11. 35. 22
- 19/08/2018 12. 11
- 05-07-2018 12. 54. 00 UTC
- 19-08-2018 07. 11. 35. 220 -05. 00
- 2018-08-19T12. 11. 35. 220Z
Jika Anda memberikan skema, BigQuery juga menerima waktu epoch Unix untuk nilai stempel waktu. Namun, deteksi otomatis skema tidak mendeteksi kasus ini, dan memperlakukan nilai sebagai tipe numerik atau string
Contoh nilai cap waktu zaman Unix
- 1534680695
- 1. 534680695e11
Deteksi otomatis skema
Bagian ini menjelaskan perilaku deteksi otomatis skema saat memuat file CSV
pembatas CSV
BigQuery mendeteksi pembatas berikut
- koma ( , )
- pipa (. )
- tab ( \t )
Tajuk CSV
BigQuery menyimpulkan header dengan membandingkan baris pertama file dengan baris lain dalam file. Jika baris pertama hanya berisi string, dan baris lainnya berisi jenis data lain, BigQuery menganggap baris pertama adalah baris header. Dalam hal ini, BigQuery menetapkan nama kolom berdasarkan nama kolom di baris header. Nama mungkin dimodifikasi untuk memenuhi kolom for di BigQuery. Misalnya, spasi akan diganti dengan garis bawah
Jika tidak, BigQuery menganggap baris pertama adalah baris data, dan menetapkan nama kolom umum seperti bq --location=location load \ --source_format=format \ dataset.table \ path_to_source \ schema 52. Perhatikan bahwa setelah tabel dibuat, nama kolom tidak dapat diperbarui dalam skema, meskipun Anda dapat memperbaruinya setelah tabel dibuat. Pilihan lainnya adalah menyediakan skema eksplisit alih-alih menggunakan deteksi otomatis
Anda mungkin memiliki file CSV dengan baris header, yang semua bidang datanya berupa string. Dalam hal ini, BigQuery tidak akan otomatis mendeteksi bahwa baris pertama adalah header. Gunakan opsi bq load \ --autodetect \ --source_format=CSV \ mydataset.mytable \ gs://mybucket/mydata.csv _9 untuk melewati baris tajuk. Jika tidak, tajuk akan diimpor sebagai data. Pertimbangkan juga untuk menyediakan skema eksplisit dalam kasus ini, sehingga Anda dapat menetapkan nama kolom
CSV mengutip baris baru
BigQuery mendeteksi karakter baris baru yang dikutip dalam kolom CSV dan tidak menafsirkan karakter baris baru yang dikutip sebagai batas baris
opsi CSV
Untuk mengubah cara BigQuery mengurai data CSV, tentukan opsi tambahan di Google Cloud Console, alat baris perintah ________34______35, atau API