Sqlserver在現有數據庫中插入數據


需求:1.客戶提供的excel表和數據庫中的表結構總是有一些差距,id的生成,各種字段的關聯等等

        2.

 如何在Excel中生成Guid。

1.在Excel的宏中執行以下代碼:

Private Declare PtrSafe Function CoCreateGuid Lib "ole32" (id As Any) As Long

    Private Function CreateGUID() As String
          
        Dim id(0 To 15) As Byte
          
        Dim Cnt As Long, GUID As String
          
        If CoCreateGuid(id(0)) = 0 Then
              
            For Cnt = 0 To 15
                CreateGUID = CreateGUID + IIf(id(Cnt) < 16, "0", "") + Hex$(id(Cnt))
            Next Cnt
              
            CreateGUID = Left$(CreateGUID, 8) + Mid$(CreateGUID, 9, 4) + Mid$(CreateGUID, 13, 4) + Mid$(CreateGUID, 17, 4) + Right$(CreateGUID, 12)
          
        Else
              
            MsgBox "Error while creating GUID!"
              
        End If
          
    End Function

 2.寫一些Excel函數去找對應的關系。

=IF(ISNA(VLOOKUP($O3,域字典!A:B,2,FALSE)),"NULL",VLOOKUP($O3,域字典!A:B,2,FALSE))

 3.把excel中的數據拷貝到數據庫中。

思路:1.根據一些特定列判斷數據庫中的列是否有重復的

select ''''+min(id)+''',' from 表名
	where 列名 in 
	(
		select  列名 from
		(
			select 列名  from 表名
			where 列名 in 
			(
				select 列名 from 表名
				group by 列名
				having count(*)>1
			) 
		)as b group by 列名,列名
		having count(*)>1
	) group by 列名,列名

 2.去除重復的

delete from 表名 
where id in (

)

3.查找原來的表和臨時表

select p.* from 原表  p join 
 臨時表  pn on 條件

 

 4.修改數據執行update語句(數據不一樣時才修改)

 

5.執行添加操作

insert into 原表
select *--,'' 
from 臨時表
where id not in 
(
select pn.id from 原表 p join 
臨時表 pn on 條件
)

 

附件一.復制表結構

select * into  [dbo].要復制的表  from [dbo].原有的表

 

附件二.刪除數據結構 (盡量不要用)

truncate table 表名


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM