繁体   English   中英

如何自动找到正确的模式以将数据存储在PostgreSQL数据库中?

[英]How to automatically find the correct schema to store data inside a PostgreSQL database?

我有一个C#WinForms应用程序,该应用程序导入固定宽度文件中包含的销售额并将其存储到某些表中。 这些表具有完全相同的结构,但是位于数据库内部的不同架构中。

当前,我在应用程序中运行两个查询以存储每个销售的数据,一个查询获取存储数据的正确模式,另一个查询实际上将其插入表中。

为了更好地举例说明,假设我在“主”模式中有一个“客户”表,并且有几种模式(每个国家的每个地区都有一个),每个模式都有一个“销售”表。 我使用每个销售的客户ID来找到正确的架构来存储它。

我需要优化此过程,使其更快。 我分析了该应用程序,这两个查询是最耗时的步骤。 我认为在我的应用程序内部运行一个命令,而将查找正确架构的工作留给数据库将有所帮助。

我想实现以下目标:

INSERT INTO 
    (SELECT clients.schema_name FROM main.clients WHERE client_id = @client_id).sales 
    (client_id, qty, value) 
VALUES 
    (@client_id, @qty, @value)

显然,它不起作用。 我对SQL的了解不多,仅对基础知识了解不多,但是我认为用单个命令不可能做到这一点,我想我需要一个存储过程。

我希望听到一些指导甚至更好的解决方案(只要它不涉及更改数据库结构)。

您的数据库已损坏,因此避免该问题长期来看很不值得。 如果您有兴趣,那么使用类似的模式指出可维护性问题并不难。

也就是说,您可能在C#代码中缓存了client_id-> schema_name,并且避免了大多数查询来获取该信息。

您也可以编写一个SP来执行此操作,但是它可能不得不诉诸于构造动态SQL查询或类似的hack,而这些hack本身可能就很慢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM