- ================================================ ======
-
リストの
SQL Serverの
すべてのテーブル、フィールド名、主キー、タイプ、長さ、スケール、およびその他の情報
-
クエリアナライザで実行することができ
、
あなたがテーブルを生成することができ、への輸出
EXCEL
で
- ================================================ ======
SELECT
(= 1 a.colorder次いで他にd.nameケース'末端)
表名、
a.colorderの
フィールド番号、
a.name
フィールド名、
(ケース場合COLUMNPROPERTY(a.id、a.name、 'IsIdentity')= 1、次いで'
√'else'末端)标识、
(ケース際(SELECT COUNT(*)
sysobjects FROM
WHERE(名前に
(SELECT名前
sysindexesのFROM
WHERE(ID = a.id)AND(indidがで
(indidがSELECT
sysindexkeys FROM
WHERE(ID = a.id)AND(たcolidで
(SELECTたcolid
SYSCOLUMNS FROM
WHERE(ID = a.id)AND(名= a.name)))))))AND
(XTYPE = 'PK'))> 0、次いで'
√'そう'末端)主键、
b.nameの
タイプ、
a.lengthは
、バイト数を占めています
COLUMNPROPERTY(a.id、a.name、 'PRECISION')
长度、
ISNULL(COLUMNPROPERTY(a.id、a.name、
'スケール')、0)として小数点以下の桁、
(ケース1 = a.isnullable次いで'
√'else'末端)允许空、
ISNULL(e.text、 '')
のデフォルト値は、
ISNULL(G。[値]、
AS '') フィールド説明
SYSCOLUMNSから左にはsystypesにbを参加します
a.xtype = b.xusertypeに
インナーは、Dのsysobjectsに参加します
上のa.id = d.idとd.xtype = 'U' とd.name <> 'dtproperties'
左syscommentsのEに参加
a.cdefault = e.idに
左syspropertiesグラムに参加
a.id = g.id AND a.colid = g.smallidに
a.id、a.colorderによって順序
-------------------------------------------------- -----------------------------------------------
リスト
SQL Serverの
すべてのテーブル、フィールド定義、種類、長さ、値など
そしてへのエクスポート
エクセル
で
- ================================================ ======
- すべてのユーザー表の定義と一つのサンプル値をエクスポートします。
- 1月-13-2003、Dr.Zhang
- ================================================ ======
クエリアナライザで実行します。
SETは、OFF ANSI_NULLS
GO
NOCOUNT ON SET
GO
SET LANGUAGEの「簡体字中国語」
行きます
@tbl NVARCHAR(200)を宣言、FLDデータ型はnvarchar(200)@、SQLのデータ型はnvarchar(4000)@、@ MAXLENのint、@サンプルのデータ型はnvarchar(40)
#tをINTO SELECT d.nameのテーブル名、フィールド名a.name、b.name型名、a.length長、a.isnullable IS_NULL
SYSCOLUMNS、systypesにBから、dはSYSOBJECTS
a.xtype = b.xusertypeとa.id = d.idとd.xtype = 'U'
read_cursor CURSORを宣言
#tをFROM SELECTテーブル名、フィールド名FOR
TOP 1 '_TableName SELECT
'テーブル名を
「フィールド名」フィールド名、「型名」型名、
'長さ' 長、 'IS_NULL' IS_NULL、
MaxLenUsed AS 'MaxLenUsed'、 'サンプル値' サンプル、
'コメント' #tをFROM #tc INTOコメント
OPEN read_cursor
@ TBL、@ FLD INTO NEXT read_cursorからのフェッチ
WHILE(@@ FETCH_STATUS <> -1)--- failes
ベギン
IF(@@ FETCH_STATUS <> -2) - ミッシング
ベギン
SETする@ SQL = N'SET @ MAXLEN =「( '+ @ TBL +' FROM MAX(LEN(キャスト(nvarchar型として '+ @ FLD +を')))SELECT)
--print @sql
EXEC sp_executesqlをする@ SQL、N MAXLEN OUTPUT @ '@のmaxlen int型OUTPUT'、
--print @maxlen
SETの@ SQL = N'SETする@サンプルは=(LEN(CAST(nvarchar型として '+ @ FLD +'))= 'が+変換 '+ @ TBL +'(NVARCHAR FROM NVARCHARとして( '+ @ FLD +')TOP 1キャストを選択します(5)、@ MAXLEN)+ ')'
EXEC sp_executesqlをする@ SQL、N '@サンプルVARCHAR(30)OUTPUT'、@サンプル出力
迅速--for
--set SQL = N'SETする@サンプル@ =変換(VARCHAR(20)、(TOP SELECT 1 '+ @ FLD +' から「+
- @ TBL + 1 'DESC順))'
PRINTの@sql
印刷@sample
印刷@tbl
EXEC sp_executesqlをする@ SQL、N '@サンプルNVARCHAR(30)OUTPUT'、@サンプル出力
INSERT INTO SELECTを#tc *、LTRIM(ISNULL(@ MAXLEN、0))MaxLenUsedとして、
#tを変換元(NCHAR(20)、LTRIM(ISNULL(@sample、 ' ')))試料として、'' コメントここでのTableName = @ TBLとフィールド名= @ FLD
終わり
@ TBL、@ FLD INTO NEXT read_cursorからのフェッチ
終わり
CLOSE read_cursor
DEALLOCATE read_cursor
GO
SETは、ON ANSI_NULLS
GO
SET NOCOUNT OFF
GO
SELECT COUNT(*)に#tから
DROPテーブル#tを
GO
SELECT COUNT(*) - 1 #tcから
テーブル名によって#tc注文から## TXに選択*
DROPテーブル#tc
--select * TX ##から
SQLデータ型はnvarchar @ @Dbデータ型はnvarchar(60)、(3000)を宣言
(DB = db_nameを@に設定)
-ユーザー名とパスワードを変更する にエクスポートするエクセルで
セットする@ SQL = 'execをmaster.dbo.xp_cmdshell '' のBCP ..dbo ## CをTX:。' + @デシベル+ '\ _ -C936 -Usa -Psa -w exp.xls '''
印刷@sql
EXEC(@sql)
GO
DROP TABLEの## TX
GO
- ================================================ ======
-
表内の生成データを
挿入する
ストアドプロシージャステートメントを
-
ストアドプロシージャの確立が実行される
spGenInsertSQLテーブル
-
感謝
playyuer
- ================================================ ======
CREATE
のproc spGenInsertSQL(@tablenameのVARCHAR(256))
として
ベギン
@sql VARCHAR(8000)を宣言
宣言@sqlValuesのVARCHAR(8000)
'(' @sql =設定
セット@sqlValuesの= '値( '+'
'@sqlValues = @sqlValues + colsの+ '+ ''、' '+'、SQL @ = @sql + '[' +名+]を' を選択
から
(ケースを選択
中ときXTYPE(48,52,56,59,60,62,104,106,108,122,127)
し、「ケース 『+名+』がnullである 『』 NULL」「他の 『+『キャスト+ 『終了』(』+名+』 varchar型として」)
中ときXTYPE(58,61)
し、 'ケース '+名+' がnullである '' NULL' '他の '+' '' '' '' '' + '+ 'キャスト(' +名+' varchar型など) '+ '+''' 「」「」「」+「」末端
(167)でときXTYPE
その後、+名+が 'NULL ' 'ヌルである'' ケース' '他の '+' '' '' '' '' + '+ +名+ '(置き換えます''、 '' '' '''、 '' ' ')' '' '' ''' + '+' '' '' '' '+' '' 末端
(231)における場合XTYPE
その後、+名+が 'NULL ''ヌルである'' の場合は」他 '+' '' N '' '' '' + '+ '' +名+'(置き換え、 '' '' '' ''、 ' ') ' '' '' '''' + '+' '' '' '' '+''「末端
(175)でときXTYPE
その後、 'ケースはとき '+名+ 'NULL'」他の '+' '' '' '' '' + '+ 'キャスト((置き換える' +名+'、 '' '' '' ''' は、nullです' '' '' '' '' '' ''(+キャスト(VARCHARとして長さ)+ '))+' '' '' '' '' + '末端」charとして)'
(239)でときXTYPE
その後、+名+は+ ' '他' 'NULL ' 'ヌルである'' ケース' '' N '' '' '' + '+ 'キャスト((' +名+' 置き換え、 '' '' ''' ' '' '' 'CHAR(' + CAST(VARCHARとして長さ)+ '))として) '' '' ''' +' '' '' '' '' + '' 末端
他の「」「NULL」「」
Colsは、名前のように末尾
SYSCOLUMNSから
ID = OBJECT_ID(@tablename)
)T
セット@sqlは= 'INSERT INTO [ '+ @tablename +']を' 選択 '' 左+(SQL @、LEN(@sql)-1)+ ')' +左(@ sqlValues、LEN(@sqlValues)-4 )+ ')' '' + @テーブル名から
--print @sql
EXEC(@sql)
終わり
GO
- ================================================ ======
-
表内の生成データを
挿入する
ストアドプロシージャステートメントを
-
ストアドプロシージャの確立が実行される
proc_insertテーブル
-
感謝
Sky_blueを
- ================================================ ======
proc proc_insertをCREATE(@tablenameのVARCHAR(256))
として
ベギン
NOCOUNTの設定
@sqlstr VARCHAR(4000)を宣言
sqlstr1のVARCHAR(4000)@を宣言
sqlstr2のVARCHAR(4000)@を宣言
@ sqlstr = 'を選択し '選択' + @テーブル名' を挿入
選択@ sqlstr1 = ''
'(' @ sqlstr2 =選択
@ sqlstr1 = '値( '' +' を選択
(から '' @ sqlstr1 = @ sqlstr1 + COL + '+' ' '' +'、@ sqlstr2 = @ sqlstr2 +名+を選択するケースを選択
-
場合a.xtype + = 173次いで+ a.name + 'NULL ' 'ヌルである''の場合' '他の'+変換(VARCHAR(4)、a.length * 2 + 2'(VARCHAR(変換' )+ ')、' + a.name + ')' + ''末端
+ついで+ a.name + 'NULL 'がNULLである'' の場合 ' 'そう 'a.xtype = 104'(+ a.name + + '末端' VARCHAR(1) ')' に変換' とき
= 175 a.xtypeは、+ a.name + 'NULL ' 'ヌルである'' ケース' '他の '+' '' '' '' '' + '+ '' + a.name +'(置き換える' とき'' ' ' ' ''' ''' ' ''' '')' + '+' '' '' '' '' + '' 末端
a.xtypeは= 61、次いで+ a.name + 'NULL ''ヌルである'' の場合は、 'そう '+' '' '' '' '+' + 'ときに+ A'、(VARCHAR(23)に変換' .nameの+ '121) '+ '+'' '' '' '' '+' 末端'
+ついで+ a.name + 'NULL 'がNULLである'' の場合 '」そう 'a.xtype = 106 +変換(VARCHAR(4)、a.xprec + 2)+ ')'(VARCHAR(変換' とき、 '+ a.name +') '+'「末端
a.xtype = 62、次いで 'ケース '+ a.name +' がヌルである '' NULL' '他の '+' に変換(VARCHAR(23)、 '+ a.name +'、2) '+' 末端'
a.xtypeは= 56、次いで 'の場合は、ときに '+ a.name + 'NULL' '他の '+' に変換(VARCHAR(11) '+ a.name +') '+' 末端'' はヌルである' 場合
a.xtypeは= 60、次いで 'の場合は、ときに '+ a.name + 'NULL' '他の '+' に変換(VARCHAR(22) '+ a.name +') '+' 末端'' はヌルである' 場合
= 239 a.xtypeは、+ a.name + 'NULL ' 'ヌルである'' ケース' '他の '+' '' '' '' '' + '+ '' + a.name +'(置き換える' とき'' ' ' ' ''' ''' ' ''' '')' + '+' '' '' '' '' + '' 末端
+ついで+ a.name + 'NULL 'がNULLである'' の場合 '」そう 'a.xtype = 108 +変換(VARCHAR(4)、a.xprec + 2)+ ')'(VARCHAR(変換' とき、 '+ a.name +') '+'「末端
= 231 a.xtypeは、+ a.name + 'NULL ' 'ヌルである'' ケース' '他の '+' '' '' '' '' + '+ '' + a.name +'(置き換える' とき'' ' ' ' ''' ''' ' ''' '')' + '+' '' '' '' '' + '' 末端
a.xtype = 59、次いで 'ケース '+ a.name +' がヌルである '' NULL' '他の '+' に変換(VARCHAR(23)、 '+ a.name +'、2) '+' 末端'
a.xtypeは= 58、次いで+ a.name + 'NULL ''ヌルである'' の場合は、 'そう '+' '' '' '' '+' + 'ときに+ A'、(VARCHAR(23)に変換' .nameの+ '121) '+ '+'' '' '' '' '+' 末端'
a.xtypeは= 52、次いで 'の場合は、ときに '+ a.name + 'NULL' '他の '+' に変換(VARCHAR(12) '+ a.name +') '+' 末端'' はヌルである' 場合
a.xtype = 122は、次いで、 '場合は、いつ '+ a.name + 'NULL' '他の '+' に変換(VARCHAR(22) '+ a.name +') '+' 末端'' はヌルである' 場合
a.xtype + = 48、次いで+ a.name + 'NULL 'がNULLである'' の場合 ' 'そう '' は(+ a.name + + '末端' VARCHAR(6)、 '')に変換' とき
-
場合a.xtype + = 165次いで+ a.name + 'NULL ' 'ヌルである''の場合' '他の'+変換(VARCHAR(4)、a.length * 2 + 2'(VARCHAR(変換' )+ ')、' + a.name + ')' + ''末端
= 167 a.xtypeは、+ a.name + 'NULL ' 'ヌルである'' ケース' '他の '+' '' '' '' '' + '+ '' + a.name +'(置き換える' とき'' ' ' ' ''' ''' ' ''' '')' + '+' '' '' '' '' + '' 末端
他の「」「NULL」「」
COL、a.colid、a.nameとして終了
SYSCOLUMNSここa.id = OBJECT_ID(@tablename)とa.xtype <> 189とa.xtype <> 34とa.xtype <> 35とa.xtype <> 36から
たcolidによる)T順序
@ sqlstr = @ sqlstr +左(@ sqlstr2、LEN(@ sqlstr2)-1)+ ') '+左(@ sqlstr1、LEN(@ sqlstr1)-3)+') 'から' + @テーブル名を選択
- 印刷@sqlstr
EXEC(@sqlstr)
NOCOUNTオフに設定
終わり
GO
ます。https://www.cnblogs.com/zhangchenliang/archive/2010/01/10/1643674.htmlで再現