1

そのため、データのロードとロードをデータベースに挿入する巨大なスクリプト ファイルがあります。これがサンプルです。

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');

いいえ、NEWID() タグは 1000 個ではないにしても 100 個ありますが、これらの ID を大量に再利用する必要があります。したがって、すべての NEWID() を実際のランダムな GUID に置き換えたいと考えています。したがって、出力は次のようになります。

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');

私はメモ帳++を使用してこれを書いているので、検索と置換で使用できる正規表現を知っていれば素晴らしいでしょう。または、別の方法を知っている場合。

ありがとう、ベン

4

1 に答える 1

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')
于 2013-10-06T11:21:36.607 に答える