sql >> Databáze >  >> RDS >> Mysql

Je možné provést hromadné kopírování v mysql

Pomocí jednoho příkazu SQL můžete vložit více řádků, například takto:

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

Aktualizace:

MarkR má ve svém komentáři pravdu - pokud shromažďujete data od uživatele nebo shromažďujete informace, můžete dotaz sestavit dynamicky pomocí něčeho jako:

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

Dva důležité body:

  1. Pokud přijímáte vstup od uživatele, je to velmi důležité dezinfikovat všechny uživatelské vstupy, jinak by uživatelé se zlými úmysly mohli upravit/smazat/zahodit celou vaši databázi. Pro více informací vygooglujte „SQL Injections.“
  2. Používám třídu StringBuilder, místo abych používal primitivum řetězce a jednoduše připojoval (tj. řetězec s ="Vložit..."; s+="bla bla bla"), protože je to StringBuilder, který je rychlejší při přidávání, protože nezachází se s ním jako s polem, a proto se při jeho připojení nemusí měnit jeho velikost.


  1. Je nějaká škoda při resetování automatického přírůstku?

  2. Podpora transakcí motoru MyIsam

  3. Aktualizace databáze a aplikace Android SQLite

  4. Jak mohu filtrovat znaky Emoji z mého vstupu, abych mohl uložit v MySQL <5.5?