Memasukkan Data dari File Teks Excel ke

Memasukkan Data dari File
Teks/Excel ke Database
By
rumono
– May 12, 2010Posted in: Database
Biasanya orang lebih banyak menyimpan datanya dalam
aplikasi seperti Microsoft Excel, karena memang banyak
orang yang telah terbiasa dengan aplikasi tersebut.
Masalah akan timbul ketika data yang sudah terlanjur
diketikkan
tersebut
ingin
dimasukkan
langsung
ke database.. nggak ada kerjaan banget, kalau harus
mengetik ulang ke database apalagi jika datanya kelewat
banyak..
Bagi yang mengerti database memang ada cara yang
lebih mudah yaitu dengan menggunakan fasilitas Import
and Export Data atau dengan pernyataan SQL. Untuk
programmer yang ingin menambahkan fasilitas import

data dalam aplikasi yang dikembangkannya, agar setiap
user bisa memasukkan sendiri data dari file teks atau
Excel, tentu saja pilihannya adalah pernyataan SQL.
Saya mengasumsikan kamu memakai database SQL
Server 2000, yang biasanya pada saat installasi telah
membuatkan beberapa contoh database. Dalam artikel ini
saya memakai database Northwind, dan data file akan
dimasukkan dalam tabel Customers.. Sebelumnya
download dulu file excel Sample Data Excel, sedang
contoh file teks bisa diperoleh dengan mengkonversi file
excel tersebut menjadi file Text (tab delimited)..
Cara mengkonversinya, buka file excel tersebut kemudian
klik menu File -> Save as…, dan ikut langkahnya seperti
gambar berikut ini

Pada saat kamu menekan tombol Save, akan muncul dua
pesan.. tekan tombol OK pada pesan pertama dan tekan
tombol Yes pada pesan kedua. Seperti gambar di atas,
Saya menyimpan file text tadi di path ‘F:\Private\project for
blog\’.. Seharusnya sekarang di folder tersebut ada

file sampledata.txt. Selanjutnya tutup kembali aplikasi
Microsoft Excel, jika muncul pesan konfirmasi untuk
menyimpan, sebaiknya tekan tombol No agar keadaan file
excel tetap seperti sedia kala..
Pernyataan SQL untuk memasukkan data dari file
tergantung pada jenis file-nya. Dalam artikel ini saya
menggunakan dua macam pernyataan yaitu BULK
INSERT dan INSERT INTO..
1. Memasukkan data dari file teks dengan pernyataan
BULK INSERT
Secara ringkas pernyataan SQL untuk memasukkan data
dari file sampledata.txt seperti gambar di bawah ini

Saya
memakai syntax tersebut
dalam database SQL
Server 2000, untuk database lain mungkin syntax-nya
berbeda. Pemilik (owner) tabel biasanya dbo, walaupun
tidak tertutup kemungkinan ada tabel yang owner-nya
adalah

user
yang
membuat
tabel
tersebut.
Variabel DATAFILETYPE dipilih char karena file data
terdiri atas karakter, variabel ini mempunyai empat macam
nilai
Nilai

Keterangan

char

Meng-copy data dari file yang terdiri atas karakter

native

Meng-copy dengan menggunakan tipe data database


widechar

Meng-copy data dari file yang terdiri atas karakter Unicode

widenative

Sama seperti native, kecuali untuk data bertipe char, varchar dan teks

Variabel FIELDTERMINATOR,
menentukan
pemisah
antar nilai kolom dari data dalam file. Biasanya file teks
hasil konversi dari file excel dipisahkan dengan tab, untuk
membuktikannya buka file sampledata.txt dengan
Notepad.. Dan karakter pengganti tab dalam pernyataan
SQL adalah \t. Jika pemisah nilai kolom dari data seperti
di
bawah
ini
maka

nilai
variabel FIELDTERMINATOR adalah ; (karakter
titik
koma)
CustomerID;CompanyName;ContactName;ContactTitle;Address
SPKOM;Spirit Komunika;Nugi;Sales Manager;Jl Dr. Muwardi Raya No.29-30 Jakarta
MAPRI;PT Malta Printindo;Angoro;Sales Manager;Jl Kedoya Raya No.2 A Kedoya
Selatan

GRPRI;PT Gramedia Printing Group;Bayu;Sales Manager;Jl Palmerah Selatan 22-28
Jakarta

Tabel berikut ini menjelaskan daftar karakter pemisah
kolom atau baris dalam pernyataan SQL
Nilai

Keterangan

Tab


\t

Newline character

\n

Carriage return

\r

Backslash

\\

Tanpa pemisah

\0

Karakter tertentu


(*, A, t, l, dst..)

Gabungan dari beberapa karakter

(**\t**, end, !!!!!!!!!!, \t–\n, dst..)

Variabel FIRSTROW, menentukan baris dari data dalam
file yang nantinya akan di-copy sebagai baris pertama,
nilainya tergantung pada file data. Dalam file excel
(sampledata.xls) maupun file teks hasil konversi
(sampledata.txt), baris pertama menunjukkan judul kolom
dan yang dianggap sebagai data adalah baris kedua maka
nilai variabel FIRSTROW sama dengan 2.
Variabel ROWTERMINATOR, menentukan pemisah antar
baris data. Batas akhir dari baris data dalam file
sampledata.txt adalah adanya baris data yang baru
(newline). Dalam pernyataan SQL, lihat tabel di atas,
simbol karakter newline ditulis \n.
Jika pada saat kamu mengeksekusi pernyataan di atas,
baik dalam aplikasi eksekutor SQL (misalnya SQL Query

Analyzer milik SQL Server 2000) atau dalam aplikasi yang
dibuat melalui bahasa pemrograman visual (misalnya
Borland Delphi), muncul pesan ‘Bulk Insert: Unexpected
end-of-file (EOF) encountered in data file‘ artinya bagian
akhir dari file data banyak mengandung baris-baris
kosong, lihat gambar di bawah

Jika pada setiap baris dalam file data terdapat kolom
kosong, lihat gambar di bawah, maka nilai yang
dimasukkan dalam field/kolom terakhir database ada
karakter yang tidak dikenal, biasanya kotak.

Kamu bisa menghapusnya langsung dalam file teks..
Untuk
baris,
tekan
tombol keyboard Del sampai
kursorkeyboard berada tepat di bawah baris terakhir.
Sedang untuk kolom, tekan tombol keyboard Del sampai
kursorkeyboard berada tepat di samping kolom terakhir

dari setiap baris.. Tapi jika datanya mempunyai banyak
baris, cara ini tentu saja tidak efisien, bisa-bisa malah
menghapus datanya.. Selain cara itu kamu bisa
mengeditnya melalui file sumbernya, file excel
(sampledata.xls). . ikuti langkahnya seperti gambar di
bawah ini

Lakukan hal yang sama pada kolom terakhir, setelah itu
konversi lagi file excel tersebut menjadi file teks seperti
langkah-langkah di atas..
2. Memasukkan data dari file Excel dengan pernyataan
INSERT INTO
Syntax pernyataan SQL untuk memasukkan data dari file
Excel bisa menggunakan pernyataan INSERT INTO,
perhatikan gambar di bawah ini

Pernyataan INSERT INTO fungsinya jelas untuk
memasukkan
data
ke

tabel database.
Metode
OPENROWSET untuk mengakses data remote dari data
source OLE DB, berikut syntax lengkapnya
OPENROWSET ( 'provider_name',
{ 'datasource' ; 'user_id' ; 'password' | 'provider_string' },
{ [ catalog. ] [ schema. ] object | 'query' } )

Variabel provider_name, menunjukan nama provider OLE
DB yang dikenal dalam registry komputer. Beberapa
provider yang biasa dikenal untuk SQL Server 2000 :
- SQLOLEDB, provider Microsoft OLE DB untuk SQL
Server
- MSDASQL, provider OLE DB untuk ODBC SQL Server
- Microsoft.Jet.OLEDB.4.0, provider Microsoft OLE DB
yang umum digunakan untuk produk-produk microsoft
Variabel
yang
kedua
kamu

bisa
memilih
kombinasi datasource
;
user_id
;
password atau provider_stringtergantung pada sumber
datanya. Variabel datasource bisa diisi dengan nama
database, user_id danpassword fungsinya
jelas user dan password-nya. Dalam contoh seperti
gambar
di
atas,
saya
memilih
variabelprovider_string karena sumber datanya adalah
file Excel.
Sedang varibel yang ketiga kamu juga bisa memilih
kombinasi [ catalog. ] [ schema. ] object atau
pernyataanQuery. Contoh penulisan kombinasi [ catalog. ]
[ schema. ] object, seperti syntax di bawah ini
Northwind.dbo.Customers

Karena sumber datanya dari file maka variabel ketiga
lebih cocok dengan Query.. Kamu bisa membatasi data
dalam sheet file Excel dengan menyertakan nama kolom
setelah nama sheet. Penulisan Query di bawah ini hanya
akan memasukkan data dari kolom A sampai kolom I dan
hanya sampai pada baris ke-3
'SELECT * FROM [Sheet1$A1:I3]'

Artinya
kolom Phone dan Fax tidak
dimasukkan
dalam database dan
hanya
dua record yang
dicopy kedatabase.
Jika pada saat kamu mengeksekusi pernyataan di atas,
muncul pesan ‘Cannot insert the value NULL into column

‘CustomerID’, table ‘Northwind.dbo.Customers’; column
does not allow nulls. INSERT fails‘ artinya bagian akhir
dari file data banyak mengandung baris-baris kosong,
untuk memastikannya kamu bisa melihat isi filenya
terlebih dahulu dengan pernyataan berikut

Kamu bisa mengatasinya dengan mengedit file
sumbernya, file Excel (sampledata.xls). . ikuti langkahnya
seperti gambar di bawah ini

Atau dengan mengubah pernyataan SQL-nya menjadi
INSERT INTO Northwind.dbo.[Customers]

SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=F:\Private\project for blog\sampledata.xls',
'SELECT * FROM [Sheet1$A1:K4]')

Kedua Syntax pernyataan SQL di atas (BULK INSERT
dan INSERT INTO) bisa di-kode-kan dalam bahasa
pemrograman Borland Delphi, download Copy Data
Source Code ver.1.1 kemudian ekstrak di komputer kamu
dan buka project Copy.dpr.. Dalam source code tersebut
saya menggunakan beberapa komponen yang merupakan
komponen tambahan, TPDJButton dan TCheckDBGrid.
Jika
kamu
belum
punya
komponen
tersebut
download, TPDJButton
Component dan TCheckDBGrid
Component kemudian instal dalam program Delphi kamu..
perhatikan
kode
pada event OnShow
dari
form
fmCopyFile
procedure TfmCopyFile.FormShow(Sender: TObject);
var
sConn: String;
begin
sConn:= 'Provider=SQLOLEDB.1;'+
'Integrated Security=SSPI;'+
'Persist Security Info=False;'+
'Initial Catalog=Northwind;'+
'Data Source=SIS03S';
adocCopyFile.ConnectionString:= sConn;
adocCopyFile.Connected:= True;
if adocCopyFile.Connected then
qCustomers.Open;
end;

Sebelum menjalankannya edit isi variabel sConn,
terutama pada karakter Data Source=SIS03S dengan
namaserver database kamu (saya menggunakan server
database bernama SIS03S).