一尘不染

SQl:从文本文件更新表

sql

这是我要做的:

我有一个包含3列的文本文件:PID, X, Y

现在我的数据库中有两个表:

  • Table 1 包含4列: UID, PID, X, Y
  • Table 2 包含多个列,必填 UID, X, Y

我需要Table 2使用相应的X和Y值进行更新。

我认为我们可以使用BULK INSERTupdate table 1,然后进行WHILE循环或其他操作。

但是我不知道确切的事情。


阅读 153

收藏
2021-05-16

共1个答案

一尘不染

CREATE PROCEDURE [dbo].[BulkInsert]            
(            
@PID int  ,          
@x int,          
@y int,

)            
AS            
BEGIN            
SET NOCOUNT ON;

declare @query varchar(max)


CREATE TABLE #TEMP            
(            
[PID] [int] NOT NULL ,          
[x] int NOT NULL,          
[y] int NOT NULL,

)


SET @query = 'BULK INSERT #TEMP FROM ''' + PathOfYourTextFile + ''' WITH ( FIELDTERMINATOR = '','',ROWTERMINATOR = ''\n'')'            
--print @query            
--return            
execute(@query)


BEGIN TRAN;

MERGE TableName AS Target            
USING (SELECT * FROM #TEMP) AS Source            
ON (Target.YourTableId = Source.YourTextFileFieldId)
-- In the above line we are checking if the particular row exists in the table(Table1)  then update the Table1 if not then insert the new row in Table-1.

WHEN MATCHED THEN            
UPDATE SET             
Target.PID= Source.PID, Target.x= Source.x, Target.y= Source.y           
WHEN NOT MATCHED BY TARGET THEN

-- Insert statement

您可以使用上面的方法来解决您的问题。希望这可以帮助。:)

2021-05-16