MYSQL

vijendra solanki
vijendra solanki used Ask the Experts™
on
how to insert 100000 data in 1 minutes in mysql table
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Brian TaoOwner
Top Expert 2014

Commented:
You have several options, among them here are 2 that I can think of
1) Use a program or a script to do the insert.
2) Manually prepare those 100000 SQL insert statements, paste them into whatever UI you're using and run.  Believe me, they will execute and finish in less than 1 minute. ^^
Database Administrator / Software Engineer
Commented:
Hi!

To insert massive amount of data in the shortest time as possible the best way to do that is to
use batch insert / bulk data loading using your favorite programming language. A size of 1000 rows/batch is a good starting point and usually gives you the best performance although in some cases smaller or larger batch size is better depending on your data and/or workload.

There are several parameters you will need to adjust like max_allowed_packet to a size to fit your batch size.

See the following urls for more info.
http://www.geeksengine.com/database/data-manipulation/bulk-insert.php
http://dev.mysql.com/doc/refman/5.6/en/insert-speed.html
https://dev.mysql.com/doc/refman/5.6/en/optimizing-innodb-bulk-data-loading.html
http://www.journaldev.com/2494/jdbc-batch-insert-update-mysql-oracle
http://derwiki.tumblr.com/post/24490758395/loading-half-a-billion-rows-into-mysql

Regards,
    Tomas Helgi
Pawan KumarDatabase Expert
Awarded 2016
Top Expert 2016

Commented:
Please use below

--

;WITH SingleDigits(Number) AS
(
    SELECT Number
    FROM (VALUES (1), (2), (3), (4), (5), (6), (7), (8),
    (9), (0)) AS X(Number)
)
,Series AS
(
    SELECT (d1.Number+1) + (10*d2.Number) + (100*d3.Number) + (1000*d4.Number) Number
    from
    SingleDigits as d1,
    SingleDigits as d2,
    SingleDigits as d3,
    SingleDigits as d4
)
SELECT * FROM Series 




--

Open in new window

Brian TaoOwner
Top Expert 2014

Commented:
I disagree closing by accepting Pawan Kumar Khowal's comment, because WITH doesn't even work in MySQL (and the question is for MySQL).
Brian TaoOwner
Top Expert 2014

Commented:
I would propose to split the points to me (Brian Tao) and TomasHelgi, as the 2 solutions actually work.
Pawan KumarDatabase Expert
Awarded 2016
Top Expert 2016

Commented:
Ohh my bad ! thought it was SQL Server.
Pawan KumarDatabase Expert
Awarded 2016
Top Expert 2016

Commented:
Disagree. Brain Tao solutions are not good (Loop oriented and not managed) . I think points should go to TomasHelgi.
Pawan KumarDatabase Expert
Awarded 2016
Top Expert 2016

Commented:
Even If i change "With" from a SELECT my method would be the best one. Even with in few seconds it will insert the 100000 records.
Brian TaoOwner
Top Expert 2014

Commented:
I'm fine if all 500 points goes to Tomas Helgi, but I do have something to say in response to Pawan Kumar Khowal's last 2 comments:
  1. I don't see why "loop oriented" is not good.  It solves the problem.
  2. Pawan Kumar Khowal's method doesn't work in MySQL as "WITH" is not supported, but the question is for MySQL.
  3. Not only does it not work in MySQL, but also it doesn't answer OP's question at all!  There's nothing mentioning that the OP wants to insert 0 to 9999 (or you may modify the SQL code to insert 99999, whatever) into the table. He wants to insert 100000 data, remember that? It may be 100000 names, 100000 addresses or 100000 who knows what.  The method "would be the best one"? Oh well~
Pawan KumarDatabase Expert
Awarded 2016
Top Expert 2016

Commented:
Dear Brain,

Lets just close this. Technical discussions ... :)

Bye !

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial