1

このリンクが言うように、スキーマとデータベースは次のようになります。

schema : database : table :: floor plan : house : room.

しかし、それは次のようであると思われます。

database : schema : table :: house : floor plan: room.

どちらが正しいですか?私は2番目のオプションのように使用しました;

exec xp_cmdshell 'bcp "select * from test2.dbo.test" queryout I:\File\mytest.xlsx -c -t -T -S YAMUNA\SQLEXPRESS'

ここでデータベース: test2; スキーマ: dbo; および表:test

4

3 に答える 3

2

そのリンクは無視してください。SQL Server オブジェクトのアドレス指定規則について話しているのではありません。さらに、彼らは「任意のリレーショナル データ設計」である「スキーマ」の伝統的/正式な意味について話しているのに対し、SQL Server では「スキーマ」は通常、特定のタイプのセキュリティ オブジェクトである「所有者スキーマ」の略です。

むしろ、リレーショナル デザインのレベルまたは要素について類推しています。この場合の「:」記号は、ある概念と別の概念との相対的な関係を表しており、「::」は類推記号です。

つまり、 schema:database:table :: floor plan:house:roomスキーマ、データベース、およびテーブルの間の関係は、間取り図、家屋、および部屋の間の関係に類似している」ということです。(英語ではもっと一般的で簡潔な言い方がありますが、ネイティブ スピーカー以外は混乱する傾向があります)

これらの概念の特定の順序は、対応する要素 (スキーマ - フロア プラン、データベース - ハウス、ルーム - テーブル) の相対位置が同じである限り、重要ではないことに注意してください。schema:database:table :: floor plan:house:roomと同じですdatabase:schema:table :: house:floor plan:room

于 2013-09-20T13:29:41.527 に答える
1

正解はschema : database : table :: floor plan : house : roomです。家 (データベース) には多くのフロアが含まれ、さらに多くのフロア プラン (スキーマ) が含まれる場合があります。各フロアには、そのフロアに固有の複数の部屋 (テーブル) が存在する場合があります。

DBO は、データベース所有者のスキーマであるという点で特別です。そのデータベースに他のスキーマを追加できます。

于 2013-09-20T13:36:14.283 に答える
1

以下のコードは、BCP を使用してデータをダンプする方法について書いたブログ記事からのものです。

持っているものとは違うので、注意点があります。

1 - bcp にパスが見つからない可能性があるため、パスを指定する必要があります。

2 - コンマ区切り値 (csv) 形式であるにもかかわらず、*.xlsx 拡張子を付けていることに気付きました。*.csv 拡張子を使用することをお勧めします。

3 - また、「-t」区切りスイッチの後に文字を指定する必要があります。以下では、16 進値を使用します。この例ではコンマを使用しています。

4 - 最後になりましたが、ファイル名の前後に " " がありません。

これらの問題を修正して、もう一度お試しください。それでもサイコロがない場合。文字列を作成する私のコードを使用してください。PRINT コマンドを使用します。

コマンドラインから呼び出してみてください。そこで機能しない場合は、SQL サーバーでも機能しません。

幸運を。

ジョン・マイナー

www.craftydba.com

PS: それでも問題がある場合は、コマンド実行の出力を投稿してください。

PPS: スキーマは、既存のデータベースに対して既に修正されている必要があります。あなたが偶発的な DBA でない限り、DBA に構文を尋ねてください。

-- BCP - Export query, pipe delimited format, trusted security, character format
DECLARE @bcp_cmd4 VARCHAR(1000);
DECLARE @exe_path4 VARCHAR(200) = 
    ' cd C:\Program Files\Microsoft SQL Server\100\Tools\Binn\ & ';
SET @bcp_cmd4 =  @exe_path4 + 
    ' BCP.EXE "SELECT FirstName, LastName FROM AdventureWorks2008R2.Sales.vSalesPerson" queryout ' +
    ' "C:\TEST\PEOPLE.TXT" -T -c -q -t0x7c -r\n';
PRINT @bcp_cmd4;
EXEC master..xp_cmdshell @bcp_cmd4;
GO
于 2013-09-20T14:00:50.090 に答える