首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从单个条目通过sql查询填充数据库的简单方法是什么?

从单个条目通过sql查询填充数据库的简单方法是什么?
EN

Stack Overflow用户
提问于 2009-12-09 18:27:47
回答 3查看 3.7K关注 0票数 0

我们希望填充一些用于测试的表。除了时间戳列之外,数据都可以是相同的。行中的其他列包含复杂的数据,比如xml格式的对象和其他杂乱无章的东西,所以我们不想要重做它。通过sql查询将时间戳增量为常数间隔,将单个条目扩展到数千个条目是一种简单的方法。

我们目前的想法(在C代码中)是:

代码语言:javascript
运行
复制
Get the latest (likely only) row and store it in a variable "thisRow"
While(thisRow->time < endTime)
{
Increment thisRow->time by a constant variable
Insert thisRow
}

我们在用postgres

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-09 18:37:04

我喜欢在我的数据库中为某些查询保留一个数字表。如果您有一个,那么您可以使用下面的单个语句。如果您没有一个表,那么可以很容易地生成一个临时表或永久表。

代码语言:javascript
运行
复制
INSERT INTO Test_Table
(
     col1,
     col2,
     ...,
     my_timestamp
)
SELECT
     ST.col1,
     ST.col2,
     ...,
     DATEADD(mi, N.number, ST.my_timestamp)
FROM
     Source_Table ST
INNER JOIN Numbers N ON
     N.number BETWEEN 1 AND 1000  -- Change this to what you want

这是用于Server的。在RDBMS中,DATEADD函数可能有所不同。如果您不希望间隔恰好是一分钟,您也可以添加一个随机函数,当然,您也可以将间隔更改为小时、天或其他时间。如果你想每隔两小时,你也可以用一个简单的方程式。

票数 2
EN

Stack Overflow用户

发布于 2009-12-09 18:39:43

使用SQL SERVER 2005+,您可以使用CTE语句。

看看这个

代码语言:javascript
运行
复制
DECLARE @StartTime DATETIME,
        @EndTime DATETIME

SELECT  @StartTime = '01 Jan 2009',
        @EndTime = '31 Jan 2009'

DECLARE @Table TABLE(
        DateVal DATETIME,
        Col1 INT
)

INSERT INTO @Table SELECT @StartTime, 1

SELECT  *
FROM    @Table

;WITH CTE AS (
        SELECT @StartTime StartTime
        UNION ALL
        SELECT  DATEADD(dd, 1, StartTime) StartTime
        FROM    CTE 
        WHERE   StartTime < @EndTime
)
SELECT  CTE.*,
        t.Col1
FROM    CTE,
        @Table t
票数 2
EN

Stack Overflow用户

发布于 2009-12-09 18:44:51

如果使用的数据库支持递归,例如Microsoft SQL Server,则可以使用以下内容:

代码语言:javascript
运行
复制
WITH T AS (
    SELECT 1 AS r
    UNION ALL
    SELECT r + 1 AS r
    FROM T
    WHERE r < 100 -- Or however many rows you need
)
INSERT INTO TestTable (Col1, Col2,...)
SELECT s.Col1, s.Col2,...
FROM SourceTable s
    CROSS JOIN T
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1875835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档