2

bcpSybase ASE データベースからレコードを抽出してファイルに書き込もうとしています。.fmtデータベース内の 2 つのフィールドを除外する必要があるため、フォーマットファイルを使用しようとしています。

これは私のbcpです:

bcp Rdevdb..TBL_XFER out out1.txt -S$serv -U$user -P$pass -fbcp.fmt -c -t\| 

| が必要です char を区切り文字にします。

  1. スイッチを使用すると-c、フォーマット ファイルをまとめて無視しているように見えますが、これは本当ですか?

  2. どちら-n-cスイッチも使用しないと (ネイティブまたは char の形式を指定するために)、ネイティブ形式を使用してファイルを作成するように見えます。ケース?

  3. を含め、-cフォーマット ファイルで不要な 2 つのフィールドを削除すると、すべての db フィールドがファイルに取り込まれます。そのため、.fmt ファイルを無視すると考えています。

  4. スイッチを削除-cし、.fmt ファイルに含まれていない 2 つのフィールドで実行すると、次のエラーが発生します。Incorrect host-column number found in bcp format-file.

  5. コマンドで必要な結果を得るには、どのようなスイッチの組み合わせと .fmt ファイルに何を含める必要がありますbcpか?

ファイルの一部を次に示し.fmtます。どのテーブル フィールド名にもスペースはありません (これには、ファイルに含めたくないフィールド 1 またはフィールド 2 は含まれません)。

10.0
147
3   SYBCHAR 2   6   "|" 3   COVERAGE_CODE
4   SYBCHAR 2   6   "|" 4   DEPT
5   SYBCHAR 2   8   "|" 5   ORG
6   SYBCHAR 2   8   "|" 6   DIV
7   SYBCHAR 2   8   "|" 7   DISTRIBUTE
...

テーブルには 147 のフィールドがありますが、.fmt ファイルにすべてのフィールドを含めると、バージョンとフィールド番号を指定する最初の 2 行で合計 149 になります。

助けてくれてありがとう。

4

1 に答える 1

2

または、関心のある列 (または行) のみを含むテーブルのビューを作成し、そのビューに対して bcp を使用することもできます。データを新しいリポジトリに転送している可能性が高いと思われるため、文字 bcp はネイティブ ファイルよりも共有しやすいため、おそらく -c を使用し続けることをお勧めします。

-f フラグを使用したことがないので、そのように機能させることについて実際に話すことはできません。

于 2012-07-05T20:04:14.223 に答える