當前位置:首頁 » 編程語言 » sqlserver導入語句
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sqlserver導入語句

發布時間: 2022-05-11 16:23:32

Ⅰ 怎麼在sqlserver導入資料庫

方法/步驟一:代碼方法

1
打開SQL Server,可以選擇Windows方式連接。

2
打開資料庫,右鍵某一個資料庫,選擇「新建查詢(Q)」。

3
再代碼界面輸入如下代碼,點擊F5鍵或者點擊運行按鈕即可。
代碼如下:
EXEC sp_attach_db @dbname = '你的資料庫名',
@filename1 = 'mdf文件路徑(包綴名)',
@filename2 = 'Ldf文件路徑(包綴名)'

4
可以看到導入成功。如果導入不成功,則需要修改mdf,ldf文件的許可權。右鍵-屬性-安全-編輯,完全控制選擇允許。

5
這樣導入問題即可迎刃而解,當然,有時會遇到版本不兼容問題,低版本不能導入高版本SQL的mdf和ldf文件。
END
方法/步驟:直接附加mdf,ldf文件

在「資料庫」處右鍵選擇「附加」,打開附加界面。

在「附加資料庫」界面,添加mdf文件即可,點擊「確定」。

如果導入出現錯誤,則可以用第一種方法,屢試不爽。

Ⅱ sqlserver怎麼導入mdf

如何將mdf, ldf文件導入到sql server 2008資料庫當中,下面提供兩種辦法:
第一種是右擊資料庫,然後點擊附加。出現下面的界面。然後選擇添加,添加上你要添加的mdf文件即可。

第二種方法是:新建查詢,然後輸入下列語句,
EXEC sp_attach_db @dbname = 'yourdatabasename',
@filename1 = 'x:\路徑\MSSQL\Data\pubs.mdf',
@filename2 = 'x:\路徑\MSSQL\Data.Ldf

但是可能會出現這種錯誤:
Sqlserver2008附加資料庫時出錯提示操作系統錯誤5(拒絕訪問)錯誤5120的解決辦法
Sql Server2008附加資料庫文件時彈出錯誤信息:如下圖:

,一時無解,遂求助於網路谷歌,經過各種試驗,特將解決辦法整理於此,希望能幫到大家,同時如果有好的意見大家多多交流啊!
方案一:切換登錄方式
出現這種情況是由於用「混合驗證方式」(SQL Server身份驗證)登錄資料庫造成的,只要將登錄方式改為 「windows身份驗證方式」
登錄即可解決該問題,附加成功後再換用「混合驗證模式」登陸就沒問題了。
此方法經本人測試成功。
方案二:修改服務
選擇 所有程序-SQL Server 2005-配置工具-選擇"SQL Server Configuration Manager"或者「SQL Server 配置管理器」,
打開「SQL Server Configuration Manager」配置界面,在左側選擇"SQL Server 2008 服務",在右側右擊打開「SQL Server (SQLEXPRESS)」 的屬性,在內置賬戶處將網路服務--」Network Service」改為本地系統--"Local System",
點擊「重新啟動」後再附加資料庫就OK了。
此方法經本人測試成功。

附加資料庫成功後如果擔心改變設置後影響以後使用可以將內置賬戶處的「Local System」再改回
「Network Service」,資料庫仍可打開。

主要配置過程如下圖:
1.打開「SQL Server Configuration Manager」配置界面:
2.選擇Sql Server(MSSQLSERVER),選項,並右擊:

3.選擇「Local System」:

4.選擇「重新啟動」:

5.配置成功:
這樣配置後附加資料庫就不會出錯了。

出現的問題:
附加資料庫後發現資料庫屬性為只讀的解決辦法
附加後發現資料庫屬性為「只讀」解決方法為:
打開「Sql Server2008」,在只讀的資料庫上右擊選擇屬性,選中屬性窗口左側"選擇頁"下面的"選項",在窗口右邊將「資料庫為只讀」項
改為「False」,點擊確定即可。
原因:之所以附加上的資料庫為「只讀」,是因為啟動SQL Server 的默認的啟動賬號「網路服務」對所附加(Attach)的資料庫文件的
許可權不夠造成的

Ⅲ 如何利用SQL查詢語句從SQLSERVER資料庫中導入導出EXCEL表格

平常從SQLSERVER中進行導入導出時,我們利用SQLSERVER中自帶的DTS轉換工具即可,很方便。但有些特殊的用法需要用語句進行導入導出,工作中碰到這種情況,查了些資料,下面詳細介紹:
一、從excel表導入到SQLSERVER
use test
Go
select * into test_table from
OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=yes;database=c:\11.xls;','select * from [結果$]')

--1.通過Sql Server查詢分析器查詢D:\abc.xls 裡面表 sheet1
SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="D:\abc.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]

--2.如果表a存在,並且表a的結構與上一步的查詢的結構一樣

Ⅳ sqlserver怎麼導入資料庫

sqlserver的資料庫導入MSSQLServer資料庫方法:

現有資料庫是mdf格式還是bak格式。
1、如果是mdf格式,採用附加資料庫方式。
2、如果是bak格式,則要選擇還原資料庫方式。

具體附加資料庫方法:

1、企業管理器->資料庫-->所有任務-->附加資料庫-->選擇你的mdf文件,然後進行附加操作即可。

還原資料庫方法:

1.右擊SQL Server 2000實例下的「資料庫」文件夾。就是master等資料庫上一級的那個圖標。選擇「所有任務」,「還原資料庫」。
2.在「還原為資料庫」中填上你希望恢復的資料庫名字。這個名字應該與你的源碼中使用的資料庫名字一致。
3.在彈出的對話框中,選「從設備」。
4.點擊「選擇設備」。
5.點擊「添加」。
6.點擊「文件名」文本框右側的「…」按鈕,選中你的「.BAK」文件,並點擊確定回到「選擇還原設備」對話框。
7.點擊確定回到「還原資料庫」對話框。
8.點擊「選項」選項卡。
9.將所有「移至物理文件名」下面的路徑,改為你想還原後的將資料庫文件保存到的路徑。如果你不希望改變,可以直接點擊確定。這時便恢復成功了。

Ⅳ sqlserver將一張表的數據全部導入到另一張表應該怎麼寫

1 兩張表多存在實體,兩表的欄位相同,欄位的順序相同的話。
insert into 表B select * from 表A
2 兩張表多存在實體,兩表的欄位相同,欄位的順序不相同的話。
表B欄位
insert into 表B ( F1,F2,F3) select F1,F2,F3 from 表A
總之要對應使用

Ⅵ SQLSERVER資料庫中批量導入數據的幾種方法

我們通過SQL腳本來插入數據,常見如下四種方式。

方式一:一條一條插入,性能最差,不建議使用。

INSERT INTO Proct(Id,Name,Price) VALUES(newid(),'牛欄1段',160);INSERT INTO Proct(Id,Name,Price) VALUES(newid(),'牛欄2段',260);
......

方式二:insert bulk

語法如下:

方式四:拼接SQL

INSERT INTO Proct(Id,Name,Price) VALUES(newid(),'牛欄1段',160)
,(newid(),'牛欄2段',260)
......

Ⅶ sqlserver把遠程資料庫的數據導入到本地資料庫的sql語句怎麼寫

你的本地要建立和遠程的連接,比如遠程資料庫叫DB1
在本地查詢分析器直接寫就可以
USER_COPY不需要創建,直接用下邊的語法創建加復制數據
SELECT
*
INTO
USER_COPY
FROM
DB1..USER

Ⅷ sqlserver 怎麼導入sql文件

sqlserver 導入sql文件步驟如下:

1、選擇某一個資料庫,右鍵依次選擇:任務——生成腳本;

Ⅸ sqlserver 用命令如何導入導出表結構和表數據

平常從SQLSERVER中進行導入導出時,我們利用SQLSERVER中自帶的DTS轉換工具即可,很方便。但有些特殊的用法需要用語句進行導入導出,工作中碰到這種情況,查了些資料,下面詳細介紹:
一、從excel表導入到SQLSERVER use test go select * into test_table from OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=yes;database=c:\11.xls;','select * from [結果$]') --1.通過Sql Server查詢分析器查詢D:\abc.xls 裡面表 sheet1 SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="D:\abc.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$] --2.如果表a存在,並且表a的結構與上一步的查詢的結構一樣 可以使用 insert into a SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="D:\abc.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$] --3.如果表a不存在,使用into a SELECT * into a FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="D:\abc.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$] 說明:test_table為SQLSERVER資料庫中的表,11.xls是EXCEL表,[結果$]是EXCEL表中的工作表,注意寫法是工作表名加上$符號。 2從SQLSERVER資料庫中導出到EXCEL(一般用語句導庫是在應用程序中,利用各種語言實現,如果不做開發項目,用DTS就很好了,在 SQLSERVER查詢器中利用單條SQL語句實現導入導出不方便,類型轉換是個問題,不好解決) 第一種,無法導入欄位名:(excel表不存在,新建) EXEC master..xp_cmdshell 'bcp zhou.dbo.資料庫表名 out "c:\test.xls" /c /S "伺服器名" /U "用戶名" -P "密碼" ' 第二種,excel文件已存在,要手工把表欄位名填到excel文件中去,再執行下面: insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'Excel 8.0;HDR=YES;DATABASE=c:\文件名.xls',sheet1$) select * from 表名 第三種,想實現全自動轉欄位名和記錄,一條語句實現不了,要用到過程,當然如果要做一個自動轉換程序,用VB或者VC語言也可實現。 把下面的過程全拷入SQLSERVER查詢分析器,執行,生成一個過程,過程名為:p_exporttb,然後按應用例子執行過程就OK了,自 動導表 /*******************************/ if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_exporttb]') and OBJECTPROPERTY(id, N'IsProcere') = 1) drop procere [dbo].[p_exporttb] GO create proc p_exporttb @sqlstr varchar(8000), --查詢語句,如果查詢語句中使用了order by ,請加上top 100 percent @path nvarchar(1000), --文件存放目錄 @fname nvarchar(250), --文件名 @sheetname varchar(250)='' --要創建的工作表名,默認為文件名 as declare @err int,@src nvarchar(255),@desc nvarchar(255),@out int declare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000) --參數檢測 if isnull(@fname,'')='' set @fname='temp.xls' if isnull(@sheetname,'')='' set @sheetname=replace(@fname,'.','#') --檢查文件是否已經存在 if right(@path,1)<>'\' set @path=@path+'\' create table #tb(a bit,b bit,c bit) set @sql=@path+@fname insert into #tb exec master..xp_fileexist @sql --資料庫創建語句 set @sql=@path+@fname if exists(select 1 from #tb where a=1) set @constr='DRIVER={Microsoft Excel Driver (*.xls)};DSN='''';READONLY=FALSE' +';CREATE_DB="'+@sql+'";DBQ='+@sql else set @constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 8.0;HDR=YES' +';DATABASE='+@sql+'"' --連接資料庫 exec @err=sp_oacreate 'adodb.connection',@obj out if @err<>0 goto lberr exec @err=sp_oamethod @obj,'open',null,@constr if @err<>0 goto lberr --創建表的SQL declare @tbname sysname set @tbname='##tmp_'+convert(varchar(38),newid()) set @sql='select * into ['+@tbname+'] from('+@sqlstr+') a' exec(@sql) select @sql='',@fdlist='' select @fdlist=@fdlist+',['+a.name+']' ,@sql=@sql+',['+a.name+'] ' +case when b.name like '%char' then case when a.length>255 then 'memo' else 'text('+cast(a.length as varchar)+')' end when b.name like '%int' or b.name='bit' then 'int' when b.name like '%datetime' then 'datetime' when b.name like '%money' then 'money' when b.name like '%text' then 'memo' else b.name end FROM tempdb..syscolumns a left join tempdb..systypes b on a.xtype=b.xusertype where b.name not in('image','uniqueidentifier','sql_variant','varbinary','binary','timestamp') and a.id=(select id from tempdb..sysobjects where name=@tbname) if @@rowcount=0 return select @sql='create table ['+@sheetname +']('+substring(@sql,2,8000)+')' ,@fdlist=substring(@fdlist,2,8000) exec @err=sp_oamethod @obj,'execute',@out out,@sql if @err<>0 goto lberr exec @err=sp_oadestroy @obj --導入數據 set @sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=YES ;DATABASE='+@path+@fname+''',['+@sheetname+'$])' exec('insert into '+@sql+'('+@fdlist+') select '+@fdlist+' from ['+@tbname+']') set @sql='drop table ['+@tbname+']' exec(@sql) return lberr: exec sp_oageterrorinfo 0,@src out,@desc out lbexit: select cast(@err as varbinary(4)) as 錯誤號 ,@src as 錯誤源,@desc as 錯誤描述 select @sql,@constr,@fdlist go /*******************應用例子***************************/ p_exporttb @sqlstr='select * from 貸款大戶表' ,@path='c:\',@fname='aa.xls',@sheetname='貸款大戶表'

Ⅹ 如何實現SQLServer導入數據

如果需要向SQL Server批量導入數據,根據導入的選項和表中的索引設置,數據導入的時間可能會在不同情況下相差甚遠。如何能夠把批量導入的過程盡量少花時間呢?在這里我們將會介紹幾種不同的批量導入數據的方法、各種方法相應的實例及其所需的時間長短。


在我們的測試中我們採取了六種不同的數據導入方法:


1、表含有一個聚集索引(clustered index)和兩個非聚集索引(non-clustered index)


2、表只含有一個聚集索引


3、表不含有任何索引


4、表不含有任何索引並且有TABLOCK指示


5、表只含有一個聚集索引並且有TABLOCK指示


6、表含有一個聚集索引一個聚集索引並且有TABLOCK指示


另外,測試所用資料庫在測試前設置為批日誌恢復模式。


這些測試中,每次迭代後資料庫和日誌都會清理日誌文件,而且實施每一個步驟之前都將表刪除,然後重新創建新表。


測試一


第一次運行是使用一個含有121317行的數據集和一個空表。每次運行之前都會重新創建符合測試的表。


如下圖結果所示,我們可以看出根據你用來導入數據的不同程序,運行時間有所不同。

總結

我們可以從以上測試的結果看出,各種不同的條件會影響數據導入所用的時間。因此,如果想要更快地導入數據,可以導入不含任何索引的表,在導入完成之後再建立索引。不過我們的測試中沒有檢測在導入完成後建立索引所需要的時間。

另外,還要注意確保你的數據和日誌文件有足夠的空間來完成這個導入過程而不會導致文件自動增長。文件自動增長會極大地影響總導入的速度。