Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ist das Massenkopieren in mysql möglich

Sie können mehrere Zeilen mit einer einzigen SQL-Anweisung wie folgt einfügen:

INSERT INTO myTable (col1, col2, col3) VALUES ('myval1', 'myval2', 'myval3'), ('myotherval1', 'myotherval2', 'myotherval3'), ('anotherval1', 'anotherval2', 'anotherval3');

Aktualisierung:

MarkR hat Recht mit seinem Kommentar - wenn Sie Daten von einem Benutzer sammeln oder Informationen zusammenstellen, können Sie die Abfrage dynamisch mit etwas wie:

erstellen
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.Append("INSERT INTO myTable (col1, col2, col3) VALUES ");
for(int i=0;i<myDataCollection.Count;i++) {
  stringBuilder.Append("(" + myDataCollection[i].Col1 + ", " + myDataCollection[i].Col2 + ", " + myDataCollection[i].Col3 + ")");
  if (i<myDataCollection.Count-1) {
    stringBuilder.Append(", ");
  } else {
    stringBuilder.Append(";");
  }
}

string insertStatement = stringBuilder.ToString();

Zwei wichtige Punkte zu beachten:

  1. Wenn Sie Eingaben von einem Benutzer akzeptieren, ist dies sehr wichtig um alle Benutzereingaben zu bereinigen, andernfalls könnten böswillige Benutzer Ihre gesamte Datenbank ändern/löschen/löschen. Für weitere Informationen googeln Sie "SQL-Injektionen."
  2. Ich verwende die StringBuilder-Klasse, anstatt ein String-Primitiv zu verwenden und einfach anzuhängen (dh string s ="Insert..."; s+="blah blah blah"), weil es StringBuilder beim Anhängen schneller ist, weil Es wird nicht als Array behandelt und muss daher beim Anhängen nicht selbst in der Größe angepasst werden.