Bulk Copy โ€“ Export Data From MS.SQL2000


Mau sharing sedikit disini. Kebetulan saya sedang mendapat tugas untuk membuat sistem yang dapat men-download data dari MS.SQL2000. Data yang di-inginkan disini bukan hanya 100 – 200 record saja, tapi sampai ratusan tibu bahkan jutaan record, dengan jumlah field yang ingin ditampilkan mencapai puluhan (dalam case saya mencapai 70 field).

Singkat cerita, pada MS.SQL 2000 terdapat fasilitas yang namanya Bulk Copy. Nah, si Bulk Copy ini bisa menulis hasil query ke dalam file lain (tex, Ms.Excel, dll). Dalam kasus saya ini, saya ingin meng-export hasil query saya ke dalam file Ms.Excel.

Kira-kira syntax yang saya gunakan seperti ini:

Format:

bcp [Database]..[Table] out "[OutputPath]" -S "[ServerName]" -U "[USERID]" -P "[Password]" -c -F [beginRow] -L [endRow]
Example:

bcp Example..simple out "C:\output.xls" -S "Server01" -U "admin" -P "admin" -c -F 1000 -L 2000

Penjelasannya secara singkat seperti ini:

  • [Database]..[Table] –> Tidak perlu menggunakan tanda petik, bisa digantikan dengan query tapi harus ditambahkan dengan tanda petik sebelum dan sesudah syntax.
  • out –> Jika meng-export langsung dari table gunakan out, jika menggunakan query maka syntax nya harus diubah menjadi queryout.
  • -c –> artinya output yang dikeluarkan menggunakan character type ASCII
  • -F –> artinya nomor column untuk memulai ditulis (Minimum 1)
  • -L –> artinya nomor column untuk berhenti menulis, dalam example di atas, output akan menulis Row ke 1000-2000.

Problem berikutnya yang muncul adalah Output yang dihasilkan tidak mempunyai header. Tapi masalah ini juga dapat diselesaikan dengan menggunakan simple trick. Untuk pembahasan simple trick ini, akan saya bahas pada artikle saya yang berikutnya. ๐Ÿ™‚

Silahkan dibaca artikel yang ini:

https://andreastjong.wordpress.com/2010/09/21/concat-two-file-with-command-prompt/

Advertisement

Cobain Kettle – Part1


Buat yang seneng maen-maen sama database kayaknya ada maenan baru yang asik nih. Kenalin ini namanya Kettle, Kettle kenalin ini namanya database geek user. :p

Pernah pakai yang namanya DTS di Ms. SQL Server? Kalo pernah.. Nah Kettle ini mirip2 kayak gitu deh, cuma bedanya yang ini Open Source, jadinya gratis. ๐Ÿ˜€

Buat yang belom pernah pakai yang namanya DTS di MS.SQL Server, saya coba jelasin secara sangat singkat sekali yah. Intinya ini adalah Tools untuk mentransfer isi suatu table di database ke table lain, bisa di databaseย  yang sama bisa juga di database lain. Caranya penggunaannya gampang sekali bapak ibu sekalian. Cukup di setting saja koneksi database asal dan database tujuan. Dipilih table sumber (atau bisa juga menggunakan query), lalu pilih table tujuan. Klik Run selesai.

Pengen tahu lebih banyak silahkan tunggu postingan saya yang berikutnya. Atau kalo yang sudah gak sabar. Bisa langsung liat2 di http://pentaho.phi-integration.com/kettle.

Maaf tidak bisa terlalu panjang nulisnya, karena ada masalah dengan internet connectionnya nih. :p

Limit pada SQL Server : Advanced 1


Pendahuluan

Melanjutkan pembahasan mengenai penerapan limit pada SQL Server, saya sudah coba gali lebih dalam, dan akan saya coba share ilmu yang sudah saya dapat.

Isi

Pada artikel saya yang sebelumnya, sudah coba saya jelaskan fungsi limit MySql dan cara penerapannya pada SQL Server, bisa diakses pada link berikut: https://andreastjong.wordpress.com/2008/09/20/limit-pada-sql-server/. Contoh yang saya berikan pada artikel sebelumnya hanya dapat digunakan apabila table tersebut hanya memiliki satu buah PK, dengan tipe alphanumeric. Pada kasus lainnya dimana pada satu table terdapat banyak PK, atau PK bukan bertipe alphanumeric, harus ada sedikit modifikasi pada cara yang saya berikan.

1. Table mempunyai 1 PK bertipe alphanumeric

Select TOP OFFSET
From Tablex
Where PK not in
(
Select TOP START PK
From Tablex
)

2. Table Mempunyai banyak PK

Karena function IN dan NOT IN hanya bisa mengecek satu field saja, maka ini menjadi sebuah permasalahan baru. Bagaimana menerapkan query seperti di atas? Salah satu caranya adalah dengan menggunakan funcrion CAST dan +, contoh:

Select TOP OFFSET
From Tablex
Where Cast(PK1 as varchar(10))+Cast(PK2 as varchar(10))
NOT IN
(
Select TOP START Cast(PK1 as varchar(10))+Cast(PK2 as varchar(10))
From Tablex
)

Perbesar ukuran Casting anda sesuai dengan keperluan saja.

3. Table tidak mempunyai PK

Kasus seperti ini sangatlah tidak diharapkan terjadi. Untuk kasus seperti ini, anda dapat menggunakan cara pada kasus2 dengan meng-casting satu persatu field yang ada. Hal ini perlu dilakukan untuk menghindari adanya data yang hilang saat proses terjadi.

Secara keseluruhan dengan menggunakan cara di atas dapat menyelesaikan permasalahan yang anda hadapi, tetapi cara tersebut mempunyai efek samping. Karena adanya perbandingan antara parent query dengan subquery menyebabkan workload yang tinggi. Terlebih lagi apabila anda ingin mencari record yang mendekati akhir row.

To be continued..

Limit pada SQL Server


Pendahuluan

Artikel ini saya buat sebagai rangkuman diskusi-diskusi dari berbagai community yang telah saya lakukan bersama dengan teman-teman saya, mengenai fungsi limit pada MySql yang tidak terdapat pada SQL Server.

Isi

Bagi anda yang sudah sering membangun website dengan menggunakan MySql sebagai DBMS-nya pasti anda sudah mengenal fungsi limit dengan baik. Biasanya fungsi limit ini akan anda gunakan untuk membantu anda dalam hal paging halaman website anda. Lupakan saja mengenai paging file, karena pada artikel ini tidak akan disinggung sedikit pun mengenai hal tersebut, dan bagi anda yang belum mengetahui fungsi limit itu seperti apa, tenang saja, saya akan berusaha menjelaskan mengenai fungsi ini sesingkat dan sejelas mungkin.

1. Fungsi Limit di MySql

Anggap kita punya table “x” dengan isi record, sebagai berikut:

Code Name
1 One Piece
2 Doraemon
3 Naruto
4 Dragon Ball
5 Mar
6 Kunimitsu
7 Slam Dunk
8 Ranma
9 Yakitate Japan
10 Yuyuhakuso

Coba ketikkan pada MySql editor anda:

select *
from x
limit 2,5

Output-nya adalah sebagai berikut :

Code Name
1 3 Naruto
2 4 Dragon Ball
3 5 Mar
4 6 Kunimitsu
5 7 Slam Dunk

Ya, benar sekali, memang fungsi limit hanyalah sesimple itu.

2. Limit pada SQL Server

Sekarang bagaimana caranya menerapkan fungsi limit pada SQL Server? Fungsi limit pada Sql Server tidaklah build-in. Cara yang paling mudah adalah dengan menerapkan fungsi TOP. Contoh :

Select TOP 5 *
From x
where code NOT IN
(
Select TOP 2 code
From x
)

OUTPUT-nya akan sama dengan contoh limit diatas.

Demikian penjelasan singkat dari saya.

To be continued: https://andreastjong.wordpress.com/2008/09/20/limit-pada-sql-server-advanced-1