當前位置:首頁 » 編程語言 » sqlserver查詢表結構

sqlserver查詢表結構

發布時間: 2023-05-17 15:58:45

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如何查看錶結構呢有同oracle的desc一樣命令嗎

use Roy --資料庫
go
--2005實現資料庫表欄位屬性統計(2000里的系統表sysproperties描述表不存在,2005里用sys.extended_properties視圖替代)
select
[表名]=c.Name,
[表說明]=isnull(f.[value],''),
[列名]=a.Name,
[列序號]=a.Column_id,
[標識]=case when is_identity=1 then '√' else '' end,
[主鍵]=case when exists(select 1 from sys.objects x join sys.indexes y on x.Type=N'PK' and x.Name=y.Name
join sysindexkeys z on z.ID=a.Object_id and z.indid=y.index_id and z.Colid=a.Column_id)
then '√' else '' end,
[類型]=b.Name,
[位元組數]=case when a.[max_length]=-1 and b.Name!='xml' then 'max/2G'
when b.Name='xml' then '2^31-1位元組/2G'
else rtrim(a.[max_length]) end,
[長度]=case when ColumnProperty(a.object_id,a.Name,'Precision')=-1 then '2^31-1'
else rtrim(ColumnProperty(a.object_id,a.Name,'Precision')) end,
[小數]=isnull(ColumnProperty(a.object_id,a.Name,'Scale'),0),
[是否為空]=case when a.is_nullable=1 then '√' else '' end,
[列說明]=isnull(e.[value],''),
[默認值]=isnull(d.text,'')
from
sys.columns a
left join
sys.types b on a.user_type_id=b.user_type_id
inner join
sys.objects c on a.object_id=c.object_id and c.Type='U'
left join
syscomments d on a.default_object_id=d.ID
left join
sys.extended_properties e on e.major_id=c.object_id and e.minor_id=a.Column_id and e.class=1
left join
sys.extended_properties f on f.major_id=c.object_id and f.minor_id=0 and f.class=1

㈢ 怎樣用SQL語句查詢一個資料庫中的所有表

1、打開Microsoft SQL Server 2012,選中需要查詢所有表的資料庫。

㈣ 怎樣查看SQL Server數據表的數據頁結構

SQLServer2000提供了一個讀取數據頁結構的命令DBCC Page。該命令為非文檔化的命令,具體如下:

DBCC Page ({dbid|dbname},filenum,pagenum[,printopt])
DBCC Page的輸出主要分為5個部分: Page、BUFFER、Page Hearder、Data、OFFSET Table(行的偏移量數組)。
Page指出該表的文件編號及頁碼。
Buffer指出關於給岩槐陵定頁面的緩沖區的信息。
Page Header指出頁面中所有標明碰題欄位的數據。
Data指出每一行的信息。對於每一行,DBCC Page指出行在槽中的位置,以及該行在頁面中的偏移量。頁面數據被分成3部分,左列指出的是所顯示的數據在行中的位元組位置。接著4列包含頁面存儲的實際數據,以16進制的形式顯示。右列包含數據的字元表示(只有字元數據是可讀的)。
Offset Table指出頁面末尾的行偏移量數組的內粗戚容。注意這里並不是行物理存儲的順序,而是以槽的編號的順序來顯示的,不過這里可以通過槽的編號看出它的物理存儲順序,比如槽的編號最小的為物理存儲的第一行,依此類推。
http://www.cnblogs.com/yumenjianke/archive/2009/12/04/1616903.html

㈤ 怎樣查看sqlserver資料庫的表

1、首先我們打開資料庫進入資料庫。

㈥ sqlserver 如何快速查看錶結構

查詢分析器 按F8 顯示對象瀏覽器,選擇表對象,右鍵生成Create 語句即可清楚結構。

㈦ sql server 中用什麼命令返回表的結構

SQLServer沒有像Oracle SqlPlus那樣封裝了很多常用語句,所以在SQLServer中返回表結構沒有簡單的命令。
SQLServer資料庫的 master 中存放了許多系統表,比如:
SYSCOLUMNS 存了所有庫中所有表、視圖中的列、存儲過程的詳細信息
SYSOBJECTS 記錄所有資料庫對雹埋象的相關信息
SYSTYPES 記錄所有系統數據類型和游高客戶自定義數源磨螞據類型
舉個例子,查詢表的列名,數據類型和長度:
select t2.name,t3.name,t2.length from SYSOBJECTS t1,SYSCOLUMNS t2,SYSTYPES t3
where t1.id=t2.id and t2.xusertype=t3.xusertype and t1.name='表名'
其他的結構可以從SYSCOLUMNS中找。

㈧ 怎麼用sql語句查詢表的結構

下邊是SQLSERVER查詢數據字典的語法,如果相查某一個表,只需要加where條件一個表名的連接即可。
SELECT TOP 100 PERCENT --a.id,
CASE WHEN a.colorder = 1 THEN d.name ELSE '' END AS 表名,
CASE WHEN a.colorder = 1 THEN isnull(f.value, '') ELSE '' END AS 表說明,
a.colorder AS 欄位序號, a.name AS 欄位名, CASE WHEN COLUMNPROPERTY(a.id,
a.name, 'IsIdentity') = 1 THEN '√' ELSE '' END AS 標識,
CASE WHEN EXISTS
(SELECT 1
FROM dbo.sysindexes si INNER JOIN
dbo.sysindexkeys sik ON si.id = sik.id AND si.indid = sik.indid INNER JOIN
dbo.syscolumns sc ON sc.id = sik.id AND sc.colid = sik.colid INNER JOIN
dbo.sysobjects so ON so.name = si.name AND so.xtype = 'PK'
WHERE sc.id = a.id AND sc.colid = a.colid) THEN '√' ELSE '' END AS 主鍵,
b.name AS 類型, a.length AS 長度, COLUMNPROPERTY(a.id, a.name, 'PRECISION')
AS 精度, ISNULL(COLUMNPROPERTY(a.id, a.name, '則猛敗Scale'), 0) AS 小數位數,
CASE WHEN a.isnullable = 1 THEN '√' ELSE '' END AS 允許空, ISNULL(e.text, '')
AS 默認值, ISNULL(g.[value], '') AS 欄位說明, d.crdate AS 創建時間,
CASE WHEN a.colorder = 1 THEN d.refdate ELSE NULL END AS 更改時間
FROM dbo.syscolumns a LEFT OUTER JOIN
dbo.systypes b ON a.xtype = b.xusertype INNER JOIN
dbo.sysobjects d ON a.id = d.id AND d.xtype = 'U' AND
d.status >= 0 LEFT OUTER JOIN
dbo.syscomments e ON a.cdefault = e.id LEFT OUTER JOIN
dbo.sysproperties g ON a.id = g.id AND a.colid = g.smallid AND
g.name = '孫顫MS_Description' LEFT OUTER JOIN
dbo.sysproperties f ON d.id = f.
id AND f.smallid = 0 AND
f.name = 'MS_Description'
where d.name = '表名'---查詢固定表,如果所有,知悄去掉where條件
ORDER BY d.name, a.colorder

ORACLE資料庫使用USER_TAB_COLUMNS表
select TABLE_NAME,
COLUMN_NAME,
DATA_TYPE,
DATA_LENGTH
from USER_TAB_COLUMNS

㈨ sql server 2008 怎麼查看各表的關系圖

1、打開sqlservermanagementstudio

(9)sqlserver查詢表結構擴展閱讀

SQL Server 是Microsoft 公司推出的鎮兄頌關系型資料庫管理系統。具有使用方便可伸縮性好與相關軟體集成程度高等優點,可跨越從運行Microsoft Windows 98 的膝上型電腦到運行Microsoft Windows 2012 的大型多處理器的伺服器等多種平台使用。

Microsoft SQL Server 是一個全面的資料庫平台,使用集成的商業智能 (BI)工具提供了企業級的塵乎數據管理。Microsoft SQL Server資料庫引擎為關系型數據和結構化數據提供了更安全可靠的存儲功能,使您可以構建和管理用於業務的高可用和高性能的數據應用程序。


熱點內容
linux64位內存 發布:2025-07-16 01:02:36 瀏覽:960
壓縮衣尺碼表 發布:2025-07-16 00:47:33 瀏覽:640
安卓恢復了出廠怎麼找回照片 發布:2025-07-16 00:43:56 瀏覽:933
為什麼說伺服器已停止響應 發布:2025-07-16 00:29:36 瀏覽:391
python判斷字元串是否為空 發布:2025-07-16 00:21:47 瀏覽:210
安卓轉蘋果用什麼軟體 發布:2025-07-16 00:21:45 瀏覽:628
安卓官服如何登ios 發布:2025-07-16 00:21:32 瀏覽:624
天龍搶店腳本 發布:2025-07-16 00:14:47 瀏覽:958
華為榮耀存儲卡 發布:2025-07-16 00:10:40 瀏覽:659
mysql創建utf8資料庫 發布:2025-07-16 00:04:08 瀏覽:105