Please disable your adblock and script blockers to view this page

Membuat statements INSERT dari Microsoft Excel - Tips

Permasalahan: Gue dapet project di perusahaan dengan jumlah karyawannya 10.000 – 50.000, dan harus memasukkan data karyawan tersebut sec...


Permasalahan:
Gue dapet project di perusahaan dengan jumlah karyawannya 10.000 – 50.000, dan harus memasukkan data karyawan tersebut secara keseluruhan menggunakan script query tanpa upload melalui aplikasi. Bisa dibayangkan gue harus ngetik manual kan?

Contohnya:

INSERT INTO NAMA_TABLE (Nama_Colomn_1, Nama_Colomn_1, .......) VALUES (‘Data_1’, ’Data_2’);

Gak mungkin banget gue insert seperti itu satu persatu dengan data yang berbeda – beda, kalo datanya sama sih bukan masalah, gue tinggal buat satu baris query terus copy paste aja, nah kalo gini kapan kelarnya coba?

Solusi:
Biasanya data yang sudah dipersiapkah user itu menggunakan Mcrosoft Excel. Kalo pake yang lain copy aja datanya ke Microsoft Excel biar gampang lah ya.

Berikut ini contoh datanya:

Sample data - afahru.com

sample sheet - afahru.com

  • Tanda panah merah menunjukan nama kolom (column name)
  • Tanda garis merah vertikal menunjukan data (values)
  • Nama sheet pada Excel diubah menjadi nama table (table name)

Tambahkan Macro pada Excel:
  • Pada ribbon "View" pilih "Macro"
sample macro - afahru.com
  1. Klik "Macro"
  2. Masukkan nama macro yang akan dibuat
  3. Terakhir pilih "Create", maka akan muncul tampilan seperti dibawah ini
sample code - afahru.com

Setelah muncul tampilan seperti diatas, masukkan code berikut ini:

========================================================================
Sub CreateInsertScript()
 Dim Row As Integer
 Dim Col As Integer

 'Untuk menyimpan kolom yang tersedia pada sheet yang aktif
 Dim ColNames(100) As String

 Col = 1
 Row = 1
 Dim ColCount As Integer
 ColCount = 0
 'Mengambil kolom pada sheet
 Do Until ActiveSheet.Cells(Row, Col) = "" 'Melakukan looping ketika menemukan blank
 ColNames(ColCount) = "" + ActiveSheet.Cells(Row, Col) + ""
 ColCount = ColCount + 1
 Col = Col + 1
 Loop
 ColCount = ColCount - 1

 'Masukkan untuk baris pertama dan terakhir
 Row = InputBox("Masukkan urutan angka baris pertama No.")
 Dim MaxRow As Integer
 MaxRow = InputBox("Masukkan urutan angka baris terakhir No.")

 'Lokasi penyimpanan untuk statements insert
 File = "F:\Script\InsertScript.txt"
 fHandle = FreeFile()
 Open File For Output As fHandle

 Dim CellColCount As Integer
 Dim StringStore As String 'Temporary variable untuk menyimpan partial statement

 Do While Row <= MaxRow
 StringStore = ""
 CellColCount = 0
 'ActiveSheet.Name untuk membaca Sheet yang sedang aktif
 'Bisa dipake untuk nama Table di Database
 StringStore = StringStore + "INSERT INTO " + ActiveSheet.Name + " ("
 Do While CellColCount <= ColCount
 StringStore = StringStore + ColNames(CellColCount)
 'Membuat pemisah "," setelah kolom terakhir
 If CellColCount <> ColCount Then
 StringStore = StringStore + ","
 End If
 CellColCount = CellColCount + 1
 Loop
 'Untuk membuat query "INSERT INTO TableName (Col1,Col2,..."
 Print #fHandle, StringStore + ")"

 'Untuk membuat nilai kolom
 StringStore = " VALUES("
 CellColCount = 0
 Do While CellColCount <= ColCount
 StringStore = StringStore + "'" + CStr(ActiveSheet.Cells(Row, CellColCount + 1)) + "'"
 If CellColCount <> ColCount Then
 StringStore = StringStore + ","
 End If
 CellColCount = CellColCount + 1
 Loop

 'Disini untuk membuat "VALUES('value1','value2',..."
 Print #fHandle, StringStore + ");"
 Print #fHandle, " "
 Row = Row + 1

 Loop

 Close #fHandle
 MsgBox ("Script berhasil dibuat!")
 End Sub
========================================================================
Code by: Arun Mallick
Modified by: Muhamad Fahrurrozi
========================================================================

Setelah menambahkan code diatas, kemudian save.
Selanjutnya, coba jalankan seperti dibawah ini:
  • Klik "Macro"
  • Pilih macro yang sudah dibuat
  • Klik "Run"
sample run - afahru.com

Maka akan muncul tampilan seperti berikut ini:

sample baris pertama - afahru.com

  • Pilih data baris terakhir, kemudian klik "Ok"
sample baris terakhir - afahru.com
  • Dan script berhasil dibuat dalam bentuk query
script berhasil - afahru.com

Dan ini hasil generate querynya

hasil generate - afahru.com

Semoga membantu :)

You Might Also Like

0 comments