在后台线程上不断从文本文件填充 SQL 数据库

发布于 2024-10-02 10:16:28 字数 210 浏览 7 评论 0原文

目前,我想在将数据存储到数据库时将其作为用户的一个选项提供。

将数据保存到文件并使用后台线程将数据从文本文件读取到 SQL Server。

我的程序流程: - 不断来自服务器的数据流(每秒 100 个)。 - 想要将数据存储在文本文件中,并使用后台线程将数据从文本文件不断复制回 SQL 数据库,作为另一个用户选项。

这以前做过吗?

干杯。

Currently, I would like provide this as an option to the user when storing data to the database.

Save the data to a file and use a background thread to read data from the textfile to SQL server.

Flow of my program:
- A stream of data coming from a server constantly (100 per second).
- want to store the data in a textfile and use background thread to copy data from the textfile back to the SQL database constantly as another user option.

Has this been done before?

Cheers.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

九歌凝 2024-10-09 10:16:28

你的问题确实有点让人困惑。

我猜你的意思是:

  • 每秒 100 行来自某个源或服务器(例如日志条目)
  • 用户的一个选项是文本文件缓存:这些行存储在文本文件中并定期存储将文本文件的内容增量复制到 SQL Server 表中。
  • 用户的另一个选择是直接插入:数据在传入时直接存储在数据库中,中间没有文本文件。

我说得对吗?

如果是,那么您应该执行以下操作:

  • 在表的 INSERT 操作上创建触发器
  • 在该触发器中,检查哪个用户正在插入。如果用户禁用了文本文件缓存,则可以继续插入。否则,数据将重定向到文本文件(或缓存表)。
  • 创建一个存储过程,检查缓存表或文本文件中是否有新数据,将新数据复制到实际表中,然后删除缓存数据。
  • 创建一个每分钟、每小时、每天在存储过程之上运行的 SQL Server 代理作业...

由于从 T-SQL 到文本文件的接口不是很灵活,我建议改用缓存表。为什么是文本文件?

就此而言,为什么要在将数据插入表之前缓存数据呢?如果您解释一下问题的背景,也许我们可以提出更好的解决方案。

Your question is indeed a bit confusing.

I'm guessing you mean that:

  • 100 rows per second come from a certain source or server (eg. log entries)
  • One option for the user is textfile caching: the rows are stored in a textfile and periodically an incremental copy of the contents of the textfile into (an) SQL Server table(s) is performed.
  • Another option for the user is direct insert: the data is stored directly in the database as it comes in, with no textfile in between.

Am I right?

If yes, then you should do something in the lines of:

  • Create a trigger on an INSERT action to the table
  • In that trigger, check which user is inserting. If the user has textfile caching disabled, then the insert can go on. Otherwise, the data is redirected to a textfile (or a caching table)
  • Create a stored procedure that checks the caching table or text file for new data, copies the new data into the real table, and deletes the cached data.
  • Create an SQL Server Agent job that runs above stored procedure every minute, hour, day...

Since the interface from T-SQL to textfiles is not very flexible, I would recommend using a caching table instead. Why a textfile?

And for that matter, why cache the data before inserting it into the table? Perhaps we can suggest a better solution, if you explain the context of your question.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文