Cara menggunakan docker mysql import sql

Dalam kasus tertentu kita perlu memindahkan database dari server 1 ke server 2 dalam waktu singkat. Langkah umum yang dilakukan ada melakukan backup dari server 1 atau export dump kemudian melakukan restore pada server 2 atau import dump menggunakan Mysql Workbanch. Ketika database dengan jumlah baris sedikit cara tersebut masih bisa dilakukan. Bagaimana jika database sudah berukuran 1 GB atau lebih ? Cara diatas akan menghabiskan waktu cukup lama sedangkan waktu downtime dibatasi misal hanya 10 menit. Berikut adalah cara import dan export dengan ukuran database besar. Pastikan kita sudah cukup paham dengan environment linux untuk melakukan cara ini.


Kita asumsikan file backup akan disimpan di /home/totorajo/backup_mysql dan file dump kita beri nama backup_migrasi.sql. Berikut adalah perintah yang harus kita eksekusi dari SSH server 1. Pastikan kita login sebagai root.


Langkah diatas kita sudah berhasil melakukan backup selanjutnya file bisa didownload dan upload ke server 2. Bisa mengggunakn FTP atau menggunakan cara lain yang penting file bisa pindah ke server 2. Dalam hal ini file diupload dengan directory yang sama yaitu : 


/home/totorajo/backup_mysql/backup_migrasi.sql


Cara lain yang dimaksud bisa dengan SFTP, RSYNC atau WGET. Selanjutnya kita akan melakukan import dump tadi ke server 2. maka yang harus dilakukan adalah melakukan eksekusi perintah berikut :


Selamat mencoba, semoga membantu.


[email protected](host:port)/dbname [email protected](host:port)/dbname

Di bawah ini adalah penjelasan mengenai connection string yang digunakan pada fungsi package main import "fmt" import "database/sql" import _ "github.com/go-sql-driver/mysql" type student struct { id string name string age int grade int } 4.

[email protected](127.0.0.1:3306)/db_belajar_golang // user => root // password => // host => 127.0.0.1 atau localhost // port => 3306 // dbname => db_belajar_golang

Setelah fungsi untuk konektivitas dengan database sudah dibuat, saatnya untuk mempraktekan proses pembacaan data dari server database. Siapkan fungsi package main import "fmt" import "database/sql" import _ "github.com/go-sql-driver/mysql" type student struct { id string name string age int grade int } 5 dengan isi adalah kode berikut.

func sqlQuery() { db, err := connect() if err != nil { fmt.Println(err.Error()) return } defer db.Close() var age = 27 rows, err := db.Query("select id, name, grade from tb_student where age = ?", age) if err != nil { fmt.Println(err.Error()) return } defer rows.Close() var result []student for rows.Next() { var each = student{} var err = rows.Scan(&each.id, &each.name, &each.grade) if err != nil { fmt.Println(err.Error()) return } result = append(result, each) } if err = rows.Err(); err != nil { fmt.Println(err.Error()) return } for _, each := range result { fmt.Println(each.name) } }

Setiap kali terbuat koneksi baru, jangan lupa untuk selalu close instance koneksinya. Bisa menggunakan keyword package main import "fmt" import "database/sql" import _ "github.com/go-sql-driver/mysql" type student struct { id string name string age int grade int } 6 seperti pada kode di atas, package main import "fmt" import "database/sql" import _ "github.com/go-sql-driver/mysql" type student struct { id string name string age int grade int } 7.

Fungsi package main import "fmt" import "database/sql" import _ "github.com/go-sql-driver/mysql" type student struct { id string name string age int grade int } 8 digunakan untuk eksekusi sql query. Fungsi tersebut parameter keduanya adalah variadic, sehingga boleh tidak diisi. Pada kode di atas bisa dilihat bahwa nilai salah satu clause package main import "fmt" import "database/sql" import _ "github.com/go-sql-driver/mysql" type student struct { id string name string age int grade int } 9 adalah tanda tanya (func connect() (*sql.DB, error) { db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/db_belajar_golang") if err != nil { return nil, err } return db, nil } 0). Tanda tersebut kemudian akan ter-replace oleh nilai pada parameter setelahnya (nilai variabel func connect() (*sql.DB, error) { db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/db_belajar_golang") if err != nil { return nil, err } return db, nil } 1). Teknik penulisan query sejenis ini sangat dianjurkan, untuk mencegah sql injection.

Fungsi tersebut menghasilkan instance bertipe func connect() (*sql.DB, error) { db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/db_belajar_golang") if err != nil { return nil, err } return db, nil } 2, yang juga perlu di close ketika sudah tidak digunakan (func connect() (*sql.DB, error) { db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/db_belajar_golang") if err != nil { return nil, err } return db, nil } 3).

Selanjutnya, sebuah array dengan tipe elemen struct func connect() (*sql.DB, error) { db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/db_belajar_golang") if err != nil { return nil, err } return db, nil } 4 disiapkan dengan nama func connect() (*sql.DB, error) { db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/db_belajar_golang") if err != nil { return nil, err } return db, nil } 5. Nantinya hasil query akan ditampung ke variabel tersebut.

Kemudian dilakukan perulangan dengan acuan kondisi adalah func connect() (*sql.DB, error) { db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/db_belajar_golang") if err != nil { return nil, err } return db, nil } 6. Perulangan dengan cara ini dilakukan sebanyak jumlah total record yang ada, berurutan dari record pertama hingga akhir, satu per satu.

Method func connect() (*sql.DB, error) { db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/db_belajar_golang") if err != nil { return nil, err } return db, nil } 7 milik func connect() (*sql.DB, error) { db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/db_belajar_golang") if err != nil { return nil, err } return db, nil } 8 berfungsi untuk mengambil nilai record yang sedang diiterasi, untuk disimpan pada variabel pointer. Variabel yang digunakan untuk menyimpan field-field record dituliskan berurutan sebagai parameter variadic, sesuai dengan field yang di select pada query. Silakan lihat perbandingan di bawah ini unuk lebih jelasnya.

// query select id, name, grade ... // scan rows.Scan(&each.id, &each.name, &each.grade ...

Data record yang didapat kemudian di-append ke slice func connect() (*sql.DB, error) { db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/db_belajar_golang") if err != nil { return nil, err } return db, nil } 5, lewat statement user:[email protected](host:port)/dbname [email protected](host:port)/dbname 0.

OK, sekarang tinggal panggil fungsi package main import "fmt" import "database/sql" import _ "github.com/go-sql-driver/mysql" type student struct { id string name string age int grade int } 5 di user:[email protected](host:port)/dbname [email protected](host:port)/dbname 2, lalu jalankan program.

func main() { sqlQuery() }

Output:

[email protected](host:port)/dbname [email protected](host:port)/dbname 3

Untuk query yang menghasilkan 1 baris record saja, bisa gunakan method user:[email protected](host:port)/dbname [email protected](host:port)/dbname 3, dengan metode ini kode menjadi lebih ringkas. Chain dengan method func connect() (*sql.DB, error) { db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/db_belajar_golang") if err != nil { return nil, err } return db, nil } 7 untuk mendapatkan value-nya.

func sqlQueryRow() { var db, err = connect() if err != nil { fmt.Println(err.Error()) return } defer db.Close() var result = student{} var id = "E001" err = db. QueryRow("select name, grade from tb_student where id = ?", id). Scan(&result.name, &result.grade) if err != nil { fmt.Println(err.Error()) return } fmt.Printf("name: %s\ngrade: %d\n", result.name, result.grade) } func main() { sqlQueryRow() }

Dari kode di atas ada statement yang dituliskan cukup unik, chain statement boleh dituliskan dalam beberapa baris, contohnya:

CREATE TABLE IF NOT EXISTS `tb_student` ( `id` varchar(5) NOT NULL, `name` varchar(255) NOT NULL, `age` int(11) NOT NULL, `grade` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO `tb_student` (`id`, `name`, `age`, `grade`) VALUES ('B001', 'Jason Bourne', 29, 1), ('B002', 'James Bond', 27, 1), ('E001', 'Ethan Hunt', 27, 2), ('W001', 'John Wick', 28, 2); ALTER TABLE `tb_student` ADD PRIMARY KEY (`id`); 0

Sekarang jalankan program. Outputnya akan muncul data record sesuai id.

[email protected](host:port)/dbname [email protected](host:port)/dbname 6

Teknik prepared statement adalah teknik penulisan query di awal dengan kelebihan bisa di re-use atau digunakan banyak kali untuk eksekusi yang berbeda-beda.

Metode ini bisa digabung dengan user:[email protected](host:port)/dbname [email protected](host:port)/dbname 7 maupun user:[email protected](host:port)/dbname [email protected](host:port)/dbname 3. Berikut merupakan contoh penerapannya.

CREATE TABLE IF NOT EXISTS `tb_student` ( `id` varchar(5) NOT NULL, `name` varchar(255) NOT NULL, `age` int(11) NOT NULL, `grade` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO `tb_student` (`id`, `name`, `age`, `grade`) VALUES ('B001', 'Jason Bourne', 29, 1), ('B002', 'James Bond', 27, 1), ('E001', 'Ethan Hunt', 27, 2), ('W001', 'John Wick', 28, 2); ALTER TABLE `tb_student` ADD PRIMARY KEY (`id`); 1

Method user:[email protected](host:port)/dbname [email protected](host:port)/dbname 6 digunakan untuk deklarasi query, yang mengembalikan objek bertipe [email protected](127.0.0.1:3306)/db_belajar_golang // user => root // password => // host => 127.0.0.1 atau localhost // port => 3306 // dbname => db_belajar_golang 0. Dari objek tersebut, dipanggil method user:[email protected](host:port)/dbname [email protected](host:port)/dbname 3 beberapa kali dengan isi value untuk [email protected](127.0.0.1:3306)/db_belajar_golang // user => root // password => // host => 127.0.0.1 atau localhost // port => 3306 // dbname => db_belajar_golang 2 berbeda-beda untuk tiap pemanggilannya.

[email protected](127.0.0.1:3306)/db_belajar_golang // user => root // password => // host => 127.0.0.1 atau localhost // port => 3306 // dbname => db_belajar_golang 3 ataupun [email protected](127.0.0.1:3306)/db_belajar_golang // user => root // password => // host => 127.0.0.1 atau localhost // port => 3306 // dbname => db_belajar_golang 4 untuk eksekusinya. Direkomendasikan eksekusi perintah-perintah tersebut lewat fungsi [email protected](127.0.0.1:3306)/db_belajar_golang // user => root // password => // host => 127.0.0.1 atau localhost // port => 3306 // dbname => db_belajar_golang 5, contohnya seperti pada kode berikut.

CREATE TABLE IF NOT EXISTS `tb_student` ( `id` varchar(5) NOT NULL, `name` varchar(255) NOT NULL, `age` int(11) NOT NULL, `grade` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO `tb_student` (`id`, `name`, `age`, `grade`) VALUES ('B001', 'Jason Bourne', 29, 1), ('B002', 'James Bond', 27, 1), ('E001', 'Ethan Hunt', 27, 2), ('W001', 'John Wick', 28, 2); ALTER TABLE `tb_student` ADD PRIMARY KEY (`id`); 2

Teknik prepared statement juga bisa digunakan pada metode ini. Berikut adalah perbandingan eksekusi [email protected](127.0.0.1:3306)/db_belajar_golang // user => root // password => // host => 127.0.0.1 atau localhost // port => 3306 // dbname => db_belajar_golang 5 menggunakan user:[email protected](host:port)/dbname [email protected](host:port)/dbname 6 dan cara biasa.

A.56.7. Koneksi Dengan Engine Database Lain

Karena package CREATE TABLE IF NOT EXISTS `tb_student` ( `id` varchar(5) NOT NULL, `name` varchar(255) NOT NULL, `age` int(11) NOT NULL, `grade` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO `tb_student` (`id`, `name`, `age`, `grade`) VALUES ('B001', 'Jason Bourne', 29, 1), ('B002', 'James Bond', 27, 1), ('E001', 'Ethan Hunt', 27, 2), ('W001', 'John Wick', 28, 2); ALTER TABLE `tb_student` ADD PRIMARY KEY (`id`); 5 merupakan interface generic, maka cara untuk koneksi ke engine database lain (semisal Oracle, Postgres, SQL Server) adalah sama dengan cara koneksi ke MySQL. Cukup dengan meng-import driver yang digunakan, lalu mengganti nama driver pada saat pembuatan koneksi baru.

CREATE TABLE IF NOT EXISTS `tb_student` ( `id` varchar(5) NOT NULL, `name` varchar(255) NOT NULL, `age` int(11) NOT NULL, `grade` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO `tb_student` (`id`, `name`, `age`, `grade`) VALUES ('B001', 'Jason Bourne', 29, 1), ('B002', 'James Bond', 27, 1), ('E001', 'Ethan Hunt', 27, 2), ('W001', 'John Wick', 28, 2); ALTER TABLE `tb_student` ADD PRIMARY KEY (`id`); 3

Sebagai contoh saya menggunakan driver pq untuk koneksi ke server Postgres, maka connection string-nya:

CREATE TABLE IF NOT EXISTS `tb_student` ( `id` varchar(5) NOT NULL, `name` varchar(255) NOT NULL, `age` int(11) NOT NULL, `grade` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO `tb_student` (`id`, `name`, `age`, `grade`) VALUES ('B001', 'Jason Bourne', 29, 1), ('B002', 'James Bond', 27, 1), ('E001', 'Ethan Hunt', 27, 2), ('W001', 'John Wick', 28, 2); ALTER TABLE `tb_student` ADD PRIMARY KEY (`id`); 4

Selengkapya mengenai driver yang tersedia bisa dilihat di //github.com/golang/go/wiki/SQLDrivers.

Bagaimana cara import data pada phpMyAdmin?

Impor file SQL ke database MySQL.
Masuk ke phpMyAdmin..
Di phpMyAdmin, di menu sebelah kiri, pilih nama database yang ingin Anda gunakan. ... .
Di menu bagian atas, pilih Impor..
Gunakan Pilih file..
Temukan dan pilih file yang ingin Anda impor, lalu pilih Buka..
Di bagian bawah halaman, pilih Mulai..

Apa itu import database?

Abstrak: Import data adalah proses mengambil data dari database lain misalkan Microsoft Access kedalam SQL Server 2008, bisa juga Microsoft Excel yang telah kira miliki dilakukan import data kedalam SQL Server 2008.

Postingan terbaru

LIHAT SEMUA