问题标签 [database-agnostic]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - 使用 DBIC 提取日期部分,同时保持查询数据库不可知
我在生产中使用 MySQL 数据库,并在运行测试时使用 SQLite 数据库。我的应用程序的一部分用于收集一年的每月统计数据。我已经成功地做到了这一点,但是它的代价是无法自动化测试,因为我在查询数据时使用了 MySQL 特定的函数:
注意我正在使用YEAR
和MONTH
MySQL 函数。
我知道一种方法可以替换 where 子句来消除 MySQLYEAR
函数的使用,如下所示:
但是我对如何处理该group_by
子句以及如何使这个字段日期值按月数据库不可知的分组感到困惑。想知道是否有人有任何想法?
谢谢!
sql - 为每个 (Col1,Col2) 选择最大值
让我们假设下表:
我想要一个 SQL 查询,它将返回以下内容:
所以 a ORDER BY time DESC
,它按不同的名称分组,并按不同的子名称分组。
这可能吗?我正在寻找一种不是特定于 DBMS 的解决方案 - 可以在大多数 DBMS 中运行的解决方案。
scala - 光滑的通用和驱动程序无关
基本上我想要实现的是以下组合:
Slick 3.0.0 数据库不可知论 和 Slick 3 可重用通用存储库
实际上,我尝试了很多,但我根本无法让它工作。
现在我们已经有一个问题了:
def createTable = all.schema.create
与dropTable...
->相同schema
,虽然我之前导入了驱动程序,但在这里无法解决。
但是,当我将其子类化时,会出现更大的问题:
这是代码
这显然不会编译,因为我不能通过NodeTable
as T
,但可以了解我想要实现的目标。
你知道如何解决这个问题吗?我还尝试使用伴随对象,将其BaseTable
移出BaseModel
并尝试加载simpleDriver
...但看起来该功能在最近的版本中已从 Slick 中删除:(
constraints - jOOQ:禁用约束的与数据库无关的方法
我想知道是否有办法以不可知的方式在 jOOQ 中为不同的数据库禁用数据库约束。例如,在 MySQL 和 PostgreSQL 中禁用外键约束有很大不同:
MySQL
PostgreSQL
实际上不太确定,但可能会涉及禁用触发器。
c# - 如何编写与 DB 无关的 .NET Core 应用程序?
我正在努力将控制台应用程序从 .NET Framework 4.6.2 移植到 .NET Core 2.0。应用程序需要连接到编译时平台未知的数据库。在完整的框架中,这很容易通过使用DbProviderFactories
.NET Core 2.0 中不再存在的机制来实现。
首先,我认为我可以简单地自己动态加载相应的DbProviderFactory
代码,使用类似于:
就像在这个库中所做的那样。只要DbProviderFactory
在编译时引用包含 的程序集(这违背了动态加载的目的),这段代码就可以很好地工作。
我试图只是System.Data.SqlClient.dll
放入应用程序的文件夹,但是该Instance
字段是null
因为这似乎只是不同runtimes
程序集的存根实现。当静态引用时,编译器会输出一个.deps.json
指向这些的详细文件。这里只是一个小插曲,给人留下深刻印象:
这不是有人可以手动输入的。
那么在 .NET Core 中开发与 DB 无关的应用程序的好方法是什么?
database-design - 没有编号的多对多自我参考
我想在两个标签实体之间建立关系,但我不喜欢在 RDBMS 数据库中处理它的典型方式。
喜欢这里:https ://stackoverflow.com/a/35784048/1624397
Book_id1, Book_id2...
或者我正在寻找另一个“坏”示例(无论如何,这在这种情况下是有意义的):
自引用用户friendsWithMe
和myFriends
.
如果我做类似的事情tag_id1
,tag_id2
我要么被迫搜索两者之间是否存在关系,要么被迫保留冗余数据。
有没有替代的解决方案?
优选地,该解决方案与存储无关。
sql - 在 PostgreSQL 中使用带括号的 LIKE
我尽量做到具体。
目前我使用 MS SQL Server 2012。
简化表 PlanMission 包含这些行
Bold_id 列只是一个唯一的 ID。MCurrentStates 列是一个 VARCHAR 列,其中包含状态作为子字符串。
状态只是一个用括号括起来的字符串,如 [planopen] 所以该列可能是空的或有许多状态,如上面的示例。
如果我这样做,在 MS SQL 中
它不起作用。它只列出 MCurrentStates 中所有非空的行。
它是通过插入解决的[]
这很好用。
现在我也想为 PostgreSQL 做这个。简单的解决方案是删除括号。
但我的问题是如何使用对 MS SQL 和 PostgreSQL 都相同的查询来做到这一点?
sql - JOIN...ON...JOIN...ON 与 JOIN...JOIN...ON...ON 之间的区别
如果有的话,以下之间有什么区别?
和:
结果似乎是一样的。
由于有评论和答案说第二种语法无效,我会澄清一下——SQL Server、PostgreSQL 和 MySQL 都可以接受这两种变体。我还使用一个平台,该平台拥有自己的 TSQL 实现,该平台将自己的实现转换为它实际连接的提供者之一,第二个变体是默认情况下它如何从可视化编辑器编写代码。
在第一个答案之后,我决定添加一个更复杂的第二种类型的示例:
我已经将表的名称更改为无意义的,因为真实的表是俄语的,无论如何也不会告诉你任何事情,但这是我现在正在处理的查询的一部分。另外,我想指出,我不是在询问优化查询的建议,如果有人发现它不是最理想的,我希望了解语法是否存在实际差异,或者只是表面上的差异。
mysql - 仅用于配置数据的名称-值-对模型
我读到数据库设计中的名称-值-对模型是一种反模式。本质上,您有一个包含两列的表。一列称为“名称”,另一列称为“值”。假设您正在管理不同区域的 AWS 配置。数据库结构如下:
唯一的用途是检索配置:
另一种解决方案是使用连接。这将消除重复并允许参照完整性。但它变得很麻烦:
table_aws has_many table_states which has_many table_credentials 具有列 access_key、user、pass。这确实消除了重复,但想象一下嵌套连接数量增加的潜力。
鉴于我唯一的用例,名称-值-对模型模型仍然是反模式还是合适?
java - 用于获取特定 n 条记录的数据库不可知查询
我正在寻找跨不同数据库运行SELECT * FROM TABLE查询的方法。仅举几例:postgres、teradata、mysql、bigquery、redshift。我想找到一种方法来并行化这个查询,这样我就可以产生多个线程来读取数据。每个线程将读取 n 条记录并将其转储到一个文件中(记录的数量是参数化的)。 示例: Table1 有 200 条记录:产生 4 个线程,每个线程读取 50 条记录并写入单独的文件,这总共给了我们 4 个文件。我发现了关于LIMIT/OFFSET的信息,但它不够通用,无法在这些平台上使用。我正在使用 jdbc 结果集。
有什么办法可以实现这一点,还是必须编写特定于数据库的实现?我需要这个的原因可能需要处理来自单个表的数百万条记录,并且我需要将其转储到受 n 条记录限制的文件中。因此,如果我有 100 万条记录并且我的限制大小为 200k,我将得到 5 个文件作为输出。
任何形式的提示/建议/帮助表示赞赏,谢谢。