Oracle数据库查询
我想创建一个包含一百万条随机记录的测试数据库表。因为我是数据库新手, 有没有办法用脚本填充它 这是我对我的表的查询Oracle数据库查询,oracle,Oracle,我想创建一个包含一百万条随机记录的测试数据库表。因为我是数据库新手, 有没有办法用脚本填充它 这是我对我的表的查询 CREATE TABLE Employee (SEQNUM NUMBER, START_DATE DATE, END_DATE DATE, DURATION TIME, START_TIME TIME
CREATE TABLE Employee (SEQNUM NUMBER,
START_DATE DATE,
END_DATE DATE,
DURATION TIME,
START_TIME TIME,
END_TIME TIME,
TOTAL_NUM NUMBER);
这里是一个简单的查询,使用双表和DBMS_RANDOM获取样本数据
CREATE TABLE SMPL
AS
WITH
smpl AS
(
SELECT
ROWNUM SEQNUM,
TO_DATE('01012016','ddmmyyyy') + 365 * dbms_random.value START_TIME, /* random 1 year timestamps from 1.1.2016 */
TRUNC(10000 * dbms_random.value) TOTAL_NUM, /* random 0 .. 10.000 */
31 * dbms_random.value DURATION /* duration 0 .. 31 days */
FROM dual
CONNECT BY LEVEL <= 100 /* update number of records here */
)
SELECT
SEQNUM,
TRUNC(START_TIME) START_DATE,
TRUNC(START_TIME + DURATION) END_DATE,
DURATION,
START_TIME,
START_TIME + DURATION END_TIME,
TOTAL_NUM
FROM smpl;
正如其他人所指出的,该员工的姓名不正确。也考虑只存储
在表格中物理地开始时间和持续时间,并计算例如在视图中的相关列开始日期、结束时间、结束日期。这里是一个使用双表和DBMS随机获取样本数据的简单查询
CREATE TABLE SMPL
AS
WITH
smpl AS
(
SELECT
ROWNUM SEQNUM,
TO_DATE('01012016','ddmmyyyy') + 365 * dbms_random.value START_TIME, /* random 1 year timestamps from 1.1.2016 */
TRUNC(10000 * dbms_random.value) TOTAL_NUM, /* random 0 .. 10.000 */
31 * dbms_random.value DURATION /* duration 0 .. 31 days */
FROM dual
CONNECT BY LEVEL <= 100 /* update number of records here */
)
SELECT
SEQNUM,
TRUNC(START_TIME) START_DATE,
TRUNC(START_TIME + DURATION) END_DATE,
DURATION,
START_TIME,
START_TIME + DURATION END_TIME,
TOTAL_NUM
FROM smpl;
正如其他人所指出的,该员工的姓名不正确。也考虑只存储
在表格中实际开始时间和持续时间,并计算相关列的开始日期、结束时间和结束日期。不应将日期和时间部分分开。数据类型DATE或TIMESTAMP始终同时包含日期和时间值。Oracle中没有时间数据类型。我建议您的表应该是CREATE表Employee SEQNUM NUMBER、START_DATE、END_DATE、DURATION INTERVAL DAY TO SECOND、TOTAL_NUM NUMBER。祝你好运。我很难想象一个员工的持续时间是什么。如果持续时间是结束日期和开始日期之间的差异,它不应该存储在数据库中-这是正确的数据库设计原则之一。问题:总数应该是什么样的数字?整数?限制为低值和高值?非负数?这只是一个示例表,所以我只把基本名称作为Employee。实际上,我正在创建一个用于存储呼叫详细记录SCDR的表。感谢@WernfriedDomscheit和mathguy的快速回复。您不应该将日期和时间部分分开。数据类型DATE或TIMESTAMP始终同时包含日期和时间值。Oracle中没有时间数据类型。我建议您的表应该是CREATE表Employee SEQNUM NUMBER、START_DATE、END_DATE、DURATION INTERVAL DAY TO SECOND、TOTAL_NUM NUMBER。祝你好运。我很难想象一个员工的持续时间是什么。如果持续时间是结束日期和开始日期之间的差异,它不应该存储在数据库中-这是正确的数据库设计原则之一。问题:总数应该是什么样的数字?整数?限制为低值和高值?非负数?这只是一个示例表,所以我只把基本名称作为Employee。实际上,我正在创建一个用于存储呼叫详细记录SCDR的表。感谢@WernfriedDomscheit和mathguy提供的快速响应。这里的编辑演示了如何同时缩进查询。感谢@Marmite Bomber提供的快速解决方案。是的,表名有点奇怪,我没有想到更改名称,因为它只是一个示例表。感谢您提供的解决方案,查询再次完美运行。下面是一个编辑,演示如何缩进查询。感谢@Marmite Bomber提供的快速解决方案。是的,表名有点奇怪,我没有想到更改名称,因为它只是一个示例表。查询再次完美运行,感谢您的解决方案。