从数据库中提取单独的表

Posted

技术标签:

【中文标题】从数据库中提取单独的表【英文标题】:Extracting separate tables from a database 【发布时间】:2017-11-24 23:15:26 【问题描述】:

我的 MS Access 数据库中有 12 075 400 个条目。每个条目对应一个员工。共有 270 名员工,即每个员工有多个条目。每个员工还有其他多个列,例如薪水、位置等。

我想为同一数据库中的每个员工创建 270 个单独的表。员工以 1、2、3、4....直到 270 的形式输入到数据库中,其他列中的所有其他详细信息。

我尝试为此编写一个 SQL 查询,但它不起作用。我怎样才能从这个数据库中提取多个表来为每个员工创建单独的 270 个表?我也在考虑使用关系数据库,但不知道它会如何工作!

我也可以使用 python 来做同样的事情。如果有人可以建议如何使用 python 来做这件事,那就太好了。

【问题讨论】:

我想为同一数据库中的每个员工创建 270 个单独的表。...为什么?所有这些数据都可以通过查询来检索。一张表中有 1200 万条记录,您可能不想在数百个冗余表中扩展资源。 你真的不想想要这样做。如果您告诉我们您真正想要实现的目标,就会有一种查询方式。但在您提出新问题之前,请阅读How to ask a good SQL question。示例数据和预期结果比文字描述更有用。 这 12,075,400 个条目是否都存储在一个表中?如果是这样,是时候将该表拆分为其他表(每个实体 1 个表)。 【参考方案1】:
INSERT INTO MyNewTable(ID, Name)
SELECT DISTINCT ID, Name FROM MyBigOldTable

MyBigOldTable 是您现有的表。

Distinct 将确保返回的每个组合都是唯一的,因此只包括员工主记录唯一的列,而不是“事务”值。

编辑

我应该说这是假设您已经使用

创建了新表
CREATE MyNewTable(ID int, Name varchar)

不确定 Access,但您应该可以跳过此步骤

SELECT DISTINCT ID, Name
INTO MyNewTable
FROM MyBigOldTable

如果这不起作用,请尝试

SELECT *
INTO MyNewTable
FROM (
    SELECT DISTINCT ID, Name
    FROM MyBigOldTable
) as Foo

【讨论】:

以上是关于从数据库中提取单独的表的主要内容,如果未能解决你的问题,请参考以下文章

是否可以从 XMLSchema 形成的表中提取特定数据?

提取过滤后的表数据

从数组中提取 CSV 值并将它们单独显示为列表

使用报表查看器,如何从两个单独的数据集中提取

SQL:如何从单独的表动态计算值?

DB2 和 SQL-如何在特定字段中返回最大值,以便每行只显示一条记录;从多个表中提取数据