Pada tutorial MySQL sebelumnya: Cara Menambahkan data ke dalam Tabel (INSERT), kita menambahkan data langsung pada cmd MySQL. Untuk keperluan menambahkan data dalam jumlah besar, akan lebih efisien dan mudah jika data tersebut kita siapkan dalam bentuk file terlebih dahulu, dan kemudian diload ke dalam tabel. Untuk keperluan ini MySQL menyediakan query LOAD DATA INFILE.
Mempersiapkan Tabel Contoh: daftar_dosen
Sebagai tabel contoh untuk mempelajari cara menambahkan data menggunakan query LOAD DATA INFILE, kita akan mempersiapkan tabel daftar_dosen, dengan query sebagai berikut:
mysql> SHOW DATABASES; +--------------------+ | Database          | +--------------------+ | information_schema | | mahasiswa         | | mysql             | | performance_schema | | test              | +--------------------+ 5 rows in set (0.08 sec) mysql> USE mahasiswa; Database changed mysql> CREATE TABLE daftar_dosen (NIP CHAR(10) PRIMARY KEY, nama_dosen VARCHAR(50) NOT NULL, no_hp CHAR(13), alamat VARCHAR(100)); Query OK, 0 rows affected (0.16 sec) mysql> DESC daftar_dosen; +------------+--------------+------+-----+---------+-------+ | Field     | Type        | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+-------+ | NIP       | char(10)    | NO  | PRI | NULL   |      | | nama_dosen | varchar(50) | NO  |    | NULL   |      | | no_hp     | char(13)    | YES |    | NULL   |      | | alamat    | varchar(100) | YES |    | NULL   |      | +------------+--------------+------+-----+---------+-------+ 4 rows in set (0.14 sec)
Cara Penulisan dasar query LOAD DATA INFILE
Query MySQL: LOAD DATA INFILE digunakan untuk menginput data kedalam tabel dimana data yang diinput berasal dari sebuah file. Kita akan mempelajari cara penggunaannya dengan contoh dalam tutorial kali ini.
Query lengkap dari LOAD DATA INFILE sesuai dari manual MySQL adalah sebagai berikut:
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name' [REPLACE | IGNORE] INTO TABLE tbl_name [CHARACTER SET charset_name] [{FIELDS | COLUMNS} [TERMINATED BY 'string'] [[OPTIONALLY] ENCLOSED BY 'char'] [ESCAPED BY 'char'] ] [LINES [STARTING BY 'string'] [TERMINATED BY 'string'] ] [IGNORE number {LINES | ROWS}] [(col_name_or_user_var,...)] [SET col_name = expr,...]
Dapat kita lihat bahwa MySQL menyediakan banyak pilihan opsional (dalam tanda kurung siku) yang dapat digunakan tergantung kebutuhan. Dalam tutorial MySQL ini, kita akan membahas beberapa diantaranya.
Cara Penggunaan query LOAD DATA INFILE dalam MySQL
Agar lebih gampang dipahami, kita akan langsung mencoba query LOAD DATA INFILE, dengan membuat sebuah file input_data.txt. Anda bebas untuk meletakkan file tersebut. Pada contoh ini, saya akan menempatkannya pada folder "D:\MySQL\".
Buka notepad, lalu tuliskan data berikut ke dalam file text tersebut, dan save sebagai input_data.txt:
"0576431001","M. Siddiq","0812979005","Jakarta" "0770435006","Siswanto","0812567765","Medan" "0869437003","Andi Mulia","0812332564","Padang" "0260432002","Maya Ari Putri","0812345234","Palembang" "1080432007","Arif Budiman","0812456345","Makasar" "0275430005","Susi Indriani","0812656532","Bogor"
Berikut tampilan file input_data.txt
Pada saat membuat file, pastikan menekan Enter di akhir baris untuk membuat baris baru. Selanjutnya buka MySQL Client command prompt dan jalankan query berikut:
mysql> LOAD DATA INFILE 'D:\\MySQL\\input_data.txt' INTO TABLE daftar_dosen FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n'; Query OK, 6 rows affected (0.05 sec) Records: 6 Deleted: 0 Skipped: 0 Warnings: 0 mysql> SELECT * FROM daftar_dosen; +------------+----------------+------------+-----------+ | NIP       | nama_dosen    | no_hp     | alamat   | +------------+----------------+------------+-----------+ | 0260432002 | Maya Ari Putri | 0812345234 | Palembang | | 0275430005 | Susi Indriani | 0812656532 | Bogor    | | 0576431001 | M. Siddiq     | 0812979005 | Jakarta  | | 0770435006 | Siswanto      | 0812567765 | Medan    | | 0869437003 | Andi Mulia    | 0812332564 | Padang   | | 1080432007 | Arif Budiman  | 0812456345 | Makasar  | +------------+----------------+------------+-----------+ 6 rows in set (0.00 sec)
Mari kita bahas tentang penulisan perintah LOAD DATA INFILE diatas:
- Hal pertama yang kita tulis setelah perintah LOAD DATA INFILE adalah lokasi tempat file input_data.txt berada. Dalam query diatas, file tersebut berada pada D:\MySQL\input_data.txt. Tetapi karena didalam MySQL karakter '\'merupakan karakter khusus, maka penulisannya harus di-double, sehingga menjadi D:\\MySQL\\input_data.txt. Jika lokasi file anda berbeda, tinggal menyesuaikan saja.
- Setelah lokasi file, selanjutnya kita menambahkan perintah ke tabel mana file tersebut akan diinput. Pada contoh kita, tabel tersebut adalah daftar_dosen, sehingga ditulis …INTO TABLE daftar_dosen…
- Perintah FIELDS TERMINATED BY ','Â dimaksudkan sebagai instruksi pada MySQL bahwa setiap kolom pada input_data.txt dipisahkan oleh karakter koma ','. Namun tidak harus tanda koma, tanda lain seperti titik, tanda '|', maupun karakter tab bisa kita gunakan sebagai tanda pemisah, dan instruksikan MySQL untuk menggunakan tanda tersebut sebagai penanda kolom.
- Instruksi ENCLOSED BY '"' memberitahu MySQL agar menghapus penanda kutip dua (") dari tiap kolom. Namun jika pada daftar_dosen.txt kita tidak menambahkan tanda kutip dua diawal data, MySQL tetap akan menerima data tersebut.
- Pada akhir query, perintah …LINES TERMINATED BY '\r\n' menginstruksikan MySQL agar tiap baris diakhiri dengan karakter new line dan carriage return. Karakter khusus ini terbentuk ketika kita menekan Enter pada keyboard untuk pindah baris pada notepad. '\r' merupakan cara penulisan untuk karakter carriage return, sedangkan '\n' adalah karakter new line.
Berbagai pilihan instruksi dari query LOAD DATA INFILE
Jika kita melihat format penulisan query LOAD DATA INFILE, terdapat beberapa pilihan opsi lainnya, kita akan membahas beberapa diantaranya:
Penjelasan opsi LOCAL
Opsi LOCAL disini digunakan untuk menentukan lokasi dari text yang diinput. Jika kita menuliskan LOCAL, maka file text akan dicari dalam komputer Client MySQL. Namun jika tidak ditulis, maka lokasi file akan dicari pada komputer MySQL Server. Karena kita mengistall MySQL pada satu komputer, opsi LOCAL tidak akan berpengaruh, karena MySQL Server dan MySQL Client berada pada komputer yang sama, dan juga folder yang sama (file mysqld.exe adalah MySQL Server, dan file mysql.exe adalah MySQL Client). Contoh penggunaan query-nya: LOAD DATA LOCAL INFILE 'path_to_file'
Penjelasan opsi [REPLACE | IGNORE]
Opsi [REPLACE | IGNORE] berkaitan dengan cara MySQL menangani duplikasi data pada kolom PRIMARY KEY. Jika opsi REPLACE digunakan, maka saat ditemukan data yang sama, maka data yang baru akan menimpa data lama, namun jika menggunakan opsi IGNORE, data yang baru akan diabaikan dan MySQL akan menjalankan baris berikutnya.
Penjelasan opsi LINES STARTING BY 'string' dan TERMINATED BY 'string'
Opsi ini digunakan untuk menentukan awal dari data dan akhir dari data. String disini dapat berupa karakter seperti "," atau "*", maupun karakter new line dan carriage return.
Penggunaan karakter-karakter khusus dapat dilihat dari tabel dibawah ini:
Penulisan | Penjelasan Karakter |
---|---|
\0 | Karakter ASCII untuk NULL (0x00) |
\' | Karakter tanda kutip satu (') |
\" | Karakter tanda kutip dua(") |
\b | Karakter backspace |
\n | Karakter newline (linefeed) |
\r | Karakter carriage return |
\t | Karakter untuk tab |
\Z | ASCII 26 (Control+Z) |
\\ | Karakter untuk backslash (\) |
\% | Karakter untuk tanda persen (%) |
\_ | Karakter untuk tanda garis bawah (_) |
Penjelasan opsi IGNORE number
Opsi IGNORE dapat digunakan untuk mengistruksikan MySQL agar melompati beberapa baris dan memulai dari baris ke sekian. Hal ini berguna jika pada awal text merupakan penjelasan nama kolom.
Contoh Cara Penggunaan query LOAD DATA INFILE dengan opsi LOCAL, REPLACE dan LINES STARTING BY
Agar memahami penggunaan LOCAL, REPLACE dan LINES STARTING BY, kita akan mencoba menggunakan query LOAD DATA INFILE untuk file kedua berikut.
Kali ini saya akan membuat file data_lagi.txt, dengan isian sebagai berikut:
NIP         Nama         No Hp        Kota **'0876439004'  'Mulyono'      '0812912312' 'Semarang'| **'0770435006'  'Rubin Hadi'   '0812567678' 'Papua'| **'0869437003'  'Mustalifah'   '0812338877' 'Aceh'| **'0160436012'  'Sabrina Sari' '0812349900' 'Pekanbaru'| **'0480432066'  'Tia Santrini' '0812451177' 'Padang'|
Berikut tampilan file input_data.txt
Perhatikan bahwa setiap baris diawali dengan tanda bintang dua kali (**), diakhiri dengan karakter pipa (|) dan setiap kolom dibatasi dengan tab. Juga pada baris ke 2 dan 3 akan terdapat duplikasi untuk kolom NIP dengan data sebelumnya. Baris pertama dari text adalah judul kolom.
Agar file diatas dapat diproses oleh MySQL, kita perlu menggunakan perintah tambahan. Penulisan query untuk menginput file ini adalah sebagai berikut:
mysql> SELECT * FROM daftar_dosen; +------------+----------------+------------+-----------+ | NIP       | nama_dosen    | no_hp     | alamat   | +------------+----------------+------------+-----------+ | 0260432002 | Maya Ari Putri | 0812345234 | Palembang | | 0275430005 | Susi Indriani | 0812656532 | Bogor    | | 0576431001 | M. Siddiq     | 0812979005 | Jakarta  | | 0770435006 | Siswanto      | 0812567765 | Medan    | | 0869437003 | Andi Mulia    | 0812332564 | Padang   | | 1080432007 | Arif Budiman  | 0812456345 | Makasar  | +------------+----------------+------------+-----------+ 6 rows in set (0.00 sec) mysql> LOAD DATA LOCAL INFILE 'D:\\MySQL\\data_lagi.txt' REPLACE INTO TABLE daftar_dosen FIELDS TERMINATED BY '\t' ENCLOSED BY '\'' LINES STARTING BY '**' TERMINATED BY '|' IGNORE 1 LINES; Query OK, 6 rows affected (0.02 sec) Records: 4 Deleted: 2 Skipped: 0 Warnings: 0 mysql> SELECT * FROM daftar_dosen; +------------+----------------+------------+-----------+ | NIP       | nama_dosen    | no_hp     | alamat   | +------------+----------------+------------+-----------+ | 0160436012 | Sabrina Sari  | 0812349900 | Pekanbaru | | 0260432002 | Maya Ari Putri | 0812345234 | Palembang | | 0275430005 | Susi Indriani | 0812656532 | Bogor    | | 0480432066 | Tia Santrini  | 0812451177 | Padang   | | 0576431001 | M. Siddiq     | 0812979005 | Jakarta  | | 0770435006 | Rubin Hadi    | 0812567678 | Papua    | | 0869437003 | Mustalifah    | 0812338877 | Aceh     | | 1080432007 | Arif Budiman  | 0812456345 | Makasar  | +------------+----------------+------------+-----------+ 8 rows in set (0.00 sec)
Query diatas menambahkan 4 baris dan menghapus 2 baris, hal ini dapat dilihat setelah query dijalankan Records: 4Â Deleted: 2Â Skipped: 0Â Warnings: 0. Hal ini dikarenakan opsi REPLACE yang menggantikan 2 baris yang memiliki NIP yang sama.
Dalam tutorial belajar MySQL kali ini kita telah membahas cara menambahkan data ke tabel MySQL dari sebuah file text external menggunakan query LOAD DATA INFILE. Melanjutkan pembahasan mengenai query dasar MySQL, berikutnya kita akan membahas tentang Cara Menampilkan Data MySQL dengan query SELECT.
wah kalau dalam kegiatan website, ini sering disebut sebagai "IMPORT" ya kan .. mantap mantap. baru ketemu ini
makasih banyak gan, sangat membantu buat ngerjain laporan praktikum :D
Terimakasih juga atas kunjungannya.. semoga sukses dengan praktikumnya :)
kalau memanggail dari text file ke mysql misalnya hanya baris ke 10 kolom 2 bagaimana ya?
terima kasih :)
Kebetulan saya belum sempat mencoba hal ini.. mungkin rekan2 lain ada yang bisa membantu :)
kalau itu kan import dari kolom
kalau kita mau import dari baris koding nya apa ya
Maksudnya mas? Sebenarnya contoh diatas adalah input dari baris kok, cuma barisnya sengaja saja edit agar mudah dibaca (menggunakan tab di notepad)
Om saya mau nanya, saya bikin halaman pake php nah halaman tersebut terdiri dari :
halaman login.php
halaman indexp.php
( di halaman ini memuat hasil query database ( menghitung jumlah baris yang bernilai where '1') nah dihalaman ini ada file payout.php berfungsi untuk menyimpan data hasil query database yang benilai tersebut kedalam sebuah tabel, nah yang jadi permasalahan: Kenapa kolom pada tabel yang dituju tetap kosong?
mohon di jawab ya om, ini email saya : [email protected], nanti sata kirim filenya…mksh sebelumnya
Kalau ditanya kenapa tabel yang dituju kosong, banyak kemungkinannya gan.
Harus dipelajari dulu kode programnya. Silahkan kirim ke [email protected]. Tapi karena butuh waktu yang tidak sebentar, saya g janji bisa membantu (harap maklum) :)
kok error gak bisa error nay kekgini "the MySQL server running with the –secure-file-priv option so it cannot execute this statement" itu kenapa yg bang admin, mohon bantuannya
file yang mau diupload ditaruh di direktori data\upload
kalo mau menyimpan database kita ke .txt bisa gak?
sama kasus nya dengan EDG "the MySQL server running with the –secure-file-priv option so it cannot execute this statement" kenapa ya?
Saya tampung dulu y mas, mungkin ada perubahan di MySQL versi baru.
Setelah saya coba ternyata file input_data.txt nya harus ditaruh di direktori c:\programdata\mysql\mysql server 5.7\uploads baru bisa jalan prosesnya dan peringatan "the MySQL server running with the –secure-file-priv option so it cannot execute this statement" tidak muncul lagi
Terimakasih buat infonya mas, bisa membantu rekan2 lain yang juga mengalami error yang sama :)
Sebenarnya untuk direktori tidak menjadi masalah namun awalnya saya juga mengalami error yang sama , namun coba tambahkan di baris LOAD DATA INFILE menjadi LOAD DATA LOCAL INFILE , terus untuk memudah kan sebagai tempat direktori lebih baik menggunakan karakter (/) karena untuk karakter (\) merupakan karakter khusus mysql. Sehingga untuk mengimport data seperti diatas seperti ini,
LOAD DATA LOCAL INFILE 'D:/MySQL/input_data.txt'
INTO TABLE daftar_dosen FIELDS TERMINATED BY ','
ENCLOSED BY ' " ' LINE TERMINATED BY '\r\n';
Mksh bnyk infonya gan
Halo Mas Andre,
kalau untuk meng-'load' seluruh file dalam suatu directory (misalnya 50 files) apakah bisa ?
karena kalo saya coba dengan script load data local infile 'D:\test\*.csv'
dapat message error ERROR 2 – no such file or directory
mysql> SELECT *FROM daftar_dosen;
+————+—————-+————+———–+
| nip | nama_dosen | no_hp | alamat |
+————+—————-+————+———–+
| 0160436012 | | NULL | NULL |
| 0260432002 | Maya Ari Putri | 0812345234 | Palembang |
| 0275430005 | Susi Indriani | 0812656532 | Bogor |
| 0480432066 | | NULL | NULL |
| 0576431001 | M. Siddiq | 0812979005 | Jakarta |
| 0770435006 | | NULL | NULL |
| 0869437003 | | NULL | NULL |
| 1080432007 | Arif Budiman | 0812456345 | Makasar |
+————+—————-+————+———–+
8 rows in set (0.00 sec)
kog punya saya malah datanya hilang yha mas?
BTW NICE TUTOR :)
Wah, kurang tau juga y mas, mungkin ada karakter yang kurang…
Pas menjalankan query:
LOAD DATA INFILE 'D:\\MySQL\\input_data.txt'
INTO TABLE daftar_dosen FIELDS TERMINATED BY ','
ENCLOSED BY '"' LINES TERMINATED BY '\r\n';
saya mendapat pesan error tolong di jelaskan terutama yang nomor satu. makasih
1. Error 1290 (HY000): The MySQL server is running with the –secure-file-priv-option so it cannot excute this statement
2. ENCLOSED BY '"'
mas kalau mau insert data yang sama
kedalam 2 tabel dalam sekali insert bisa g mas?
Kayaknya g bisa mas. Mesti satu2. Tapi tinggal copy paste perintahnya saja, hehe…
insert into area values (isi data), (isi data),(isi data) ;
Bung saya mau tanya, saya sudah input sesuai struktur. Tapi keluar notif begini "ERROR 1290 (HY000): The MySQL server is running with the –secure-file-priv option so it cannot execute this statement"
Jadi solusinya bagaimana ya?
Sukses Buat https://www.duniailkom.com/
Banyak sekali manfaat dari tutorial2 di web ini (y)
Sama2 gan, semoga materi yang ada bisa dipahami dengan mudah :)
Sebelumnya terima kasih banget atas tutorialnya. Tutorialnya sangat jelas, gampang untuk dimengerti.
Sebenernya Saya masih awam soal pemograman, database, mysql dll, banyak yg masih belum saya ngerti. saya mau tanya pak, makasih banget klo dijawab. pertanyaannya:
1. Waktu saya ngikutin tutorial LOAD DATA ini, saya coba ngeganti setiap karakter (') saya ubah jadi ("), misal [ENCLOSED BY ','] saya ubah jadi [ENCLOSED BY ","]. saya pikir hasilnya error, eh ternyata bisa jalan. jadi karakter (') sama (") fungsinya sama ya pak di MySQL?
2. Di query LOAD DATA INFILE 'D:\\MySQL\\input_data.txt' blablabla kok dibagian [ENCLOSED BY '"'], karakter (") knp gk dibikin kayak gini (\")? saya coba ngebandingin [ENCLOSED BY '"'] sama [ENCLOSED BY '\"'] ternyata hasilnya sama aja, gk ada error. trs tujuan dikasih (\) buat karakter (') dan (") apa pak?
3. trs pas di query buat file data_lagi.txt dibagian [blablabla TERMINATED BY '|'], kenapa bkn [TERMINATED BY '|\r\n']? klo dilihat di file data_lagi.txt, setiap akhir baris dari data kan makai karakter |, setelah itu kn nekan enter, jadi di MySQL query nya kyk gini dnk '|\r\n' seharusnya. bisa dijelasin gk knp gk perlu makai '|\r\n', cukup '|' di query nya?
makasih pak, mau lanjut dlu ke tutorial selanjutnya. :)
mas saya mau tanya kenapa pas coba query load data infile mysqlnya muncul notif ERROR 1040(3D000) : no database selected
padahal saya udah ikutin sesuai dengan tutorialnya hannya mengganti tempat penyimoanan filenya saja, mohon bantuanya
terimakasii :))
mas saya mau tanya kenapa pas coba query load data infile mysqlnya muncul notif ERROR 1040(HY000) : the MySQL server is running with the –secure-file-priv option so it cannot execute this statement , padahal saya udah ikutin sesuai dengan tutorialnya hannya mengganti tempat penyimoanan filenya saja,ini maksdnya error knpa ya mas, soalnya saya baru bgt belajar mysql mohon bantuanya
terimakasii :))
Jika muncul error seperti itu, berarti MySQLnya diproteksi dengan pilihan –secure-file-priv. Agar bisa meload sebuah file, kita harus menempatkan di folder khusus.
Silahkan jalankan kode berikut:
SHOW VARIABLES LIKE "secure_file_priv";
Nanti akan terlihat lokasi folder yang dibolehkan. Copy file input_data.txt ke folder tersebut dan jalankan kembali (dengan mengubah alamat file).
mas perbedaan carriage return '\r' dengan new line '\n' apa ya mas?
klau saya baca di google itu sama2 tanda untuk enter tapi yang "LINES TERMINATED BY '\r\n'" kok pakek dua2 nya ya?
Setiap sistem operasi menggunakan salah satu atau keduanya gan. Misalnya di sistem Unix atau Linux menggunakan karakter \n untuk pindah baris. Mac OS menggunakan \r, sedangkan sistem Windows menggunakan \r\n.
Mohon pencerahan nya gan saat sya udh masikn tmpt file yg bnr mlah mnimbulkn eror dgn pesan not found pdhal ap yg alamt penyimpananya bnr gn
Sylah alamt penyimpanan ny bnar muncul lgi eror not dtabase n;
Lalu sya sy hps n mlah kluar
Eror not database R;
Sya hpus r dn n mlah kluar lgi
Eror Data base by '"'
Sya hpus jga mlah keluar
Not database error ;
Mohon bantuan ny gan
Saya tampung dulu ya, soalnya susah juga nyari error tersebut. Terlebih saya harus pelajari query yang agan buat (agar tau salahnya dimana).
Saran saya coba ikuti tutorial ini dari awal sampai akhir, termasuk nama database, nama file, dan lokasi penyimpanannya kalau bisa buat sama persis dengan yang ada disini.
Artikel bagus Gan, langsung dipraktekkan. waktu saya coba load data infile, query sudah oke tetapi kok rows affected =0 ya???
tahapan saya lakukan:
1) Saya buat tabel dengan nama WDI
create table wdi (series_code varchar(30), series_name varchar(125), country_code char(7), country_name varchar(30),
tahun1960 bigint, tahun1961 bigint, tahun1962 bigint, tahun1963 bigint, tahun1964 bigint, tahun1965 bigint, tahun1966 bigint,
tahun1967 bigint, tahun1968 bigint, tahun1969 bigint);
2) Data yang mau saya load dari notepad ada 2 baris sbb:
"AG.AGR.TRAC.NO","Agricultural machinery tractors","AFG","Afghanistan","1","120","150","200","200","300","400","500","500","550"
"AG.AGR.TRAC.NO","Agricultural machinery tractors","ALB","Albania","3","2900","3800","3800","4200","4331","4714","5321","5719","5884"
3.Saya sudah tekan enter pada baris terakhir.
4.query yg saya ketikkan:
load data infile 'C:\\ProgramData\\MySQL\\MySQL Server 5.7\\Uploads\\Book1.txt' into table wdi fields terminated by ',' Enclosed by '"' lines terminated by '\r\n';
lalu muncul error ERROR 1300 (HY000):invalid utf8 character string: ' '
5.query saya ganti dengan
load data infile 'C:\\ProgramData\\MySQL\\MySQL Server 5.7\\Uploads\\Book1.txt' into table wdi fields terminated by ',' Enclosed by '"' lines terminated by '\r\n' ignore 1 lines;
lalu muncul pesan
Query OK, 0 rows affected (0.00 sec)
Records: 0 Deleted: 0 Skipped: 0 Warnings:0
Jadi meskipun sudah tidak error namun data 2 baris yang saya isikan belum masuk di tabel WDI.
Kenapa itu Gan?
Mohon bantuannya dong kok saya pake versi 5.7 mau load file gabisa yah, malah muncul pesan:
ERROR 1040(HY000) : the MySQL server is running with the –secure-file-priv option so it cannot execute this statement, tolong dong dikasih pencerahannya biar lancar jaya load file nya
Jika muncul error seperti itu, berarti MySQLnya diproteksi dengan pilihan –secure-file-priv. Agar bisa meload sebuah file, kita harus menempatkan di folder khusus.
Silahkan jalankan kode berikut:
SHOW VARIABLES LIKE "secure_file_priv";
Nanti akan terlihat lokasi folder yang dibolehkan. Copy file input_data.txt ke folder tersebut dan jalankan kembali (dengan mengubah alamat file).
di saya tidak ada folder updates seperti yang ditunjukan oleh "secure_file_priv";
ralat "uploads" maksudnya
di secure_file_priv : C:\ProgramData\MySQL\MySQL Server 5.7\Uploads\
tapi di direktori file saya tidak ada folder "uploads"
Kalau foldernya dibuat manual bisa g gan? Saya belum install MySQL terbaru nih, jadi belum bisa coba…
@Andre gabisa gan sudah dicoba dibuat folder manual tapi hasilnya tetep gamau load filenya-_-
Untuk sementara dilewati saja dulu gan. Sebenarnya setingan –secure-file-priv bisa di set dari my.ini, tapi cukup rumit: http://stackoverflow.com/questions/32737478/how-should-i-tackle-secure-file-priv-in-mysql
Atau jika tetap pengen coba, bisa pakai MySQL yang bawaan XAMPP (lebih tepatnya MariaDB). Saya sudah coba dan errornya g terjadi.
saya coba import sktr 80.000 row tapi yang terupload hanya 79.000 row ada kendala dimana ya?
notif : your file was imported but the server returned 64 warning
Mungkin saja ada data yang double, makanya keluar warning. Setelah querynya jalan dan ada tulisan "your file was imported but the server returned 64 warning". Jalankan perintah SHOW WARNINGS; gan, nanti akan kelihatan apa saja "warning"-nya.
Untuk cara yang kedua, yang replace, maksudnya ignore 1 lines apa ya pak?
Itu instruksi agar MySQL mengabaikan 1 baris pertama dari file yang ingin kita import.
Kalau di perhatikan, dalam file yang saya gunakan baris pertamanya ada "NIP, Nama No Hp, Kota". Kalau g pakai "ignore 1 lines", baris ini bisa masuk ke database (padahal ini cuma judul kolom).
Pak, dari yang saya coba LOAD DATA INFILE ini kenapa tidak bisa yah ada error bertuliskan MySQL Server is running with –secure-file-priv … tapi setelah saya menambah LOCAL di LOAD DATA LOCAL INFILE baru bisa terinput. maksudnya apa yah itu pak? yang error 1290. Terimakasih sebelumnya pak..
Pertanyaannya saya tampung dulu ya… udah lama g coba2 MySQL lagi nih.. mungkin yang lain bisa bantu untuk sementara..
siapa tahu bisa
MySQL Server is running with –secure-file-priv bla bla bla
1. di bagian config my.ini cari bagian # Secure File Priv. dan ganti secure-file-priv=" path kalian" menjadi
secure-file-priv="".
2. usahakan nama pada path jangan ada spasi misal "D:\\basis data\\blabla.txt harus "BasisData" atau mkn "basis_data"
3. pathnya harus dipisah dengan "\\"
udah ane coba bisa di tempat ane. tapi entah saat import ada "ERROR 1406 (22001): Data too long for column 'NIP' at row 1" saya kurangi 1 karakter udah bisa lagi.
Terimakasih tambahannya gan, mudah2an bisa membantu untuk yang mengalami hal yang sama :)
gan, itu dikurangin 1 karakter maksudnya gmna ya?
tlg diperjelas gan.
soalnya udah ane cb ttp ga bisa, muncul error yg sama walaupun type datanya dr CHAR udah ane ganti ke TEXT
fixed min, trnyata mslhnya ad pd printah tab(\t)
ktika contoh text diatas sy copy, ternyata itu spasi bkn tab.
tinggal hapus spasi dn ubah jd tab. mksih
Siip…
Mantap Gan success
MAu tanya punya saya ko datanya begini ya
knapa mulyono datanya gx muncul ya kan dia NIPnya berbeda gx sama
mohon pencerahannya
sedangkan di saya data mulyono muncul
mau nanya ni gan.
kok datanya gxmau masuk kemyqsl. padahal kata perintahnya sudah disamakan dan disesuaikan dengan yang di duniailkom? tolong pencerahannya!
yang saya terima malah pesean eror.
Mas apakah bisa digunakan secara online karena saya coba berkali-kali lakukan datanya tidak masuk juga ke tabel.
Seharusnya tidak ada masalah.. tapi mungkin saja ada pihak weh hosting yang membatasi fungsi2 ini.
setelah mencoba dan gagal ber kali akhirnya bisa juga, saya menggunakan mysql 5.6.31
berikut perintah yang saya gunakan :
load data local infile "c:/xampp/mysql/input_data.txt" into table daftar_dosen fields terminated by ',' enclosed by '"' lines terminated by'\r\n';
semoga bermanfaat, makasi juga dunialkom sudah berbaik hati membagi ilmu secara cuma cuma
Error saya : The used command is not allowed with this MariaDB version
Gmn cara atasi nya gan?
Makasih sebelumnya
kenapa saya ketemu error ini ?
mysql> LOAD DATA INFILE 'D:\\MySQL\\input_data.txt' INTO TABLE daftar_dosen FIEL
DS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n';
ERROR 1290 (HY000): The MySQL server is running with the –secure-file-priv opti
on so it cannot execute this statement
mysql>
Mohon Pencerahan nya :)
Ga jadi gan, udah ketemu di atas jawaban nya dan berhasil, Thanks a lot
Siip…
load data local infile ane dapat error 1148 (42000): The used command is not allowed with this mysql version.
ane pakai mysql version 8.0.13 gan
tolong di bantu belum nemu solusi gan
kalo lokasi tempat file input_data.txt berada hanya dikasih akses di home directory suatu hosting. bagaimana menulis pathnya mase ? syukron
Mohon bantuannya bang admin, atau mungkin temen2 yg lain bisa ngebantu . . .
kenapa ya ketika selesai mengetik perintahnya kok muncul pesan error seperti dibawah ini, padahal script nya sudah sama persis, mohon bantuannya . . .
"error 1290 hy000 the mysql server is running with the –secure-file-priv-option so it cannot execute this statement"
terima kasih
Coba bantu ya gan
masuk ke my.ini. Jika my.ini ga kelihatan, gunakan show hidden files, baru kebuka semuanya.
buka my,ini. di baris terakhir tertulis dan ditambahkan:
# The TCP/IP Port the MySQL Server X Protocol will listen on.
# loose_mysqlx_port=33060
local-infile=1
kemudian di save
kemudian buka cmd atau command prompt untuk masuk ke mysql dengan menuliskan
mysql –local-infile=1 -u root -p
masukkan password seperti biasa. Gunakan
LOAD DATA LOCAL INFILE 'C://ProgramData/MySQL/MySQL Server 8.0/Uploads/input_data.txt'
INTO TABLE daftar_dosen FIELDS TERMINATED BY ','
ENCLOSED BY '"' LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;
file "input_data.txt" saya taruh di lokasi di atas.
Jangan lupa file "input_data.txt" di baris paling atas di "enter" 1 kali agar datanya tidak ada yang hilang
Semoga berhasil
apakah sudah ketemu untuk mengatasi masalah tersebut, saya menggunakan versi terbaru "the MySQL server running with the –secure-file-priv option so it cannot execute this statement"
mohon pencerahannya ya min
masalahnya saya tidak bisa melanjutkan ke tahap selanjutnya :(
tanya gan!
loading local data is disabled; this must be enabled on both the client and server sides
itu kenapa ya? emang apa yg mesti di enable ? emang apa yang ke disable?
uda cari di forum-forum, hasilnya 0
awalnya saya mengatasi "ERROR 1290 (HY000)" dengan membuat database, dan membuat satu table
lalu saya insert file.txt, sukses
nah pas mau di replace, muncul tuh "loading local data is disabled; this must be enabled on both the client and server sides"
mudah2an di jawab
saya udah buat sytax
mysql> load data infile 'c:\\users\\asus\\documents\\mysql\\uploads\\data_lagi.txt'
-> REPLACE
-> INTO TABLE daftar_dosen FIELDS TERMINATED BY '\t'
-> ENCLOSED BY '\'' LINES STARTING BY '**' TERMINATED BY '|'
-> IGNORE 1 LINES;
tapi saya dapat pesan warning seperti ini
ERROR 1406 (22001): Data too long for column 'nip' at row 1
sudah saya coba kurangin nomor di kolom nip baris 1 tapi masih tetap dapat pesan warning yang sama
masalahnya di mana ya?
juga bagaimana cara penyelesaiannya errornya
terimakasih
Kemungkinan besar disebabkan tipe data kolom tabel tidak muat. Bisa di cek lagi apa tipe data yang dipakai untuk menampung kolom nip. Jika mengikuti contoh pada halaman ini, harusnya CHAR(10) bisa menampung 10 digit nip.
Selain itu bisa di cek juga apakah file asal "data_lagi.txt" sudah pas dengan contoh diatas dan tidak terdapat penambahan karakter.
Mau tanya pak.
Kalo misalkan mau menampilkan header nya saat njalanin perintah outfile gmn ya?
Terimakasih
ERROR 3948 (42000): Loading local data is disabled; this must be enabled on both the client and server sides
padahal saya udah tarok di Data/upload
tetap tidak bisa
Baru nemu artikelnya. Sangat bermanfaat. Tapi saya mau tanya Kak, proses load saya berhasil, cuman untuk kolom id yg biasanya saya isi dengan angka terkadang hilang beberapa data. Dia tidak null cuman garis pembatas tabelnya itu agak bergeser ke dalam dan menyebabkn beberapa data tidak muncul di layar. Itu kenapa Yah Kak?
Masalah saya sudah teratasi. Sepertinya karena diakhir sintaks saya tidak tuliskan lines terminated by '\r\n' nya deh.
Terima kasih banyak untuk artikelnya Kak. Sangat membantu