Cara memasukkan data besar di mysql menggunakan java

MySQL menyediakan sejumlah pernyataan yang berguna ketika diperlukan untuk INSERT baris setelah menentukan apakah baris tersebut sebenarnya baru atau sudah ada

Di bawah ini kami akan memeriksa tiga metode berbeda dan menjelaskan pro dan kontra dari masing-masing secara bergantian sehingga Anda memiliki pemahaman yang kuat tentang cara mengonfigurasi pernyataan Anda sendiri saat memberikan data baru atau yang berpotensi ada untuk

mysql> INSERT INTO books
    (id, title, author, year_published)
VALUES
    (1, 'Green Eggs and Ham', 'Dr. Seuss', 1960);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
0

Menggunakan INSERT IGNORE

Menggunakan INSERT IGNORE secara efektif menyebabkan MySQL mengabaikan kesalahan eksekusi saat mencoba melakukan pernyataan INSERT. Ini berarti bahwa pernyataan INSERT IGNORE yang berisi nilai duplikat dalam indeks

mysql> INSERT INTO books
    (id, title, author, year_published)
VALUES
    (1, 'Green Eggs and Ham', 'Dr. Seuss', 1960);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
5 atau bidang
mysql> INSERT INTO books
    (id, title, author, year_published)
VALUES
    (1, 'Green Eggs and Ham', 'Dr. Seuss', 1960);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
6 tidak menghasilkan kesalahan, melainkan hanya akan mengabaikan perintah INSERT tersebut sepenuhnya. Tujuan yang jelas adalah untuk mengeksekusi sejumlah besar pernyataan INSERT untuk kombinasi data yang sudah ada di database serta data baru yang masuk ke sistem

Misalnya, tabel

mysql> INSERT INTO books
    (id, title, author, year_published)
VALUES
    (1, 'Green Eggs and Ham', 'Dr. Seuss', 1960);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
_9 kita mungkin sudah berisi beberapa record

mysql> SELECT * FROM books LIMIT 3;
+----+-------------------------+---------------------+----------------+
| id | title                   | author              | year_published |
+----+-------------------------+---------------------+----------------+
|  1 | In Search of Lost Time  | Marcel Proust       |           1913 |
|  2 | Ulysses                 | James Joyce         |           1922 |
|  3 | Don Quixote             | Miguel de Cervantes |           1605 |
+----+-------------------------+---------------------+----------------+
3 rows in set (0.00 sec)
_

Jika kita memiliki sejumlah besar data baru dan yang sudah ada untuk INSERT dan sebagian dari data tersebut berisi nilai yang cocok untuk bidang

mysql> INSERT IGNORE INTO books
    (id, title, author, year_published)
VALUES
    (1, 'Green Eggs and Ham', 'Dr. Seuss', 1960);
Query OK, 0 rows affected (0.00 sec)
1 (yang merupakan
mysql> INSERT INTO books
    (id, title, author, year_published)
VALUES
    (1, 'Green Eggs and Ham', 'Dr. Seuss', 1960);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
5
mysql> INSERT IGNORE INTO books
    (id, title, author, year_published)
VALUES
    (1, 'Green Eggs and Ham', 'Dr. Seuss', 1960);
Query OK, 0 rows affected (0.00 sec)
3 dalam tabel), menggunakan INSERT dasar akan menghasilkan kesalahan yang diharapkan

mysql> INSERT INTO books
    (id, title, author, year_published)
VALUES
    (1, 'Green Eggs and Ham', 'Dr. Seuss', 1960);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'

Di sisi lain, jika kita menggunakan INSERT IGNORE, upaya duplikasi diabaikan dan tidak terjadi kesalahan yang dihasilkan

mysql> INSERT IGNORE INTO books
    (id, title, author, year_published)
VALUES
    (1, 'Green Eggs and Ham', 'Dr. Seuss', 1960);
Query OK, 0 rows affected (0.00 sec)

Menggunakan REPLACE

Jika Anda ingin benar-benar mengganti baris di mana perintah INSERT akan menghasilkan kesalahan karena duplikat

mysql> INSERT INTO books
    (id, title, author, year_published)
VALUES
    (1, 'Green Eggs and Ham', 'Dr. Seuss', 1960);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
5 atau
mysql> INSERT INTO books
    (id, title, author, year_published)
VALUES
    (1, 'Green Eggs and Ham', 'Dr. Seuss', 1960);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
6 nilai seperti yang diuraikan di atas, satu opsi adalah memilih pernyataan REPLACE

Saat mengeluarkan pernyataan REPLACE_, ada dua kemungkinan hasil untuk setiap perintah yang dikeluarkan

  • Tidak ada baris data yang ditemukan dengan nilai yang cocok dan dengan demikian pernyataan INSERT standar dilakukan
  • Baris data yang cocok ditemukan, menyebabkan baris yang ada dihapus dengan pernyataan
    mysql> REPLACE INTO books
        (id, title, author, year_published)
    VALUES
        (1, 'Green Eggs and Ham', 'Dr. Seuss', 1960);
    Query OK, 2 rows affected (0.00 sec)
    
    3 standar, kemudian INSERT normal dilakukan setelahnya

Misalnya, kita dapat menggunakan REPLACE untuk menukar catatan kita yang ada

mysql> REPLACE INTO books
    (id, title, author, year_published)
VALUES
    (1, 'Green Eggs and Ham', 'Dr. Seuss', 1960);
Query OK, 2 rows affected (0.00 sec)
6 dari In Search of Lost Time oleh Marcel Proust dengan Green Eggs and Ham oleh Dr. Seuss

mysql> REPLACE INTO books
    (id, title, author, year_published)
VALUES
    (1, 'Green Eggs and Ham', 'Dr. Seuss', 1960);
Query OK, 2 rows affected (0.00 sec)

Perhatikan bahwa meskipun kita hanya mengubah satu baris, hasilnya menunjukkan bahwa dua baris terpengaruh karena kita sebenarnya

mysql> REPLACE INTO books
    (id, title, author, year_published)
VALUES
    (1, 'Green Eggs and Ham', 'Dr. Seuss', 1960);
Query OK, 2 rows affected (0.00 sec)
7 baris yang ada lalu
mysql> REPLACE INTO books
    (id, title, author, year_published)
VALUES
    (1, 'Green Eggs and Ham', 'Dr. Seuss', 1960);
Query OK, 2 rows affected (0.00 sec)
8 baris baru untuk menggantikannya

Informasi lebih lanjut tentang penggunaan REPLACE dapat ditemukan di dokumentasi resmi

Menggunakan INSERT .. ON DUPLICATE KEY UPDATE

Metode alternatif (dan umumnya disukai) untuk

mysql> SET @id = 1,
    @title = 'In Search of Lost Time',
    @author = 'Marcel Proust',
    @year_published = 1913;
INSERT INTO books
    (id, title, author, year_published)
VALUES
    (@id, @title, @author, @year_published)
ON DUPLICATE KEY UPDATE
    title = @title,
    author = @author,
    year_published = @year_published;
1 ke dalam baris yang mungkin berisi duplikat
mysql> INSERT INTO books
    (id, title, author, year_published)
VALUES
    (1, 'Green Eggs and Ham', 'Dr. Seuss', 1960);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
5 atau
mysql> INSERT INTO books
    (id, title, author, year_published)
VALUES
    (1, 'Green Eggs and Ham', 'Dr. Seuss', 1960);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
6 nilai adalah dengan menggunakan pernyataan dan klausa INSERT .. ON DUPLICATE KEY UPDATE

Tidak seperti REPLACE – perintah yang secara inheren merusak karena perintah

mysql> REPLACE INTO books
    (id, title, author, year_published)
VALUES
    (1, 'Green Eggs and Ham', 'Dr. Seuss', 1960);
Query OK, 2 rows affected (0.00 sec)
3 yang dilakukannya bila perlu – menggunakan INSERT .. ON DUPLICATE KEY UPDATE tidak merusak, karena hanya akan mengeluarkan pernyataan INSERT atau
mysql> SET @id = 1,
    @title = 'In Search of Lost Time',
    @author = 'Marcel Proust',
    @year_published = 1913;
INSERT INTO books
    (id, title, author, year_published)
VALUES
    (@id, @title, @author, @year_published)
ON DUPLICATE KEY UPDATE
    title = @title,
    author = @author,
    year_published = @year_published;
9, tetapi tidak pernah
mysql> REPLACE INTO books
    (id, title, author, year_published)
VALUES
    (1, 'Green Eggs and Ham', 'Dr. Seuss', 1960);
Query OK, 2 rows affected (0.00 sec)
3

Misalnya, kami telah memutuskan ingin mengganti rekaman

mysql> REPLACE INTO books
    (id, title, author, year_published)
VALUES
    (1, 'Green Eggs and Ham', 'Dr. Seuss', 1960);
Query OK, 2 rows affected (0.00 sec)
6 Telur Hijau dan Ham kami dan mengembalikannya ke rekaman In Search of Lost Time asli sebagai gantinya. Oleh karena itu, kami dapat mengambil pernyataan INSERT_ asli kami dan menambahkan klausa
mysql> SELECT * FROM books LIMIT 1;
+----+------------------------+---------------+----------------+
| id | title                  | author        | year_published |
+----+------------------------+---------------+----------------+
|  1 | In Search of Lost Time | Marcel Proust |           1913 |
+----+------------------------+---------------+----------------+
1 row in set (0.00 sec)
_3 baru

mysql> SET @id = 1,
    @title = 'In Search of Lost Time',
    @author = 'Marcel Proust',
    @year_published = 1913;
INSERT INTO books
    (id, title, author, year_published)
VALUES
    (@id, @title, @author, @year_published)
ON DUPLICATE KEY UPDATE
    title = @title,
    author = @author,
    year_published = @year_published;

Perhatikan bahwa kita menggunakan sintaks

mysql> SET @id = 1,
    @title = 'In Search of Lost Time',
    @author = 'Marcel Proust',
    @year_published = 1913;
INSERT INTO books
    (id, title, author, year_published)
VALUES
    (@id, @title, @author, @year_published)
ON DUPLICATE KEY UPDATE
    title = @title,
    author = @author,
    year_published = @year_published;
9 normal (namun mengecualikan nama
mysql> SELECT * FROM books LIMIT 1;
+----+------------------------+---------------+----------------+
| id | title                  | author        | year_published |
+----+------------------------+---------------+----------------+
|  1 | In Search of Lost Time | Marcel Proust |           1913 |
+----+------------------------+---------------+----------------+
1 row in set (0.00 sec)
5 yang tidak perlu dan kata kunci
mysql> SELECT * FROM books LIMIT 1;
+----+------------------------+---------------+----------------+
| id | title                  | author        | year_published |
+----+------------------------+---------------+----------------+
|  1 | In Search of Lost Time | Marcel Proust |           1913 |
+----+------------------------+---------------+----------------+
1 row in set (0.00 sec)
6), dan hanya menetapkan nilai
mysql> SELECT * FROM books LIMIT 1;
+----+------------------------+---------------+----------------+
| id | title                  | author        | year_published |
+----+------------------------+---------------+----------------+
|  1 | In Search of Lost Time | Marcel Proust |           1913 |
+----+------------------------+---------------+----------------+
1 row in set (0.00 sec)
7. Selain itu, meskipun metode
mysql> SELECT * FROM books LIMIT 1;
+----+------------------------+---------------+----------------+
| id | title                  | author        | year_published |
+----+------------------------+---------------+----------------+
|  1 | In Search of Lost Time | Marcel Proust |           1913 |
+----+------------------------+---------------+----------------+
1 row in set (0.00 sec)
_3 tidak perlu berfungsi dengan baik, kami juga memilih untuk menggunakan
mysql> SELECT * FROM books LIMIT 1;
+----+------------------------+---------------+----------------+
| id | title                  | author        | year_published |
+----+------------------------+---------------+----------------+
|  1 | In Search of Lost Time | Marcel Proust |           1913 |
+----+------------------------+---------------+----------------+
1 row in set (0.00 sec)
9 sehingga kami tidak perlu menentukan nilai sebenarnya yang ingin kami INSERT atau
mysql> SET @id = 1,
    @title = 'In Search of Lost Time',
    @author = 'Marcel Proust',
    @year_published = 1913;
INSERT INTO books
    (id, title, author, year_published)
VALUES
    (@id, @title, @author, @year_published)
ON DUPLICATE KEY UPDATE
    title = @title,
    author = @author,
    year_published = @year_published;
9 lebih dari sekali

Bagaimana cara memasukkan 1000 catatan sekaligus di MySQL?

MySQL Sisipkan Beberapa Baris .
Pertama, tentukan nama tabel yang ingin disisipkan setelah kata kunci INSERT INTO
Kedua, tentukan daftar kolom yang dipisahkan koma di dalam tanda kurung setelah nama tabel
Ketiga, tentukan daftar data baris yang dipisahkan koma dalam klausa VALUES. Setiap elemen dari daftar mewakili satu baris

Bagaimana cara memasukkan data ke database MySQL di Java?

1 Jawaban .
Buat pernyataan SQL INSERT, menggunakan sintaks Java PreparedStatement. .
Setel bidang pada objek Java PreparedStatement kami. .
Jalankan Java PreparedStatement. .
Tutup koneksi database Java MYSQL kami. .
Tangkap pengecualian SQL apa pun yang mungkin muncul selama proses

Bagaimana cara memasukkan data gumpalan di MySQL menggunakan Java?

Menyimpan blob ke database .
Langkah 1. Hubungkan ke basis data. Anda dapat terhubung ke database menggunakan metode getConnection() dari kelas DriverManager
Langkah 2. Buat pernyataan Disiapkan. .
Langkah 3. Tetapkan nilai ke placeholder. .
Langkah 4. Jalankan pernyataan

Bagaimana cara memasukkan banyak catatan di MySQL menggunakan Java?

Langkah-langkah untuk memproses penyisipan pernyataan Batch SQL dengan JDBC .
Membangun koneksi dengan database MySQL
Buat pernyataan menggunakan objek koneksi
Ulangi objek Pengguna dan sisipkan secara dinamis sebagai kumpulan
Menggunakan pernyataan try-with-resources untuk menutup resource JDBC secara otomatis