我不是要求提供应用程序,只是想寻求一些共同的建议和潜在风险的建议。从网站上收集的信息显示,SQL批量复制是必需的,是否还有其他需要考虑的问题(我认为仅使用窗体应用程序打开txt文件将是一个巨大的工程;也许可以将其拆分为Blob数据)。
谢谢,如果有人需要,我会编辑问题以便更清晰地表达。
你需要编写一个winforms应用程序吗?使用SSIS可能会更简单、更快速。特别是可以使用一些内置任务,例如Bulk Insert task。
另外,值得查看的是SQL Server 2005中的平面文件批量导入方法速度比较。
更新:如果您是SSIS的新手,请查看以下网站,以便快速上手:1)SSIS控制流基础知识 2)开始学习SQL Server Integration Services
这是关于如何使用Integration Services将Excel文件导入到SQL Server 2005的另一个教程。
这将是一个流式处理的尝试。
如果可以的话,请不要在此处使用事务。事务成本将会太高。
因此,您将逐行读取文件并逐行插入。您应该将失败的插入转储到另一个文件中,以便稍后诊断并查看它们失败的位置。
首先,我建议您尝试批量插入几百行,以确保流式处理正常工作,然后您可以随意打开。
顺带一提,有时候在进行批量插入操作之前删除表的索引并在操作完成后重新创建索引会更快。
BULK INSERT
以避免记录这些插入(知道如果需要可能会重复插入)。 - Dave DuPlantis我完全推荐使用SSIS,您可以在相对较短的时间内读取数百万条记录并清理它们。
您需要花些时间来掌握SSIS,但这将会有所回报。这里还有一些其他的SO线程可能会有用:
什么是在SQL Server(C#客户端)中批量插入大量数据的最快方法?
您还可以从C#创建一个包。我有一个C#程序,它从遗留系统中读取3GL“主文件”(使用我为相关项目开发的API解析为对象模型),获取一个包模板并修改它以生成ETL包。
你所说的数据大小其实并不是那么巨大。我不知道你的效率问题是什么,但如果你可以等待几个小时进行插入,你可能会惊讶于使用一种非常天真的技术,即逐行插入每一行数据,这将变得非常容易。将一千左右的行分批提交到SQL服务器可能会使它更快。
这只是一个建议,如果你不需要它尽可能快的话,可以节省你大量的编程时间。根据这个导入需要运行的频率,为了等待它运行而节省几天的编程时间很容易是值得的。