【发布时间】:2014-02-07 05:26:34
【问题描述】:
好的,假设我有一个包含几千个插入命令的 .sql 文件(例如 data.sql),如下所示:
...
INSERT INTO some_table VALUES ('person_name_1', 31, 'CA');
INSERT INTO some_table VALUES ('person_name_2', 29, 'NC');
INSERT INTO some_table VALUES ('person_name_3', 18, 'NY');
INSERT INTO some_table VALUES ('person_name_4', 21, 'IL');
INSERT INTO some_table VALUES ('person_name_5', 25, 'FL');
...
我想知道从 C# 代码将此数据插入 SQL Server 2012 数据库的最佳方法,并且作为附加信息,这将是每天一次,但需要手动通过网络界面完成。
现在,我所拥有的是:我解析 .sql 文件并构建这个非常大的 INSERT,所以我最终得到了一个具有
的 StringBuilder (sb)INSERT INTO some_table VALUES
('person_name_1', 31, 'CA'),
('person_name_2', 29, 'NC'),
('person_name_3', 18, 'NY'),
('person_name_4', 21, 'IL'),
('person_name_5', 25, 'FL'),
...
然后我跑
using (var cmd = new SqlCommand { Connection = conn })
{
cmd.CommandType = CommandType.Text;
cmd.CommandText = sb.ToString().Remove(sb.Length - 1);
cmd.ExecuteNonQuery();
}
有没有更好的方法来做到这一点?
【问题讨论】:
-
从您获取数据的地方,您是准备数据还是以 CSV 或文本文件的形式获取数据?
-
@MilanRaval 我没有准备。我从某个来源获得它,就像我描述的那样:作为一个 .sql 文件,包含几千个 INSERT 命令。
-
您可以为此使用 SQLCMD - 请参阅下面的答案
标签: c# sql sql-server bulkinsert