我们说我有一个包含以下行的文本文件
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
,在这种情况下)匹配文本文件中的一行(注意,我只想要我指定的表中的行)?
这样我就可以编辑它们或更新只与文本文件中的ID匹配的行。
管理工作室中显示的行将如下所示。
AutoID | NAME | Description
--------------------------------------
102 | Jackson | [Description Here]
333 | Timothy | [Description Here]
534 | Jeremy | [Description Here]
答案 0 :(得分:0)
- 您需要做的是将文本文件导入SQL数据库中的表,然后将其值与您要查询的表(我在我的示例中称为AutoIDTest)进行比较。
- 使用您的示例数据,我将以下代码放在一起,以完成此过程。
- 1。我为文本文件的值创建了一个名为TextImport的目标表。我调用了测试文本文件E:\ TestData.txt。此外,我假设此文本文件只有一列autoID。
- 2。然后,我使用BULK INSERT语句将数据导入目标表。
- 3。最后,我将TextImport中的数据与使用INNER JOIN语句从中寻找值的表进行了比较。
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