webentwicklung-frage-antwort-db.com.de

So fügen Sie einen Stapel in MySQL ein

Ich habe 1 - viele Datensätze, die in eine Tabelle eingegeben werden müssen. Was ist der beste Weg, um dies in einer Abfrage zu tun? Sollte ich nur eine Schleife erstellen und einen Datensatz pro Iteration einfügen? Oder gibt es einen besseren Weg?

120
Genadinik

Aus dem MySQL-Handbuch

INSERT-Anweisungen, die die VALUES-Syntax verwenden, können mehrere Zeilen einfügen. Schließen Sie dazu mehrere Listen mit Spaltenwerten ein, die jeweils in Klammern und durch Kommas getrennt sind. Beispiel:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
265
nietaki

Meistens arbeiten Sie nicht in einem MySQL-Client und sollten Batch-Inserts mit der entsprechenden API zusammen ausführen.

Z.B. in JDBC:

connection con.setAutoCommit(false); 
PreparedStatement prepStmt = con.prepareStatement("UPDATE DEPT SET MGRNO=? WHERE DEPTNO=?");
prepStmt.setString(1,mgrnum1);                 
prepStmt.setString(2,deptnum1);
prepStmt.addBatch();

prepStmt.setString(1,mgrnum2);                        
prepStmt.setString(2,deptnum2);
prepStmt.addBatch();

int [] numUpdates=prepStmt.executeBatch();

http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/ad/tjvbtupd.htm

22
Kamran
Insert into table(col1,col2) select col1,col2 from table_2;

Bitte gehen Sie zu: http: //dev.mysql.com/doc/refman/5.5/en/insert.html

6
janwen

Eine Abfrage zum Laden von Daten in eine Datei ist eine viel bessere Option, aber einige Server wie godaddy schränken diese Option beim gemeinsamen Hosting ein, sodass nur noch zwei Optionen übrig sind. Eine Option ist das Einfügen eines Datensatzes bei jeder Iteration oder Stapeleinfügung Anzahl der Zeichen in MySQL festgelegt, dann wird Ihre Abfrage abstürzen. Daher schlage ich vor, Daten in Chunks mit Batch-Insert einzufügen. Dies minimiert die Anzahl der mit database.best of luck erstellten Verbindungen

mit mysql können Sie mehrere Zeilen gleichzeitig einfügen INSERT manual

3
bensiu