仅将新的或更新的记录导入到sql数据库中,使用bcp导入和导出
我有一个 csv 文件。现在,我必须将此文件中的所有数据导入到我的 sql 数据库 mdf 文件中。
ItemID
178
212
3423
我会简单地从 bcp 进行导入。但是,一段时间后,文件会更新一些新记录,我希望这次我只获取新记录并插入到 sql 数据库中。如何做到这一点?我是否必须匹配现有的 ItemID,或者在 ItemID 列上使用主键,以及何时自动拒绝重复记录,或者我应该添加一个新列作为 DateTimeofInsert,然后进行相应操作,请建议?:
ItemID
178
212
3423
4676
782
2308
另外,我使用的是 Sql Server Express,那么是否有任何选项可以通过使用计划作业等来自动执行此过程?
I am having a csv file. Now, i have to import all the data from this file into my sql database, mdf file.
ItemID
178
212
3423
I would do the import simply from the bcp. But, after some time the file is updated with some new records and i want that this time i would only take the new records and insert into the sql database. How to do this? Will i have to match the existing ItemIDs, or use a Primary Key on the ItemID column, and when it would automatically reject the duplicate records, or shall i add a new column as DateTimeofInsert, and then go accordingly, Please sugget?:
ItemID
178
212
3423
4676
782
2308
Also , am using Sql Server Express, so is there any option to automate this process by using Scheduling Jobs etc?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您只需跟踪每次处理的行号即可。因此,每次您的进程选择文件以将新行加载到数据库中时,您都会从上次访问的文件中的下一行开始。保存任何匹配。
或者,每次处理文件时,您可以遵循以下方法:
You could just keep track of what line number you process up to each time. So each time your process picks up the file to load new rows into the db, you start from the next line in the file that you last got to. Saves any matching up.
Or, each time you process the file, you could follow this approach: