sql >> Database >  >> RDS >> Mysql

Is dat mogelijk om bulkkopie te doen in mysql

U kunt meerdere rijen invoegen met een enkele SQL-instructie als volgt:

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

Bijwerken:

MarkR heeft gelijk in zijn opmerking - als u gegevens van een gebruiker verzamelt of informatie verzamelt, kunt u de query dynamisch opbouwen met zoiets als:

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();

Twee belangrijke punten om op te merken:

  1. Als je invoer van een gebruiker accepteert, is het erg belangrijk om alle gebruikersinvoer te zuiveren, anders zouden kwaadwillende gebruikers uw hele database kunnen wijzigen/verwijderen/laten vallen. Voor meer info, google "SQL-injecties."
  2. Ik gebruik de StringBuilder-klasse, in plaats van een string-primitief en eenvoudig toe te voegen (bijv. string s ="Insert..."; s+="blah blah blah") omdat StringBuilder sneller is bij het toevoegen, omdat het wordt niet behandeld als een array, en hoeft dus zichzelf niet te vergroten of te verkleinen als je het toevoegt.


  1. Caching in PostgreSQL

  2. Wat is een databank? Definitie, typen en componenten

  3. Kun je auto-increment gebruiken in MySql zonder dat dit de primaire sleutel is?

  4. PL/Proxy compileren met PostgresPlus Advance Server 9.1