2011-04-08 47 views
1

のフィールド・ターミネータ、私はテーブルにパイプ区切りファイルをロードする過程でBCPを作成しています。それは実行時にBCPユーティリティは、私にxml形式のファイルの行4列51でエラーエラー= [Microsoft]の[SQL Serverネイティブクライアント10.0] [SQL Serverの]構文エラーが発生します。フォーマットファイルの最初の行は、次のとおりです。SQL Server BCPはパイプを受け付けません。フォーマットファイル

<?xml version="1.0"?> 
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <RECORD> 
     <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="|", MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS" /> 

エラーの場所は、 FIELDエントリの私は、単一引用符と二重引用符、引用符なしの様々なバリエーションを試してみましたが、パイプの周りの前にスラッシュが、エラーは常に同じ場所でスローされています。

ファイル自体には、ファイルの上部と下部にパイプ区切りと短いヘッダ/トレーラレコードを有するデータのちょうど複数の行です。これは見ていない問題ではなく、ターミネーター属性の後にカンマであれば

答えて

2

わからない右

TERMINATOR =「|」

+0

うん、それはカンマでした。ありがとう。だから、どうやらそれは私の頭の中だけで自動ことだ、常にコンマで分離されているT-SQLのフィールド/属性に使用。 – BBlake

2

これは、コマンドウィンドウ、バッチファイル、またはあまりにも微妙なフラットファイル操作と関係している場合は、実際にヒットしている可能性がありますパイプ文字は非常に特殊な使い方をしています。これらの環境で特殊文字を「エスケープ」する方法は数多くあります...そして、私がその戦いと戦っていたときに決して確かな文書を見つけたことはありませんでしたが、時間の経過とともに、引用符、^、 &は私の問題を解決することが多いでしょう。たとえば、慎重次のことを試してみてください:

もちろん
<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="^|", MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS" /> 

<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="&|", MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS" /> 

それだけでこのすべてを無視した場合には@Conradsコンマ問題、かもしれません。

+0

あなたは天才です。私は、カスタム区切り文字でフォーマットファイルを生成するのに苦労していたあなたの答えは働いた...ありがとう!!!! – Radhi

関連する問題