在SQL Server中插入100000行数据,需要考虑以下几个方面:
可以使用批量插入语句,将数据分成若干个小批次插入,以避免对数据库服务器造成过大压力。
例如,可以使用以下语句将数据分成1000个小批次插入:
INSERT INTO mytable (column1, column2, column3)
SELECT column1, column2, column3
FROM mytable_0
UNION ALL
SELECT column1, column2, column3
FROM mytable_1
UNION ALL
SELECT column1, column2, column3
FROM mytable_2
UNION ALL
...
SELECT column1, column2, column3
FROM mytable_999
UNION ALL
SELECT column1, column2, column3
FROM mytable_1000
使用TOP语句可以限制插入的数据行数。例如,可以使用以下语句将数据插入前1000行:
INSERT INTO mytable (column1, column2, column3)
SELECT TOP 1000 column1, column2, column3
FROM mytable_source
使用子查询可以先将数据分组,然后分批插入。例如,可以使用以下语句将数据按日期分组,每1000行插入一次:
INSERT INTO mytable (column1, column2, column3)
SELECT column1, column2, column3
FROM mytable_source
WHERE date_column BETWEEN DATEADD(day, -1000, GETDATE()) AND GETDATE()
使用C#代码可以实现更灵活的分批插入。例如,可以使用以下代码将数据分成若干个批次插入:
List<MyTable> list = new List<MyTable>();
for (int i = 0; i < 1000; i++)
{
MyTable table = new MyTable();
table.Column1 = "value1";
table.Column2 = "value2";
table.Column3 = "value3";
list.Add(table);
}
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
foreach (MyTable item in list)
{
SqlCommand command = new SqlCommand("INSERT INTO mytable (column1, column2, column3) VALUES (@column1, @column2, @column3)", connection);
command.Parameters.AddWithValue("@column1", item.Column1);
command.Parameters.AddWithValue("@column2", item.Column2);
command.Parameters.AddWithValue("@column3", item.Column3);
command.ExecuteNonQuery();
}
}
以上是一些常见的方法,可以根据具体需求选择合适的方法进行数据插入。无论使用哪种方法,都需要注意数据插入的效率和稳定性,以保证数据的安全和完整性。
领取专属 10元无门槛券
手把手带您无忧上云