【发布时间】:2017-10-31 21:48:12
【问题描述】:
我已经搜索了许多线程以试图找到这个问题的答案,但我发现的任何答案都建议在单个列或多个列上使用唯一约束。
我的问题是,我正在用 C# 编写一个带有 SQL Server 后端的应用程序。其中一项功能是允许用户在经过一点预处理后将.CSV 文件导入数据库。我需要找到最快的方法来防止用户多次导入相同的数据。数据看起来像
ID -- will be auto-generated in SQL Server (PK)
Date Time(datetime)
Machine(nchar)
...
...
...
Name(nchar)
Age(int)
我想允许任意数量的列是重复值,只要整个记录不是。
我正在考虑在数据库中创建另一列,通过将所有列散列在一起并使其唯一获得,但想确定这是否是最有效的方法,或者生成的散列是否可以保证唯一。 CSV 文件只有 60 MB 左右,但会有数万个。
任何帮助将不胜感激。
谢谢
【问题讨论】:
-
将文件插入临时表并使用 SQL Merge 或从那里插入 where not exists 语句?
-
你能插入临时表吗?如果不能,您可以使用类似 OPENDATASOURCE 的方法从 CSV 中查询数据吗?
标签: c# sql-server linq-to-sql