1. 程式人生 > 其它 >SQL server匯入資料Excel、Access、Csv

SQL server匯入資料Excel、Access、Csv

-----------------------------------------------------#匯入EXCEL儲存過程#--------------------------------------------------------

USE [ShiXiao]
GO
/****** Object: StoredProcedure [dbo].[usp_DaoRuExcel] Script Date: 2021-7-22-星期四 18:31:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[usp_DaoRuExcel]
@Url nvarchar(800),
@Path nvarchar(800)=0,
@Tb nvarchar(800),
@Sheet nvarchar(800),
@InsertSQL nvarchar(1000)=0
AS
BEGIN
SET NOCOUNT ON;
---#開啟服務#---
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure

---#拼接Excel路徑與傳入引數#---
set @Path = '''Microsoft.ACE.OLEDB.12.0'',''Data Source=' + cast(@URL as varchar(800)) + ';Extended Properties=Excel 12.0'''
set @InsertSQL =N'SELECT * into ##'+@Tb+' FROM OpenDataSource('+@Path+')...['+@Sheet+'$]'
exec (@InsertSQL)

---#關閉服務#---
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure


END

-----------------------------------------------------#匯入ACCESS儲存過程#--------------------------------------------------------

USE [ShiXiao]
GO
/****** Object: StoredProcedure [dbo].[usp_DaoRuAccess] Script Date: 2021-7-22-星期四 18:31:03 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[usp_DaoRuAccess]
@Url_A nvarchar(800),
@Path_A nvarchar(800)=0,
@Tb_A nvarchar(800),
@Sheet_A nvarchar(800),
@InsertSQL_A nvarchar(1000)=0,
@ZhuanYun_1 nvarchar(800)=0,
@ZhuanYun_2 nvarchar(800)=0,
@ZhuanYun_3 nvarchar(800)=0
AS
BEGIN
SET NOCOUNT ON;
---#開啟服務#---
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure

---#拼接Access路徑與傳入引數#---
set @Path_A = '''Microsoft.ACE.OLEDB.12.0'',''Data Source=' + cast(@URL_A as varchar(800)) + ';User ID=Admin;Password='''
set @InsertSQL_A =N'SELECT * into ##'+@Tb_A+' FROM OpenDataSource('+@Path_A+')...['+@Sheet_A+']WHERE 始發轉運='+@ZhuanYun_1+' or 始發轉運='+@ZhuanYun_2+' or 始發轉運='+@ZhuanYun_3
exec (@InsertSQL_A)

---#關閉服務#---
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure

END

-----------------------------------------------------#匯入CSV資料#--------------------------------------------------------

bulk insert DaoRuCSV
from 'D:\SQL\1.csv' ----時效群檔案路徑與檔名
with
(
codepage='65001',
DATAFILETYPE='char',
fieldterminator=',',
rowterminator='0x0A',
FIRSTROW=2)

-----------------------------------------------------#匯入ACCESS傳參#--------------------------------------------------------

DROP TABLE ##SFDJCB_A ---先刪除全域性臨時表內容
exec [ShiXiao].[dbo].[usp_DaoRuAccess] ---呼叫儲存過程匯入Excel資料
@Url_A=N'D:\SQL\2021071902.accdb', ---傳入Excel檔案路徑給儲存過程
@Tb_A=N'SFDJCB_A', ---儲存過程中全域性臨時表名稱
@Sheet_A=N'基礎資料',
@ZhuanYun_1=N'''瀋陽''',
@ZhuanYun_2=N'''盤錦''',
@ZhuanYun_3=N'''大連'''

-----------------------------------------------------#匯入EXCEL傳參#--------------------------------------------------------

DROP TABLE ##JJBZD ---先刪除全域性臨時表內容
exec [dbo].[usp_DaoRuExcel] ---呼叫儲存過程匯入Excel資料
@Url=N'd:\sql\0718.xlsx', ---傳入Excel檔案路徑給儲存過程
@Tb =N'JJBZD', ---儲存過程中全域性臨時表名稱
@Sheet=N'明細'