2013-03-24 69 views
16

我在做什麼:讀取日誌並將必要的數據插入到3個不同的表中,以獲取彼此的信息。從選擇查詢中插入Microsoft SQL Server

LOG_ITEM201303在gamelogs db上找到。
Mail_Item_TableMail_List_TableMail_Message_Table在遊戲數據庫中找到。

郵件表通過索引連接。

CHAR_KEYNAME,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 

(此查詢顯示上面的第3個示例數據的示例泰德...
而不是使這個查詢每個條目是有這樣的方式來完成的更快)

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這個嗎?

+0

select..into子句的幫助嗎? http://msdn.microsoft.com/en-us/library/ms190750(v=sql.90).aspx – Tim

+0

我正在調查它。謝謝。看起來像我不能使用'SELECT INTO'。 – madziikoy

+0

基本上你想要做的是從LOGITEM201303 DB讀取數據,並將數據插入到你提到的3個表中,對吧?並且每行(來自LOGITEM DB)中的數據將顯示在這三個表中? – GayanSanjeewa

回答

33

您可以使用插入

INSERT INTO dbo.Destination (Col1, Col2, Col3) 
SELECT Col1, Col2, Col3 
FROM dbo.Source 

以下語法如果您有相同的列或一個結果集,有相同的列的目標表,你不必指定列插。

INSERT INTO dbo.Destination 
SELECT * 
FROM dbo.Source 

這兩個都是基於已經創建的目標表上的。這些是不是相同SELECT * INTO dbo.Destination FROM dbo.Source