2013-03-04 3 views
3

У меня есть вопрос о петлевой DataTable в C#DataTable производительность цикла

У меня есть DataTable около 20,000 строк и 60 столбцов

Я хочу написать SQL запрос, чтобы вставить все данные в DataTable в базу данных

Я использую My Sql

это мой SQL синтаксис:

"Insert into a values (...), (...), (...), ..." 

"(...)" есть все данные в одном ряду

это C# код:

DataTable myDataTable; // myDataTable has 20.000 rows and 60 columns 
string mySql = "insert into a values " 
for(int iRow = 0; iRow < myDataTable.Rows.Count; iRow++) 
{ 
    mySql += "("; 
    for(int iColumn = 0; iColumn < myDataTable.Columns.Count; iColumn++) 
    { 
      string value = myDataTable.Rows[iRow][iColumn].ToString() 
      string parameter = "@" + iRows.ToString() + iColumns.ToString(); 
      // here is some code for add "parameter" and "value" to MySqlCommand 
      mySql += "," 
    } 

    // remove "," at the end of string mySql 
    mySql = mySql.SubString(0, mySql.Length - 1); 

    mySql += ")," 
} 
// remove "," at the end of string mySql 
// after that, I will execute mySql command to insert data into database here 

, когда я запускаю этот код, это займет много времени, чтобы закончить

Я пытаюсь перейти от «string» к «StringBuilder», но это немного быстрее.

Как сделать код быстрее?

Спасибо за поддержку.

+0

Что такое * здесь есть код для добавления «параметра» и «значение» в MySqlCommand *? –

+0

Нельзя использовать SqlBulkCopy или LINQ to SQL. – Popeye

+0

@Debug Вашему предложению 'SqlBulkCopy' может потребоваться некоторый обзор: * Я использую My Sql * –

ответ

1

Я попросил немного синхронизации информации в комментариях, но потом я заметил эту строку кода:

mySql = mySql.SubString(0, mySql.Length - 1); 

Я хотел бы предложить удаление, что с вашего цикла и имея немного умнее кода только добавить запятые, когда необходимо.

Например, во внутреннем цикле добавьте запятую к переменной mySql перед каждым параметром вместо следующего, за исключением того, где iColumn == 0. Это будет останавливать ненужную запятую в конце строки каждый раз.

+0

Спасибо за вашу поддержку. – n2h

Смежные вопросы