sql >> Database teknologi >  >> RDS >> Mysql

Er det muligt at lave massekopiering i mysql

Du kan indsætte flere rækker ved hjælp af en enkelt SQL-sætning som sådan:

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

Opdatering:

MarkR har ret i sin kommentar - hvis du indsamler data fra en bruger, eller du kompilerer information, kan du bygge forespørgslen dynamisk med noget som:

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

To vigtige punkter at bemærke:

  1. Hvis du accepterer input fra en bruger, er det meget vigtigt for at rense alle brugerinput, ellers kan ondsindede brugere ændre/slette/slette hele din database. For mere info, google "SQL-injektioner."
  2. Jeg bruger StringBuilder-klassen i stedet for at bruge en primitiv streng og blot tilføjelse (dvs. string s ="Insert..."; s+="blah blah blah"), fordi det er StringBuilder er hurtigere til at tilføje, fordi det behandles ikke som et array, og det behøver derfor ikke at ændre størrelsen på sig selv, når du tilføjer det.


  1. vælg alle kolonner, der ikke er i en anden tabel laravel 5.5

  2. Langsom søgning efter indeksforespørgsel LIKE% MYSQL

  3. Går gennem mysql-databasen

  4. Indstil et cron-job til at opdatere artikeloplysninger afhængigt af dets stemmeværdier