2

15 年前のコードベースをアップグレードしています。ネイティブの BCP 形式のデータ ファイルを作成する必要があります。

新しいシステムでは、C# の DataTable オブジェクトのデータを利用して、ネイティブの BCP 形式でデータ ファイルを作成することが理想的です。

これを行うことができますか?もしそうなら、最善のアプローチは何でしょうか?

4

5 に答える 5

3

いいえ、できません。ネイティブ BCP ファイルを作成する唯一の方法は、SQL Server を使用することです。誰かが別の方法を開発または見つけた場合は、ここに投稿してください!

于 2010-01-14T00:33:12.843 に答える
0

データテーブルのデータを SQL Server のステージング領域に配置できますか? その場合、BCP プロセスを生成できます。

BCP: http://msdn.microsoft.com/en-us/library/aa174646%28SQL.80%29.aspx

たとえば、次を使用します。

BCP Database.Schema.TableName OUT FileName.Ext -S ServerName -T -n

スイッチ:

  • -S はサーバー用
  • -T は信頼できる接続用です
  • -n はネイティブ形式用です

編集 + 新しいアイデア:

データテーブルを埋めるクエリにアクセスできる場合は、BCP または SQLDMO でクエリを使用して、ネイティブ形式のファイルをエクスポートできます。次のクエリにはインライン クエリが含まれているため、OUT スイッチの代わりに QUERYOUT スイッチを使用します。

ビューから特定の列をエクスポートします。

BCP "SELECT Column1, Column2 FROM MyViewName" QUERYOUT FileName.Ext -S ServerName -T -n

JOIN から特定の列をエクスポートします。

BCP "SELECT Table1.Column1, Table2.Column2 FROM Table1 INNER JOIN Table2 on Table1.Column33 = Table2.Column33" QUERYOUT FileName.Ext -S ServerName -T -n
于 2009-11-27T22:20:44.857 に答える
0

それがそれほど古いものである場合、BCP ピースは Sybase BCP ピースと非常によく似ている可能性があります。Sybase では、クライアント ライブラリを調べ始め、BCP API を使用したコードの例を出荷しました。対応する API の CTLib および/または Java jar。Microsoft の場合、BCP を含むネイティブ C または Basic API の同様の部分が存在する可能性があります。レコードごとの準備とファイルへの読み取り/書き込みだけで、API の通信部分は必要ない場合があります。

そのようなものがなければ、元の BCP プログラムによって生成/消費される、手作りの FMT ファイルとテキストのようなデータ ファイルを使用した非ネイティブ フォーマットを検討します。

于 2009-11-27T22:25:51.900 に答える
0

これを行うには同様の方法がありますが、SQLDMO を参照する必要があり、BCP と同様の同等の形式が作成されます。SQLDMO の BulkCopy オブジェクトを使用すると、探していることができます。SQLDMO ライブラリを使用する vbscript で実行されるルーチンへのリンクを次に示します

これがお役に立てば幸いです。よろしくお願いします、トム。

于 2009-11-28T00:06:20.760 に答える