加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQl:从文本文件更新表

发布时间:2020-12-12 08:29:57 所属栏目:MsSql教程 来源:网络整理
导读:这就是我要做的事情: 我有一个文本文件,有3列:PID,X,Y. 现在我的数据库中有两个表: 表1包含4列:UID,PID,Y 表2包含多列,所需的列为UID,Y 我需要用相应的X和Y值更新表2. 我想我们可以使用BULK INSERT更新表1,然后使用WHILE循环或其他东西. 但我无法弄明白确
这就是我要做的事情:

我有一个文本文件,有3列:PID,X,Y.

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

>表1包含4列:UID,PID,Y
>表2包含多列,所需的列为UID,Y

我需要用相应的X和Y值更新表2.

我想我们可以使用BULK INSERT更新表1,然后使用WHILE循环或其他东西.

但我无法弄明白确切的事情.

解决方法

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

您可以使用上述方法来解决您的问题.希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读