建筑配件架构和散装插件

时间:2011-12-08 14:07:05

标签: asp.net sql schema bulkinsert

我开发了汽车服务的自动化应用程序。我开始使用附件模块,但我无法想象我应该如何构建数据模型架构。

我有一个文本文件中的附件数据,逐行(不是cvs或ext ..,因此,我通过子字符串拆分主题)。每个月,工厂都会将数据文件发送到服务。它包括价格,名称,代码等。每月价格都会更新。我认为bulkinsert(和我做的)是将数据带到SQL的一个很好的选择,但它不是我的问题的解决方案。我不希望重复数据仅用于获得新价格。我想只将价格插入另一张桌子并建立配件 - 配件价格之间的关系,但有时候,一些新的配件可以添加到列表中,所以我必须检查配件表的每一行。而且,另一方面,我必须保留配件,发票等的数量。

顺便说一句,他们每月发送70,000行。那么,有人可以帮助我吗? :)

感谢。

1 个答案:

答案 0 :(得分:1)

70,000行不是大文件。您必须自己解析此文件,并根据其中包含的数据发出普通的insertupdate语句。没有必要对这种大小的数据使用批量操作。

最常见的方法是编写一个接受所有参数的简单SQL语句,然后执行以下操作:

if(exists(select * from YourTable where <exists condition>))
    update YourTable set <new values> where <exists condition>
else
    insert into YourTable (<columns>) values(<values>)

(或者,您可以尝试重写此语句以使用merge T-SQL语句)

哪里......

  • <exists condition>表示您需要检查项目是否已存在
  • <new values>是您要更新的列的Column = value语句集
  • <columns>是用于为项目插入数据的列集
  • <values>是与上一列列表
  • 对应的值集

然后,您将遍历文件中的每一行,将数据解析为参数值,然后使用这些参数运行上述SQL语句。