2011-07-21 12 views
0

これは間違った場所ですが、SQLデータソースからデータを取り出し、Excelに配置し、前述のSQLデータソースから自動的にデータディクショナリを生成しようとしています。誰かがこれをやったか、これを行う方法を知っていますか?Excel - データソースをデータディクショナリに変換する

私は必要なもの[EDIT]

が(各テーブルには、それ自身のExcelのタブになります)テーブル名のすべて、および各テーブル内のすべての列で、各列のために、私はデータ型を必要としますそれがnullableかどうかを確認してください。

答えて

1

列メタデータを持つデータベースの列のリストを意味すると仮定します。これは、一度の必要であり、自動化の方法をあまり必要としません。

私は複数の結果は、最初のものを設定し、この意志の出力はテーブル名で、その後の後に誰もがあなたが言及した列のデータになりますSSMS

SELECT Table_name 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_TYPE = 'BASE TABLE' 


DECLARE @tableName sysname 
DECLARE table_cursor CURSOR FAST_FORWARD FOR 
SELECT Table_name 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_TYPE = 'BASE TABLE' 

OPEN table_cursor 

FETCH NEXT FROM table_cursor 
INTO @tableName 

WHILE @@FETCH_STATUS = 0 
BEGIN 
    SELECT TABLE_NAME, 
      COLUMN_NAME, 
      Data_type + COALESCE('(' + Cast(Character_Maximum_length as varchar) + ')' ,'') DataType, 
      IS_NULLABLE 

    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE 
    TABLE_NAME = @tableName 



    FETCH NEXT FROM table_cursor 
    INTO @tableName 
END 
CLOSE table_cursor 
DEALLOCATE table_cursor 

で次のコマンドを実行します。

あなたはカーソルを取り除くと、ちょうどあなたが好む場合は2つの出力を持っていますが、私はそれが簡単に各グリッド上はCtrl + AはCtrl + Cを押して見つける

0

コンラッドは正しい軌道に乗って間違いあり得る可能性があり列情報が必要な場合は、information_schema.tablesの代わりにinformation_schema.columnsを使用することができます。 information_schema.columnsは、データ型、ヌル可能かどうか、列のテーブル、データベースのすべてのテーブルのデータ型を提供します。

これをテーブルで分割して各テーブルに入れることができる場合は、ループを使用して各テーブルのinformation_schema.columnsから別々の結果セットを取得します。

0

私はこのようにして、私は必要なものを手に入れました。

SELECT T.NAME 'TABLE',C.NAME 'COLUMN' ,S.NAME 'DATATYPE',C.is_nullable 'ISNULL' 
FROM SYS.TABLES T INNER JOIN SYS.COLUMNS C ON T.OBJECT_ID=C.OBJECT_ID 
INNER JOIN SYS.TYPES S ON C.SYSTEM_TYPE_ID=S.SYSTEM_TYPE_ID 
WHERE T.TYPE='U' 
ORDER BY T.NAME,C.NAME 
関連する問題