使用现有的数据库,使用已实现的外键,我希望使用SQL Server 2017的SQL Graph新功能。首先,我想将一些现有的表转换为Node或Edge表。执行这种迁移的最简单方法是什么?
发布于 2019-09-05 23:43:30
只需创建节点和边缘表作为附加的独立表即可。给他们一个FK到你现有的表。这样,图形会引用您的表,但不会修改现有的表。
发布于 2019-08-21 17:55:50
https://argonsys.com/microsoft-cloud/library/graph-data-processing-with-sql-server-2017/
是否可以将现有表更改为节点表或边缘表?
不是的。在第一个版本中,不支持ALTER TABLE将现有关系表转换为节点表或边缘表。用户可以创建节点表并使用INSERT INTO…选择从以将数据填充到节点表中。要从现有表填充边缘表,必须从节点表获得适当的$from_id和$to_id值。
1)节点表:
您必须禁用外键。How can foreign key constraints be temporarily disabled using T-SQL?,然后制作表的副本,删除它,将其重新创建为节点,插入数据,最后将外键切换回。
-- disable all constraints
EXEC sp_MSforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
SELECT *
INTO COPY_OF_REF_LOTS
FROM REF_LOTS;
DROP TABLE REF_LOTS;
CREATE TABLE REF_LOTS (ID INT PRIMARY KEY IDENTITY(1,1), myvalue varchar(100)) AS NODE;
INSERT INTO REF_LOTS
SELECT * FROM COPY_OF_REF_LOTS;
DROP TABLE COPY_OF_REF_LOTS;
-- enable all constraints
exec sp_MSforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
2)边缘表:
按照https://www.sqlshack.com/implement-graph-database-sql-server-2017/中的说明,通过从节点表中检索$node_id来创建新的边缘表并填充它们
https://stackoverflow.com/questions/57588504
复制相似问题