所以我有一个巨大的脚本文件,可以将数据加载和加载到我的数据库中,这是一个示例。
INSERT INTO [dbo].[SysCountry] ([country_id], [country_name]) VALUES (NEWID(), 'Argentina');
INSERT INTO [dbo].[SysCountry] ([country_id], [country_name]) VALUES (NEWID(), 'Armenia');
INSERT INTO [dbo].[SysCountry] ([country_id], [country_name]) VALUES (NEWID(), 'Aruba');
如果不是1000个NEWID()标签,我不会有100个,但是我需要重新使用这些ID的很多。所以我想用实际的随机GUID替换所有NEWID()。所以输出看起来像。
INSERT INTO [dbo].[SysCountry] ([country_id], [country_name]) VALUES ('42FF2BE3-D2A7-4FD1-AAA9-6AA0FDBDDD28', 'Argentina');
INSERT INTO [dbo].[SysCountry] ([country_id], [country_name]) VALUES ('59FF040C-5102-41D8-9F8B-782B42983F0E', 'Armenia');
INSERT INTO [dbo].[SysCountry] ([country_id], [country_name]) VALUES ('7589B5F1-21C0-4EF8-897E-B8C7FF8EDFA9', 'Aruba');
我正在使用Notepad ++来编写这个,所以如果你知道我可以在查找和替换中使用的正则表达式会很棒。或者如果你知道另一种方式。
谢谢, 本
答案 0 :(得分:3)
NEWID()
实际上是一个随机的GUID。
如果您想重复使用它,例如填充子表时,您可以从父表中再次获取它,例如假设您填充一个国家/地区,然后需要填充州表:
INSERT INTO [dbo].[SysCountry] ([country_id], [country_name]) VALUES (NEWID(), 'Australia');
INSERT INTO [dbo].[SysState] ([state_id], [country_id], [state_name])
SELECT
NEWID(),
(SELECT [country_id] FROM [dbo].[SysCountry] WHERE [country_name] = 'Australia'),
'Victoria'
您也可以使用局部变量来执行相同的操作 - 脚本看起来会更好:
INSERT INTO [dbo].[SysCountry] ([country_id], [country_name]) VALUES (NEWID(), 'Australia');
DECLARE @id uniqueidentifier
SELECT @id = [country_id] FROM [dbo].[SysCountry] WHERE [country_name] = 'Australia'
INSERT INTO [dbo].[SysState] ([state_id], [country_id], [state_name])
VALUES (NEWID(), @id, 'Victoria')
INSERT INTO [dbo].[SysState] ([state_id], [country_id], [state_name])
VALUES (NEWID(), @id, 'New South Wales')