我想要做的是:读取日志并将必要的数据插入3个不同的表中,以获取彼此的信息。
在gamelogs db上找到LOG_ITEM201303。
Mail_Item_Table,Mail_List_Table,Mail_Message_Table位于游戏数据库中。
邮件表通过索引连接。
CHAR_KEY,NAME,ITEMNUM是我需要用于查询的值。
SELECT CHAR_KEY,NAME,ITEMNUM FROM LOG_ITEM201303 where ( ITEMNUM = 14317 OR ITEMNUM = 14318 OR ITEMNUM = 15478 OR ITEMNUM = 15479 OR ITEMNUM = 14301 OR ITEMNUM = 14302 OR ITEMNUM = 15476 OR ITEMNUM = 15477 OR ITEMNUM = 15018 OR ITEMNUM = 15019 OR ITEMNUM = 15020 OR ITEMNUM = 15021 OR ITEMNUM = 15022 OR ITEMNUM = 15023 OR ITEMNUM = 15024 OR ITEMNUM = 15025 OR ITEMNUM = 14437 OR ITEMNUM = 14438 OR ITEMNUM = 15656 OR ITEMNUM = 15657 OR ITEMNUM = 15658 OR ITEMNUM = 15659 OR ITEMNUM = 15660 OR ITEMNUM = 15661 OR ITEMNUM = 15662 OR ITEMNUM = 15663 ) AND (KIND = 133) AND (Convert(varchar,OCCUR_TIME,111) < '2013/03/22')
上述日志查询的结果示例(总实际结果为600):
CHAR_KEY NAME ITEMNUM -----------+----------------+----------- 28257 | clarkailey | 14438 894367 | Wolf | 15023 2869858 | HOPEINME | 14437
CHAR_KEY NAME ITEMNUM -----------+----------------+----------- 2869858 | HOPEINME | 14437
(此查询显示了上述第三个示例数据的插入示例…
而不是为每个条目提供此查询是否有一种方法可以更快地完成?)
INSERT INTO Mail_Item_Table (ItemNumber,ItemInfo,ReceiveDate) VALUES (14437,--this is the ITEMNUM (SELECT CONVERT(BINARY(16),REVERSE(CONVERT(BINARY(16),14437)))),NULL) INSERT INTO Mail_Message_Table (Message) VALUES ('Automated Message from the ADMIN.') INSERT INTO Mail_List_Table (ReceiverCharKey,MailListIndex,MailItemIndex,MailMessageIndex,Sender,Receiver,SendDate) VALUES (2869858,--this is the CHAR_KEY (SELECT TOP 1 MailListIndex+1 as last_entry FROM Mail_List_Table WHERE sender = 'SENDER' ORDER BY MailListIndex DESC),(SELECT TOP 1 MailItemIndex AS last_entry FROM Mail_Item_Table ORDER BY MailItemIndex DESC),(SELECT TOP 1 MailMessageIndex AS last_entry FROM Mail_Message_Table ORDER BY MailMessageIndex DESC),'SENDER','HOPEINME',--this is the NAME getdate())
我的问题:
如何自动化所有这些,查询将读取所有日志并逐行插入数据。
非常感谢你。
我可以使用@variables吗?
解决方法
您可以使用以下语法插入
INSERT INTO dbo.Destination (Col1,Col2,Col3) SELECT Col1,Col3 FROM dbo.Source
如果您具有与目标相同的列或结果集的表,则不必在INSERT中指定列。
INSERT INTO dbo.Destination SELECT * FROM dbo.Source
这两个都基于已创建的目标表。这些与SELECT * INTO dbo.Destination FROM dbo.Source不同