Oleh: khim | 8 Februari, 2012

Memindah tabel teks ke database MySQL dengan PHP

Ini hanya catatan supaya saya tidak lupa, tapi semoga bisa bermanfaat juga bagi yang membaca

misalnya kita punya data dalam bentuk teks seperti ini: serial number, produk makanan, kategori dan komposisinya

4901810076987,Topvalu Light meal buransando,snack,wheat flour;margarine;wheat meal;vegetable oil;sugar;mizuame;glucose;oatmeal;cornflake;skim milk;shortening (soybean);dolomite;salt;emulsifier;blueberry extract powder;emulsifier (soybean)

4901810380435,Topvalu milk cocoa,beverage,glucose;sugar;cocoa powder;skim milk;salt

4901111150270,Blendy stick maccha au lait,beverage,sugar;vegetable oil;mizuame;skim milk;green tea;whey;lactose;casein;salt;pH adjuster;emulsifier

4972195030604,Canned Saba miso ni,food,mackerel;sugar;miso;salt;guar gum

kemudian ingin kita masukkan dalam database mysql agar lebih mudah dipakai. Kalau datanya cuma 4 masih mudah dimasukkan 1 1 secara manual, kalau entrinya ribuan repot juga. Berhubung saya orangnya pemalas, saya ingin pakai skrip untuk memasukkan data tsb ke mysql.

pertama kita buat database dan tabel2-nya dulu di mysql


create db bljr_makanan;

kemudian buat 3 tabel masing2 untuk nama produk, nama bahan, dan tabel yang menghubungkan produk dan bahan.


CREATE TABLE induk_produk(
sn BIGINT NOT NULL,
produk_name CHAR(255) NOT NULL,
kategori CHAR(20)
);

CREATE TABLE induk_bahan (
bahan_id MEDIUMINT NOT NULL AUTO_INCREMENT,
bahan_name CHAR(9) NOT NULL,
PRIMARY KEY (bahan_id)
);

CREATE TABLE relasi_produk_bahan(
produk_id BIGINT NOT NULL,
bahan_id INT NOT NULL
);

Kemudian kita buat index untuk mencegah masuknya data yang sama lebih dari sekali
(misalnya kalau di data teks yang kita punya ada data yang sudah pernah dimasukkan)

CREATE UNIQUE INDEX index_produk ON induk_produk(sn);
CREATE UNIQUE INDEX index_bahan ON induk_bahan(bahan_name);
CREATE UNIQUE INDEX index_relasi ON relasi_produk_bahan(produk_id,bahan_id);

kemudian skrip phpnya

http://pastebin.com/jCe5xBrN

di sini fungsi explode memegang peranan penting. fungsi explode memisahkan string menjadi array sesuai dengan pembatas yang ditentukan. Dalam kasus ini pembatasnya adalah “,” untuk data produk, dan “;” untuk bahan-bahan yang menjadi kompoisi produk.

Catatan:

  • kalau skrip tidak berjalan, dicek dengan echo $query untuk melihat apakah querynya sudah benar
  • satu loop terdiri dari perintah explode produk, input data inti produk ke tabel induk produk, explode bahan, loop input tiap bahan ke tabel induk bahan, dan input ke tabel relasi produk bahan
  • explode untuk bahan adalah salah satu komponen array dari explode produk
Iklan

Responses

  1. blognya bagus,,mampir dong..


Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

Kategori

%d blogger menyukai ini: