Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 这是用唯一值填充维度表的适当方法吗?_Mysql_Database_Data Warehouse_Star Schema - Fatal编程技术网

Mysql 这是用唯一值填充维度表的适当方法吗?

Mysql 这是用唯一值填充维度表的适当方法吗?,mysql,database,data-warehouse,star-schema,Mysql,Database,Data Warehouse,Star Schema,以下脚本是否适合填充date_dim表?我正在使用sqlalchemy在MySQL中用熊猫数据框填充一个临时表。下面的SQL脚本的目的是用dates\u dim\u temp的值填充dates\u dim,如果它们还不存在的话。我还打算为date_dim中的新条目创建新的主键,但希望在继续之前检查我是否使用此脚本处于正确的轨道上: INSERT INTO date_dim (id, created_at, week_day, month_day, month_num, `year`) SEL

以下脚本是否适合填充date_dim表?我正在使用sqlalchemy在MySQL中用熊猫数据框填充一个临时表。下面的SQL脚本的目的是用dates\u dim\u temp的值填充dates\u dim,如果它们还不存在的话。我还打算为date_dim中的新条目创建新的主键,但希望在继续之前检查我是否使用此脚本处于正确的轨道上:

INSERT INTO date_dim  (id, created_at, week_day, month_day, month_num, `year`) 
SELECT DISTINCT *
FROM date_dim_temp 
WHERE NOT EXISTS (SELECT * FROM date_dim_temp ddt JOIN date_dim dd ON  dd.created_at = ddt.created_at);

如果只需要检查在处创建的列的列是否存在,则不需要在子查询中加入
NOT EXISTS

INSERT INTO date_dim (id, created_at, week_day, month_day, month_num, `year`) 
SELECT DISTINCT ddt.*
FROM date_dim_temp ddt
WHERE NOT EXISTS (SELECT * FROM date_dim dd WHERE dd.created_at = ddt.created_at);
另外,如果在
date\u dim
中创建的
存在
唯一的
约束,则您不需要
不存在。使用插入忽略

INSERT IGNORE INTO date_dim (id, created_at, week_day, month_day, month_num, `year`) 
SELECT DISTINCT ddt.*
FROM date_dim_temp ddt

这也将拒绝违反任何现有约束的任何其他行。

如果您只需要检查在
处创建的列的列是否存在,则不需要在子查询中加入
NOT EXISTS

INSERT INTO date_dim (id, created_at, week_day, month_day, month_num, `year`) 
SELECT DISTINCT ddt.*
FROM date_dim_temp ddt
WHERE NOT EXISTS (SELECT * FROM date_dim dd WHERE dd.created_at = ddt.created_at);
另外,如果在
date\u dim
中创建的
存在
唯一的
约束,则您不需要
不存在。使用插入忽略

INSERT IGNORE INTO date_dim (id, created_at, week_day, month_day, month_num, `year`) 
SELECT DISTINCT ddt.*
FROM date_dim_temp ddt

这还将拒绝违反任何现有约束的任何其他行。

不需要“不存在”中的联接。是否也有必要进行区分

INSERT INTO date_dim  (id, created_at, week_day, month_day, month_num, `year`) 
SELECT DISTINCT t.*
FROM date_dim_temp t
WHERE NOT EXISTS (SELECT 1 FROM date_dim d WHERE  d.created_at = t.created_at);

您不需要在“不存在”中加入。是否也有必要进行区分

INSERT INTO date_dim  (id, created_at, week_day, month_day, month_num, `year`) 
SELECT DISTINCT t.*
FROM date_dim_temp t
WHERE NOT EXISTS (SELECT 1 FROM date_dim d WHERE  d.created_at = t.created_at);