2012-02-15 7 views
1

SQLサーバーからSQLファイルにデータをエクスポートしています。問題は、文字列にカンマが含まれている列エントリの一部です。そのため、SQLファイル(基本的に文字列をカンマ区切りで区切って使用)を解析しようとすると、私は自分が望むものを得られません。誰にでもこの問題の解決策があるのか​​、それとも良いアイデアですか?SQLサーバーからの挿入クエリの解析

基本的に私は、クエリ内の値を区切るために必要があります。

例:

... VALUES(123、 'ボブはベリー、と豆を食べるのが好き')

私は分割した場合コンマを区切り記号として使用すると、次のようになります。

+0

SQLファイルデータを分割している関数のソースコードを含めることはできますか?正確なコードがなければ、有効な回答を提供するのは難しいかもしれません。 – evasilchenko

+0

クイックアンサーはカンマを区切り文字として使用しないことです。しかし、実際の答えは、あなたがそのステートメントをどれくらい正確に構築しているかによって決まります。 – NotMe

答えて

1

別の区切り文字を使用して書き出す必要があるように聞こえます。あなたは何を輸出に使っていますか? BCP command line utilityの場合は、-tスイッチを使用して区切り文字を切り替えることができます。たとえば、パイプ区切りの場合は-t |です。

+0

これは私が感謝のために探していたものです!私はまた上記のChriseyreへの私の返答に記述されている問題を助けるために-r ** \ t **を使いました。 – ryoung

1

タブで区切った変数としてエクスポートしようとしましたか?

+0

私はcsvやタブをセパレート(結果をセーブする)ファイルをエクスポートするだけで、いくつかのファンキーネスを得ることができます。各レコードがそれ自身の別の行にあるのではなく、別の行に分割された大きな列のエントリがいくつかあります。 – ryoung

+0

@ryoung BCP(または基本的にBCPのGUIであるssmsのウィザード)を使用していますか?私はいつもタブを使います(デリミタを指定しないとデフォルトで使うと信じていますが、タブを実際に指定しようとすると正しく動作しません)その問題は決してありませんでした。あなたのデータは私のものよりも長いかもしれません... –

+0

csvまたはタブデリムファイルを作成するには、クエリの結果を右クリックして "結果を別名で保存"を選択してください。 – ryoung

0

コンマを区切り文字として使用することに制約がありますか?文字列に表示されないと思われる別の文字または一連の文字を使用することができます。

また、データセットに応じて、文字列を一時表にエンコードし、後で識別できる特殊文字のカンマをスワップできます。

0

正規表現を使用できます。

var myMatches = Regex.Matches(lineInFile, "(?:[^',]+)|(?:'[^']+')"); 
foreach(var m in myMatches) 
{ 
    /* write m.ToString() to StringBuilder or file */ 
} 

希望します。

0

あなたは現在の形式を使用する必要がある場合、あなたはあなたの可能性、それを分割する

((\d+), ('.*')) 

のような正規表現。正規表現は最高ではありませんが、あなたと一緒に動作します。