Я должен вставить несколько строк в свои строки Mysql database.my, доступны в моем наборе данных.
я использую, чтобы цикл отправил, строка один за другим является тем правильным путем?...
Вы можете вставить несколько строк с помощью одного SQL-оператора, например, так:
INSERT INTO myTable (col1, col2, col3) VALUES ('myval1', 'myval2', 'myval3'), ('myotherval1', 'myotherval2', 'myotherval3'), ('anotherval1', 'anotherval2', 'anotherval3');
Обновление:
MarkR прав в своем комментарии - если вы собираете данные от пользователя или компилируете информацию, вы можете построить запрос динамически, используя что-то вроде:
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();
Два важных момента:
Вы можете использовать LOAD DATA INFILE (или LOAD DATA LOCAL INFILE) для массовой загрузки строк в таблицу из существующего файла.
В случае ЗАГРУЗКИ ДАННЫХ ЛОКАЛЬНЫЙ, файл передается от клиента на сервер и вставляется как большой пакет. Это не ограничено максимальным размером пакета (как INSERT), но по-прежнему ограничено максимальной транзакцией, которую вы можете откатить в innodb - все это происходит в одной транзакции, поэтому, если она слишком велика, она превысит ваш откат пространство, и в любом случае, если вы откатываете очень большую транзакцию, это занимает много времени и влияет на сервер.
Обычно не рекомендуется загружать более нескольких (возможно, десятков, возможно, сотен) мегабайт данных за одну вставку или ЗАГРУЗИТЬ ДАННЫЕ. Если у вас есть больше, вы можете разделить его.