はどのような構造のコースとSQL ServerのT-SQLで、別のテーブルに格納されたテーブルを作成するストアドプロシージャを作成することができますか?T-SQL構造が別のテーブルにあるテーブルを作成する方法は?
答えて
T-SQLはSELECT * ... INTO
構文を使用してその場でテーブルを作成することができます:
SELECT * INTO TargetTable
FROM SourceTable
-- any false returning condition will do
WHERE 1 = 0
これもエレガント(Deadsheep39
のおかげで)書き込むことができます:
SELECT TOP 0 * INTO TargetTable
FROM SourceTable
しかし、これは次の場合に失敗しますTargetTableは既に存在するため、その存在を確認する必要があります。
IF OBJECT_ID('TheSchema.TargetTable') IS NOT NULL
DROP TABLE TargetTable
また、索引、制約、トリガーも作成されません。詳細についてはhereをご確認ください。
あなたは(テーブル名がパラメータです)ダイナミックに行きたい場合は、動的なクエリを作成して実行することができます別のテーブルに格納されて何
CREATE PROCEDURE dbo.GenerateTable
(
@SourceTable VARCHAR(128),
@TargetTable VARCHAR(128)
)
AS
BEGIN
DECLARE @SQL NVARCHAR(4000) = N'
SELECT * INTO ' + QUOTENAME(@TargetTable) + '
FROM ' + QUOTENAME(@SourceTable) + '
-- any false returning condition will do
WHERE 1 = 0'
EXEC (@SQL)
END
GO
チェック - '(「dbname.schema.tablename」)OBJECT_ID場合はnullをドロップテーブルdbname.schema.tablename'ないか、またはあなただけのデフォルトのスキーマを使用して、DB上にある場合'object_id( 'tablename')がnullでない場合、 'drop table tablename'またはtempdb'の例です(' tempdb ..#tablename ')はnullではないdrop table tempdb ..#tablename'。 – Deadsheep39
@ Deadsheep39 - あなたの提案通りにオブジェクトの存在チェックを簡略化しました。ありがとう。 – Alexei
あなたはCREATE TABLE
文で文字列としてクエリを作成し、sp_executesql
ストアドプロシージャを使用してそれを実行することができます。このように例えば
:
@query
変数にあなたが必要なテーブルの種類に基づいて構築することができます
DECLARE @query nvarchar(max) = N'CREATE TABLE Table(Col nvarchar(50) NULL)'
EXECUTE sp_executesql @query
。
基本的には、手動で定義しなければならない入力を使って、必要以上に難しい方法でcreate table文を実行できますか? OPへの良い答えではない、-1。 – Tobb
私の知る限りでは、テーブルを動的に作成する方法は、その構造が別のテーブルに格納されているということが分かりました。 –
はい、SELECT INTOを使用できますが、どのような新しいテーブル構造が指定されていないのかという疑問があります。以降のみのコメント「ええ列、新しいテーブルを埋めるために使用されようとしているcolums」 –
- 1. あるデータベースから別のデータベースにテーブル構造をコピーする方法は? 1つのデータベースからテーブル構造をコピーする方法を
- 2. あるテーブルから別のテーブルに異なる構造のデータをエクスポートする
- 3. SQLサーバーにテーブルを作成するためのDBFファイルテーブル構造
- 4. ハイブ:テーブル構造を別のクラスタにコピー
- 5. 別のテーブルを作成せずにテーブルを作成する
- 6. あるテーブルのデータを別のテーブルから作成します
- 7. データベース構造:他のテーブルによって参照されるPersonテーブルの作成
- 8. あるmysqlテーブルの列(構造と内容)を別のテーブルに追加することはできますか?
- 9. 選択テーブルとしてのみ構造を持つテーブルを作成する方法
- 10. tsqlでのテーブルの動的作成
- 11. ある構造から別の構造にフィールドをコピーする方法
- 12. 構造のテーブル
- 13. Cassandra CQLのテーブル構造を発見する方法はありますか?
- 14. JPAでテーブル構造を再作成する
- 15. MYSQLはあるテーブルの構造からフィールドをコピーし、別のテーブルに追加します
- 16. PostgreSQLは、私は、ツリー構造を持つテーブルがある
- 17. 構造体が配列ベースの場合、モデルをテーブルにマップする方法は?
- 18. NodeJsコンソールに構造化テーブルを表示する方法
- 19. TSQL:私はテーブルを持つ2つの別個のテーブル
- 20. 構造体を別の構造体メンバにキャストする方法
- 21. ビューファイルに別の生徒のために別のテーブルを作成する方法
- 22. PHP:テーブル構造
- 23. Zend_Auth:DBテーブル構造
- 24. テーブル構造
- 25. Storeは私のテーブル構造があるハッシュ
- 26. テーブル構造を新しいテーブルにコピー
- 27. MySQLの特別なテーブル構造から情報を照会する方法はありますか?
- 28. TSQL - ダイナミックコピーテーブル構造
- 29. FTL:ftl言語でテーブルのような構造を作るには?
- 30. テーブルのデータ構造を比較する方法
を? information_schema.columnsのような構造か、テーブル構造を複製したいですか?構造体を複製するには 'select top 0 * from newtable into ... 'を使います。 – Deadsheep39
yeah columns、新しいテーブルを埋めるために使用される列! – Ayoubleb