2015-04-20 45 views
1

比方說,我有一個具有以下行的文本文件SQL Server Management Studio中 - 查詢使用文本文件

102 
333 
534 

然後,在我的SQL表,我有幾個不同的列:

AutoID | Name  | Description 
    --------------------------------------   
    102  | Jackson  | [Description Here] 
    241  | Edward   | [Description Here] 
    333  | Timothy  | [Description Here] 
    437  | Nikky    | [Description Here] 
    534  | Jeremy   | [Description Here] 

有無論如何我可以通過SQL Server Management Studio解析文本文件,以便它將查詢表格並抽出每行,其中有一列(AutoID,在這種情況下)與文本文件中的行匹配請注意,我只想要行fr我會指定一個表格)?

這樣我可以編輯它們或更新只匹配文本文件中的ID的行。

管理工作室中顯示的行看起來像這樣。

 AutoID | NAME  | Description 
    -------------------------------------- 
    102  | Jackson  | [Description Here] 
    333  | Timothy  | [Description Here] 
    534  | Jeremy   | [Description Here] 
+0

將數據加載到一個臨時表和使用,爲您的查詢。 –

+0

@GordonLinoff我將如何實現這一目標?你可以發佈一個示例腳本? –

+0

。 。使用SSMS中的導入嚮導。 –

回答

0

- 什麼,你需要做的就是導入的文本文件到您的SQL數據庫中的表,然後將其值與您要查詢的表(我在我的例子叫做AutoIDTest)。 - 使用您的示例數據,我將以下代碼放在一起,以完成此過程。

- 1。我爲文本文件的值創建了一個名爲TextImport的目標表。我已經調用了測試文本文件E:\ TestData.txt。另外,我假設這個文本文件只有一列,autoID。

--2。然後,我使用BULK INSERT語句將數據導入到目標表中。

- 3。最後,我使用INNER JOIN語句將TextImport中的數據與要查找值的表進行比較。

CREATE TABLE AutoIDTest ---Create test table. Since your first column doesn't have a name, I'm calling it ID. I'm assuming AutoID and ID are both of type int. 
    (
    ID int, 
    AutoID int, 
    Name varchar(25), 
    Description varchar(50) 
    ) 

INSERT INTO AutoIDTest -- Populate test table 
VALUES 
    (1, 102, 'Jackson', 'Description1'), 
    (2, 241, 'Edward', 'Description2'), 
    (3, 333, 'Timothy', 'Description3'), 
    (4, 437, 'Nikky', 'Description4'), 
    (5, 534, 'Jeremy', 'Description5') 


CREATE TABLE TextImport --Create destination table for text file. 
    (
    AutoID varchar(20), 
    ) 

BULK INSERT TextImport --Load Data from text file into TextImport table 
    FROM 'E:\TestData.txt' ---The name and location of my test text file. 
    WITH 
     (
     ROWTERMINATOR ='\n' 
    ); 

SELECT ---Produce Output Data 
    ID, 
    t1.AutoID, 
    Name, 
    Description 
FROM 
    AutoIDTest AS t1 
INNER JOIN 
    TextImport AS t2 
    ON t1.autoID = cast(t2.autoID AS int) --convert varchar to int 

輸出

-- ID   AutoID  Name      Description 
-- --------- ----------- ------------------------- ------------------- 
-- 1   102   Jackson     Description1 
-- 3   333   Timothy     Description3 
-- 5   534   Jeremy     Description5 
相關問題