SQL Server Management Studio - 使用文本文件查询

SQL Server Management Studio - Query using text file

假设我有一个包含以下行的文本文件

102
333
534

然后,在我的 SQL table 中,我有几个不同的列:

  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 解析文本文件,以便它查询 table 并提取每个 有一个列(AutoID,在本例中)匹配文本文件中的一行(注意,我只想要我指定的 table 中的行)?

这样我就可以编辑它们或更新仅与文本文件中的 ID 匹配的行。

Management Studio 中显示的行如下所示。

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

--你需要做的是将文本文件导入到你的SQL数据库中的table,然后将其值与你要查询的table进行比较(在我的例子中我称之为 AutoIDTest)。

--使用您的示例数据,我将完成此过程的以下代码放在一起。

--1。我为名为 TextImport 的文本文件的值创建了一个目标 table。我将测试文本文件命名为 E:\TestData.txt。另外,我假设这个文本文件只有一列,autoID。

--2。然后,我使用 BULK INSERT 语句将数据导入目标 table。

--3。最后,我将 TextImport 中的数据与您使用 INNER JOIN 语句从中查找值的 table 进行了比较。

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