• Tidak ada hasil yang ditemukan

IMPOR DAN EKSPOR DATA

Dalam dokumen Structured Query Language SQL (Halaman 41-56)

Sejauh ini, Anda telah mempelajari cara menambahkan beberapa baris ke tabel menggunakan pernyataan SQL INSERT. Sisipan baris demi baris berguna untuk membuat tabel uji cepat atau menambahkan beberapa baris ke tabel yang ada. Tetapi kemungkinan besar Anda harus memuat ratusan, ribuan, atau bahkan jutaan baris, dan tidak ada yang ingin menulis pernyataan INSERT terpisah dalam situasi tersebut. Untungnya, Anda tidak perlu melakukannya.

Jika data Anda ada dalam file teks yang dibatasi (dengan satu baris tabel per baris teks dan setiap nilai kolom dipisahkan dengan koma atau karakter lain) PostgreSQL dapat mengimpor data secara massal melalui perintah COPY-nya. Perintah ini adalah implementasi khusus PostgreSQL dengan opsi untuk menyertakan atau mengecualikan kolom dan menangani berbagai jenis teks yang dibatasi.

Sebaliknya, COPY juga akan mengekspor data dari tabel PostgreSQL atau dari hasil kueri ke file teks yang dibatasi. Teknik ini berguna saat Anda ingin berbagi data dengan rekan kerja atau memindahkannya ke format lain, seperti file Excel.

Saya secara singkat menyentuh SALIN untuk ekspor di "Karakter" di halaman 24, tapi dalam bab ini saya akan membahas impor dan ekspor secara lebih mendalam. Untuk mengimpor, saya akan mulai dengan memperkenalkan Anda ke salah satu kumpulan data favorit saya:

penghitungan populasi Sensus AS Tahunan menurut wilayah.

Tiga langkah membentuk garis besar sebagian besar impor yang akan Anda lakukan:

1. Siapkan data sumber dalam bentuk file teks yang dibatasi.

2. Buat tabel untuk menyimpan data.

3. Tulis skrip SALIN untuk melakukan impor.

Setelah impor selesai, kami akan memeriksa data dan melihat opsi tambahan untuk mengimpor dan mengekspor.

File teks yang dibatasi adalah format file paling umum yang portabel di seluruh sistem berpemilik dan sumber terbuka, jadi kami akan fokus pada jenis file tersebut. Jika Anda ingin mentransfer data dari format kepemilikan program database lain langsung ke PostgreSQL, seperti Microsoft Access atau MySQL, Anda harus menggunakan alat pihak ketiga. Periksa wiki PostgreSQL di https://wiki.postgresql.org/wiki/ dan cari "Mengonversi dari Database lain ke PostgreSQL" untuk daftar alat.

Jika Anda menggunakan SQL dengan pengelola database lain, periksa dokumentasi database lain untuk mengetahui cara menangani impor massal. Database MySQL, misalnya, memiliki pernyataan LOAD DATA INFILE, dan Microsoft SQL Server memiliki perintah BULK INSERT sendiri.

Bekerja dengan File Teks Dibatasi

Banyak aplikasi perangkat lunak menyimpan data dalam format yang unik, dan menerjemahkan satu format data ke format data lainnya semudah mencoba membaca alfabet Cyrillic jika mereka hanya mengerti bahasa Inggris. Untungnya, sebagian besar perangkat lunak dapat mengimpor dari dan mengekspor ke file teks terbatas, yang merupakan format data umum yang berfungsi sebagai jalan tengah.

File teks yang dipisahkan berisi baris data, dan setiap baris mewakili satu baris dalam tabel. Di setiap baris, karakter memisahkan, atau membatasi, setiap kolom data. Saya telah melihat semua jenis karakter yang digunakan sebagai pembatas, dari ampersand hingga pipa, tetapi koma paling sering digunakan; maka nama jenis file yang akan sering Anda lihat: nilai yang dipisahkan koma (CSV). Istilah CSV dan dipisahkan koma dapat dipertukarkan.

Berikut adalah baris data umum yang mungkin Anda lihat dalam file yang dipisahkan koma:

John, Doe, 123 Main St., Hyde Park, NY, 845-555-1212

Perhatikan bahwa koma memisahkan setiap bagian data—nama depan, nama belakang, jalan, kota, negara bagian, dan telepon—tanpa spasi. Koma memberitahu perangkat lunak untuk memperlakukan setiap item sebagai kolom terpisah, baik pada saat impor atau ekspor. Cukup sederhana.

Mengutip Kolom yang Mengandung Pembatas

Menggunakan koma sebagai pembatas kolom menyebabkan potensi dilema: bagaimana jika nilai dalam kolom menyertakan koma? Misalnya, terkadang orang menggabungkan nomor apartemen dengan alamat jalan, seperti di 123 Main St., Apartment 200. Kecuali jika sistem untuk membatasi akun untuk koma tambahan itu, selama impor baris akan tampak memiliki kolom tambahan dan menyebabkan impor gagal.

Untuk menangani kasus seperti itu, file delimited membungkus kolom yang berisi karakter pembatas dengan karakter arbitrer yang disebut kualifikasi teks yang memberitahu SQL untuk mengabaikan karakter pembatas yang ada di dalamnya. Sebagian besar waktu dalam file yang dibatasi koma, kualifikasi teks yang digunakan adalah tanda kutip ganda. Berikut contoh baris data lagi, tetapi dengan nama jalan yang diapit oleh tanda kutip ganda:

John, Doe, “123 Main St., Apartement 200”, Hyde Park, NY,845-555-1212

Saat impor, database akan mengenali bahwa tanda kutip ganda menandakan satu kolom terlepas dari apakah ia menemukan pembatas di dalam tanda kutip. Saat mengimpor file CSV, PostgreSQL secara default mengabaikan pembatas di dalam kolom kutip ganda, tetapi Anda dapat menentukan qualifier teks yang berbeda jika impor Anda memerlukannya. (Dan, mengingat terkadang pilihan aneh yang dibuat oleh para profesional TI, Anda mungkin memang perlu menggunakan karakter yang berbeda.)

Menangani Baris Header

Fitur lain yang sering Anda temukan di dalam file teks yang dibatasi adalah baris header.

Seperti namanya, ini adalah satu baris di bagian atas, atau kepala, file yang mencantumkan nama setiap bidang data. Biasanya, header dibuat selama ekspor data dari database. Berikut ini contoh dengan baris terbatas yang saya gunakan:

FIRSTNAME,LASTNAME,STREET,CITY,STATE,PHONE

John, Doe, “123 Main St., Apartement 200”, Hyde Park, NY,845-555-1212

Baris header memiliki beberapa tujuan. Pertama, nilai di baris header mengidentifikasi data di setiap kolom, yang sangat berguna saat Anda menguraikan konten file. Kedua, beberapa manajer database (walaupun bukan PostgreSQL) menggunakan baris header untuk memetakan kolom dalam file yang dibatasi ke kolom yang benar di tabel impor. Karena PostgreSQL tidak menggunakan baris header, kami tidak ingin baris tersebut diimpor ke tabel, jadi kami akan menggunakan opsi HEADER dalam perintah COPY untuk mengecualikannya.

Saya akan membahas ini dengan semua opsi SALIN di bagian selanjutnya.

Menggunakan COPY untuk Mengimpor Data

Untuk mengimpor data dari file eksternal ke database kita, pertama kita perlu memeriksa file CSV sumber dan membuat tabel di PostgreSQL untuk menyimpan data. Setelah itu, pernyataan SQL untuk impor relatif sederhana. Yang Anda butuhkan hanyalah tiga baris kode .

COPY table_name

FROM ‘C:\YourDirectory\your_file.csv’

WITH (FORMAT CSV, HEADER);

Blok kode dimulai dengan kata kunci COPY diikuti dengan nama tabel target, yang harus sudah ada di database Anda. Pikirkan sintaks ini sebagai makna, "Salin data ke tabel saya yang disebut table_name."

Kata kunci FROM mengidentifikasi path lengkap ke file sumber, termasuk namanya. Cara Anda menentukan jalur tergantung pada sistem operasi Anda. Untuk Windows, mulai dengan huruf drive, titik dua, garis miring terbalik, dan nama direktori. Misalnya, untuk mengimpor file yang terletak di desktop Windows saya, baris FROM akan berbunyi:

FROM ‘C:\Users\Anthony\Desktop\my_file.csv’

Di macOS atau Linux, mulai dari direktori root sistem dengan garis miring dan lanjutkan dari sana. Inilah yang mungkin terlihat seperti garis FROM saat mengimpor file yang terletak di desktop Mac saya:

FROM ‘\Users\Anthony\Desktop\my_file.csv’

Perhatikan bahwa dalam kedua kasus, path lengkap dan nama file diapit oleh tanda kutip tunggal. Untuk contoh dalam buku ini, saya menggunakan jalur gaya Windows C:\YourDirectory\ sebagai pengganti. Ganti itu dengan jalur tempat Anda menyimpan file.

Kata kunci WITH memungkinkan Anda menentukan opsi, dikelilingi oleh tanda kurung, yang dapat Anda sesuaikan dengan file input atau output Anda. Di sini kita menentukan bahwa file eksternal harus dibatasi koma, dan kita harus mengecualikan baris header file dalam impor.

Sebaiknya periksa semua opsi dalam dokumentasi PostgreSQL resmi di https://www.postgresql.org/docs/current/ static/sql-copy.html, tetapi berikut adalah daftar opsi yang biasa Anda gunakan:

Format file input dan output

Gunakan opsi FORMAT format_name untuk menentukan jenis file yang sedang Anda baca atau tulis. Nama formatnya adalah CSV, TEXT, atau BINARY. Kecuali Anda mendalami membangun sistem teknis, Anda akan jarang menemukan kebutuhan untuk bekerja dengan BINARY, di mana data disimpan sebagai urutan byte. Lebih sering, Anda akan bekerja dengan file CSV standar. Dalam format TEXT, karakter tab adalah pembatas secara default (walaupun Anda dapat menentukan karakter lain) dan karakter garis miring terbalik seperti \r dikenali sebagai padanan ASCII dalam hal ini, carriage return. Format TEXT digunakan terutama oleh program pencadangan bawaan PostgreSQL.

HEADER

Saat mengimpor, gunakan HEADER untuk menentukan bahwa file sumber memiliki baris header. Anda juga dapat menentukannya secara langsung sebagai HEADER ON, yang memberi tahu database untuk mulai mengimpor dengan baris kedua file, mencegah impor header yang tidak diinginkan. Anda tidak ingin nama kolom di header menjadi bagian dari data dalam tabel.

Pada ekspor, menggunakan HEADER memberitahu database untuk memasukkan nama kolom sebagai baris header dalam file output, yang biasanya berguna untuk dilakukan.

Pembatas/DELIMITER

Opsi 'karakter' DELIMITER memungkinkan Anda menentukan karakter mana yang digunakan file impor atau ekspor sebagai pembatas. Pembatas harus berupa karakter tunggal dan tidak boleh berupa carriage return. Jika Anda menggunakan FORMAT CSV, pembatas yang diasumsikan adalah koma. Saya menyertakan DELIMITER di sini untuk menunjukkan bahwa Anda memiliki opsi untuk menentukan pembatas yang berbeda jika begitulah cara data Anda tiba. Misalnya, jika Anda menerima data yang dibatasi pipa, Anda akan memperlakukan opsi seperti ini: DELIMITER '|'.

Kutipan Karakter/Quote

Sebelumnya, Anda mengetahui bahwa dalam CSV, koma di dalam satu nilai kolom akan mengacaukan impor Anda kecuali jika nilai kolom dikelilingi oleh karakter yang berfungsi sebagai kualifikasi teks, memberi tahu database untuk menangani nilai di dalam sebagai satu kolom. Secara default, PostgreSQL menggunakan tanda kutip ganda, tetapi jika CSV yang Anda impor menggunakan karakter yang berbeda, Anda dapat menentukannya dengan opsi QUOTE 'quote_character'. Sekarang setelah Anda lebih memahami file yang dibatasi, Anda siap untuk mengimpornya.

Mengimpor Data Sensus yang Menggambarkan Kabupaten

Kumpulan data yang akan Anda gunakan dalam latihan impor ini jauh lebih besar daripada tabel guru yang Anda buat di Bab 1. Ini berisi data sensus tentang setiap daerah di Amerika Serikat dan memiliki kedalaman 3.143 baris dan lebar 91 kolom.

Untuk memahami data, ada baiknya mengetahui sedikit tentang Sensus AS. Setiap 10 tahun, pemerintah melakukan penghitungan penduduk secara penuh—salah satu dari beberapa program yang sedang berlangsung oleh Biro Sensus untuk mengumpulkan data demografis.

Setiap rumah tangga di Amerika menerima kuesioner tentang setiap orang di dalamnya—usia, jenis kelamin, ras, dan apakah mereka orang Hispanik atau bukan. Konstitusi AS mengamanatkan penghitungan untuk menentukan berapa banyak anggota dari setiap negara bagian yang membentuk Dewan Perwakilan Rakyat AS. Berdasarkan Sensus 2010, misalnya, Texas memperoleh empat kursi di DPR sementara New York dan Ohio masing-masing kehilangan dua kursi. Meskipun pembagian kursi DPR adalah tujuan utama penghitungan, data ini juga merupakan keuntungan bagi pelacak tren yang mempelajari populasi. Sebuah sinopsis

yang baik dari temuan hitungan 2010 tersedia di

https://www.census.gov/prod/cen2010/briefs/c2010br-01.pdf.

Biro Sensus melaporkan total populasi keseluruhan dan jumlah berdasarkan ras dan etnis untuk berbagai geografi termasuk negara bagian, kabupaten, kota, tempat, dan distrik sekolah.

Untuk latihan ini, saya menyusun kumpulan kolom terpilih untuk penghitungan tingkat kabupaten Sensus 2010 ke dalam file bernama us_counties_2010.csv. Unduh file us_counties_2010.csv dari https://www.nostarch.com/practicalSQL/ dan simpan ke folder di komputer Anda.

Buka file dengan editor teks biasa. Anda akan melihat baris header yang dimulai dengan kolom berikut:

NAME,STUSAB,SUMLEV,REGION,DIVISION,STATE,COUNTY –-snip—

Mari kita jelajahi beberapa kolom dengan memeriksa kode untuk membuat tabel impor.

Membuat Tabel us_counties_2010

Kode dalam Daftar 4-2 hanya menampilkan versi singkat dari skrip CREATE TABLE; banyak kolom telah dihilangkan. Versi lengkap tersedia (dan diberi keterangan) bersama dengan semua contoh kode di sumber buku. Untuk mengimpornya dengan benar, Anda harus mengunduh definisi tabel lengkap.

CREATE TABLE us_counties_2000 ( geo_name varchar(90),

state_us_abbrevitation varchar(2), summary_level varchar(3),

region smallint, division smallint, state_fips varchar(2), country_fips varchar(3),

area_land bigint, area_water bigint,

population_count_100_percent integer, housing_unit_count_100_percent integer, internal_point_lat numeric(10,7),

internal_point_lon numeric(10,7), p0010001 integer,

p0010002 integer, p0010003 integer, p0010004 integer, p0010005 integer, --snip—-

p0040049 integer, p0040065 integer, p0040072 integer, p0010001 integer, p0010002 integer, p0010003 integer, );

Untuk membuat tabel, di pgAdmin klik database analisis yang Anda buat di Bab 1. (Sebaiknya simpan data dalam buku ini dalam analisis karena kami akan menggunakannya kembali di bab selanjutnya.) Dari bilah menu pgAdmin, pilih Alat Alat Kueri. Rekatkan skrip ke jendela dan jalankan.

Kembali ke jendela pgAdmin utama, dan di browser objek, klik kanan dan segarkan database analisis. Pilih Skema > publik > Tabel untuk melihat tabel baru. Meskipun kosong, Anda dapat melihat strukturnya dengan menjalankan kueri SELECT dasar di Alat Kueri pgAdmin:

SELECT * from us_counties_2010;

Saat Anda menjalankan kueri SELECT, Anda akan melihat kolom dalam tabel yang Anda buat.

Belum ada baris data.

Kolom Sensus dan Tipe Data

Sebelum kita mengimpor file CSV ke dalam tabel,. Sebagai panduan saya, saya menggunakan kamus data sensus resmi untuk kumpulan data ini yang ditemukan di

http://www.census.gov/prod/cen2010/doc/pl94-171.pdf meskipun saya memberikan beberapa kolom nama yang lebih mudah dibaca dalam tabel definisi. Mengandalkan kamus data bila memungkinkan adalah praktik yang baik, karena membantu Anda menghindari kesalahan konfigurasi kolom atau potensi kehilangan data. Selalu tanyakan apakah ada yang tersedia, atau lakukan pencarian online jika datanya bersifat publik.

Dalam kumpulan data sensus ini, dan dengan demikian tabel yang baru saja Anda buat, setiap baris menggambarkan demografi satu kabupaten, dimulai dengan geo_name dan singkatan negara bagian dua karakternya, state_us_abbreviation ❷. Karena keduanya adalah teks, kami menyimpannya sebagai varchar. Kamus data menunjukkan bahwa panjang maksimum bidang geo_name adalah 90 karakter, tetapi karena sebagian besar nama lebih pendek, menggunakan varchar akan menghemat ruang jika kita mengisi bidang dengan nama yang lebih pendek, seperti Lee County, sementara memungkinkan kita untuk menentukan maksimum 90 karakter.

Geografi, atau tingkat ringkasan, yang diwakili oleh setiap baris dijelaskan oleh tingkat_ringkasan. Kami hanya bekerja dengan data tingkat kabupaten, jadi kodenya sama untuk setiap baris: 050. Meskipun kode itu menyerupai angka, kami memperlakukannya sebagai teks dengan menggunakan varchar lagi. Jika kita menggunakan tipe integer, awalan 0 akan dihapus saat impor, menyisakan 50. Kita tidak ingin melakukannya karena 050 adalah

kode level ringkasan lengkap, dan kita akan mengubah arti data jika 0 terkemuka hilang. Juga, kami tidak akan melakukan matematika dengan nilai ini.

Angka dari 0 sampai 9 di region dan divisi mewakili lokasi sebuah county di Amerika Serikat, seperti Northeast, Midwest, atau South Atlantic. Tidak ada angka yang lebih tinggi dari 9, jadi kami mendefinisikan kolom dengan tipe smallint. Kami kembali menggunakan varchar untuk state_fips dan county_fips, yang merupakan kode federal standar untuk entitas tersebut, karena kode tersebut berisi nol di depan yang tidak boleh dihilangkan. Selalu penting untuk membedakan kode dari angka; nilai negara bagian dan kabupaten ini sebenarnya adalah label yang bertentangan dengan angka yang digunakan untuk matematika.

Jumlah meter persegi untuk tanah dan air di kabupaten dicatat di area_tanah dan area_air, masing-masing. Di tempat-tempat tertentu ‘seperti Alaska’ di mana ada banyak tanah yang harus dilalui dengan semua salju itu beberapa nilai dengan mudah melampaui nilai maksimum tipe integer 2.147.483.648. Untuk alasan itu, kami menggunakan bigint, yang akan menangani 376.855.656.455 meter persegi di Area Sensus Yukon-Koyukuk dengan ruang kosong.

Selanjutnya, population_count_100_percent dan housing_unit_count_100_percent adalah jumlah total populasi dan unit perumahan dalam geografi. Pada tahun 2010, Amerika Serikat memiliki 308,7 juta orang dan 131,7 juta unit rumah. Populasi dan unit perumahan untuk daerah mana pun sangat cocok dengan batas tipe data bilangan bulat, jadi kami menggunakannya untuk keduanya.

Lintang dan bujur suatu titik di dekat pusat county, yang disebut titik internal, ditentukan dalam internal_point_lat dan internal_point_lon, masing-masing. Biro Sensus—bersama dengan banyak sistem pemetaan—mengungkapkan koordinat lintang dan bujur menggunakan sistem derajat desimal. Lintang mewakili posisi utara dan selatan di dunia, dengan khatulistiwa pada 0 derajat, Kutub Utara pada 90 derajat, dan Kutub Selatan pada 90 derajat.

Bujur mewakili lokasi timur dan barat, dengan Meridian Utama yang melewati Greenwich di London pada 0 derajat bujur. Dari sana, bujur meningkat baik timur dan barat (angka positif ke timur dan negatif ke barat) sampai mereka bertemu pada 180 derajat di sisi berlawanan dari dunia. Lokasi di sana, yang dikenal sebagai antimeridian, digunakan sebagai dasar untuk Garis Tanggal Internasional.

Saat melaporkan titik interior, Biro Sensus menggunakan hingga tujuh tempat desimal. Dengan nilai hingga 180 di sebelah kiri desimal, kita perlu menghitung total maksimum 10 digit. Jadi, kami menggunakan numerik dengan presisi 10 dan skala 7.

Catatan: PostgreSQL, melalui ekstensi PostGIS, dapat menyimpan data geometris, yang mencakup titik-titik yang mewakili garis lintang dan garis bujur dalam satu kolom. Kami akan menjelajahi data geometris saat kami membahas kueri geografis di Bab 14.

Akhirnya, kami mencapai serangkaian kolom yang berisi iterasi jumlah populasi menurut ras dan etnis untuk county serta jumlah unit perumahan. Kumpulan lengkap data Sensus 2010 berisi 291 kolom ini. Saya telah menguranginya menjadi 78 untuk latihan ini, menghilangkan banyak kolom untuk membuat kumpulan data lebih ringkas untuk latihan ini.

Saya tidak akan membahas semua kolom sekarang, tetapi Tabel 4.1 menunjukkan contoh kecil.

Tabel 4.1: Kolom Penghitungan Penduduk Sensus Nama kolom Deskripsi

p0010001 Jumlah penduduk p0010002 Populasi satu ras

p0010003 Populasi satu ras: Putih saja

p0010004 Populasi satu ras: Hitam atau Afrika Amerika saja

p0010005 Populasi satu ras: Indian Amerika dan Penduduk Asli Alaska saja p0010006 Populasi satu ras: Asia saja

p0010007 Populasi satu ras: Penduduk Asli Hawaii dan Penduduk Kepulauan Pasifik Lainnya saja

p0010008 Populasi satu ras: Beberapa Ras Lain saja

Anda akan menjelajahi data ini lebih lanjut di bab berikutnya ketika kita melihat matematika dengan SQL. Untuk saat ini, mari kita jalankan impor.

Melakukan Sensus Impor dengan COPY

Sekarang Anda siap untuk membawa data sensus ke dalam tabel. Jalankan kode di Listing dibawah ini, ingat untuk mengubah path ke file agar sesuai dengan lokasi data di komputer Anda:

COPY us_counties_2010

FROM ‘C:\YourDirectory\us_countiess_2010.csv’

WITH (FORMAT CSV. HEADER);

Saat kode dijalankan, Anda akan melihat pesan berikut di pgAdmin:

Query returned successfully: 3143 rows affected

Itu kabar baik: CSV impor memiliki jumlah baris yang sama. Jika Anda memiliki masalah dengan CSV sumber atau pernyataan impor Anda, database akan menampilkan kesalahan. Misalnya, jika salah satu baris di CSV memiliki lebih banyak kolom daripada di tabel target, Anda akan melihat pesan kesalahan yang memberikan petunjuk tentang cara memperbaikinya:

ERROR: Extra data after last expected column SQL state: 22P04

Context: COPY us_counties_2010, line 2: Autauga County,AL,050,3,5,6,01...”

Meskipun tidak ada kesalahan yang dilaporkan, ada baiknya untuk memindai secara visual data yang baru saja Anda impor untuk memastikan semuanya terlihat seperti yang diharapkan.

Mulailah dengan kueri SELECT dari semua kolom dan baris:

SELECT * FROM us_counties_2010;

Seharusnya ada 3.143 baris yang ditampilkan di pgAdmin, dan saat Anda menggulir ke kiri dan kanan melalui kumpulan hasil, setiap bidang harus memiliki nilai yang diharapkan. Mari kita

tinjau beberapa kolom yang sangat hati-hati kami definisikan dengan tipe data yang sesuai.

Misalnya, jalankan kueri berikut untuk memperlihatkan kabupaten dengan nilai area_land terbesar. Kami akan menggunakan klausa LIMIT, yang akan menyebabkan kueri hanya mengembalikan jumlah baris yang kami inginkan; di sini, kami akan meminta tiga:

SELECT geo_name, state_us_abbrevitation, area_land FROM us_counties_2010

ORDER BY area_land DESC LIMIT 3;

Kueri ini memberi peringkat geografi tingkat kabupaten dari luas daratan terbesar hingga terkecil dalam meter persegi. Kami mendefinisikan area_land sebagai bigint karena nilai terbesar di lapangan lebih besar dari kisaran atas yang disediakan oleh bilangan bulat biasa.

Seperti yang Anda duga, geografi besar Alaska berada di urutan teratas:

geo_name state_us_abbreviation area_land

--- --- --- Yukom-Koyoku Census Area AK 376855656455 North Slope Borough AK 229720054439 Bethel Census Area AK 105075822708

Selanjutnya, periksa kolom lintang dan bujur dari internal_point_lat dan internal_point_lon, yang kita definisikan dengan numerik (10,7). Kode ini mengurutkan kabupaten berdasarkan garis bujur dari nilai terbesar hingga terkecil. Kali ini, kami akan menggunakan LIMIT untuk mengambil lima baris:

SELECT geo_name, state_us_abbreviation, internal_point_lon FROM us_counties_2010

ORDER BY internal_point_lon DESC LIMIT 5;

Garis bujur mengukur lokasi dari timur ke barat, dengan lokasi di sebelah barat Meridian Utama di Inggris direpresentasikan sebagai angka negatif yang dimulai dengan 1, 2, 3, dan seterusnya semakin jauh ke barat Anda pergi. Kami mengurutkan dalam urutan menurun, jadi kami berharap kabupaten paling timur di Amerika Serikat muncul di bagian atas hasil kueri.

Ada satu-satunya geografi Alaska di bagian atas:

geo_name state_us_abbreviation internal_point_lon --- --- --- Aleutians West Census Area AK 178.3388130

Washington County ME -67.6093542

Hancock County ME -68.3707034

Aroostook County ME -68.6494098

Penobscot County ME -68.6574869

Inilah alasannya: Kepulauan Aleutian Alaska membentang begitu jauh ke barat (lebih jauh ke barat dari Hawaii) sehingga mereka melintasi antimeridian pada 180 derajat bujur dengan kurang dari 2 derajat. Setelah melewati antimeridian, garis bujur berubah menjadi positif, menghitung mundur ke 0. Untungnya, data tersebut tidak salah; namun, itu adalah fakta yang dapat Anda simpan untuk kompetisi tim trivia berikutnya.

Selamat! Anda memiliki kumpulan data demografis pemerintah yang sah di database Anda.

Saya akan menggunakannya untuk mendemonstrasikan mengekspor data dengan COPY nanti

Dalam dokumen Structured Query Language SQL (Halaman 41-56)