問題タブ [sqlbulkcopy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - SqlBulkCopy エラー処理 / エラー時に続行
大量のデータを SQL サーバーに挿入しようとしています。私の宛先テーブルには、「ハッシュ」と呼ばれる一意のインデックスがあります。
SqlDataAdapter の実装を SqlBulkCopy に置き換えたいと考えています。SqlDataAapter には「ContinueUpdateOnError」というプロパティがあり、true に設定すると、adapter.Update(table) は可能なすべての行を挿入し、エラー行に RowError プロパティのタグを付けます。
問題は、どの行が挿入され、どの行が挿入されなかったのか (一意のインデックスのため) を追跡しながら、SqlBulkCopy を使用してできるだけ早くデータを挿入するにはどうすればよいかということです。
追加情報は次のとおりです。
このプロセスは反復的であり、多くの場合、繰り返すスケジュールが設定されています。
ソース テーブルと宛先テーブルは巨大になる可能性があり、場合によっては数百万行になります。
最初にハッシュ値を確認することは可能ですが、行ごとに 2 つのトランザクションが必要です (最初に宛先テーブルからハッシュを選択し、次に挿入を実行します)。adapter.update(table) の場合、行ごとのハッシュ ヒットをチェックするよりも、RowError をチェックする方が速いと思います。
c# - SqlBulkCopy を使用したデータ挿入エラー
を使用して SQL 2008 にデータをバッチ挿入しようとしていますSqlBulkCopy
。
ここに私のテーブルがあります:
これが私のコードです:
だから私はエラーが発生しています:
データ ソースからの type の指定された値を、指定されたターゲット列の
SqlDateTime
型に変換できません。date
どうして??どうすれば修正できますか?お願い助けて!
.net - SQL Serverからのテーブル定義とリレーション(データではない)を含むDataSetのロード
私はSystem.DataとSQLServerのどちらの専門家でもありませんが、大きなDataSetを生成してから、System.Data.SqlClient.SqlBulkCopyを使用して結果を保存する必要があります。
DataSetは、約10個の関連テーブルで構成されます。SqlBulkCopyがDataSetをSQLServerに転送するとき、私の理解では、さまざまなDataTableの行が既存のSQLテーブルと統合され、関係と制約が維持されます。
手作業でDataTableを作成し、関係と制約を手動で設定するのではなく、XMLスキーマ定義を作成するのではなく、SQLから直接DataSetに複数のテーブル定義、制約、および外部キー定義をロードする簡単な方法はありますか?
そうでない場合、どのようなアプローチをお勧めしますか?
sql-server - 完了時のSQLBulkCopy行数
SQLBulkCopyを使用して大量のデータを移動しています。特定の行数が処理されるたびに通知するように通知イベントを実装しましたが、ジョブの完了時にOnSqlRowsCopiedイベントが発生しません。SQLBulkCopy writetoserverの完了時にコピーされた行の総数を取得するにはどうすればよいですか?
c# - Identity列に親子関係を持つSqlBulkCopyとDataTables
1つ以上の子テーブルによって外部キーとして参照される親テーブルのIdentity主キーに基づいて、親子関係を持ついくつかのテーブルを更新する必要があります。
- データ量が多いため、これらのテーブルをメモリ内に構築してから、C#のSqlBulkCopyを使用して、DataSetまたは個々のDataTableからデータベースをまとめて更新します。
- さらに、複数のスレッド、プロセス、場合によってはクライアントから、これを並行して実行したいと考えています。
F#のプロトタイプは、パフォーマンスが34倍向上するという大きな期待を示していますが、このコードは、親テーブルに既知のID値を強制します。強制されていない場合、SqlBulkCopyが行を挿入すると、Identity列はデータベースで正しく生成されますが、Identity値はメモリ内のDataTableで更新されません。さらに、たとえそうであったとしても、DataSetが親子関係を正しく修正するかどうかは明確ではないため、子テーブルは後で正しい外部キー値を使用して書き込むことができます。
SqlBulkCopyにID値を更新させる方法、さらに、個々のDataTableでDataAdapterがFillSchemaに呼び出されたときに自動的に行われない場合に、親子関係を保持および更新するようにDataSetを構成する方法を説明できますか?
私が探していない答え:
- データベースを読み取って現在の最高のID値を見つけ、各親行を作成するときに手動でインクリメントします。複数のプロセス/クライアントでは機能しません。トランザクションが失敗すると、一部のIdentity値がスキップされる可能性があるため、このメソッドは関係を台無しにする可能性があります。
- 親行を一度に1つずつ書き込み、ID値を要求します。これにより、SqlBulkCopyを使用することで得られた利点の少なくとも一部が無効になります(はい、親の行よりも子の行がはるかに多くなりますが、親の行はまだたくさんあります)。
次の未回答の質問に似ています。
.net - SqlBulkCopy の前に切り捨てる
SqlBulkCopy を実行する前にテーブルを切り捨てたい。SqlBulkCopy は、データをコピーする前にテーブルを自動的に切り捨てますか?
sqlite - SqlBulkCopy クラスを使用して SQLite から SQL Server にデータをインポートする
SQLite から SQL Server にデータを転送しようとしています。ターゲット テーブルと宛先テーブルのスキーマはまったく同じです。
SQLサーバー:
そしてSQLite:
以下のようにコードを書きました(System.Data.SQLiteを使用):
リーダーによってデータが読み込まれました (確認済み)。ただし、WriteToServer メソッドで InvalidOperationException がスローされます。指定された ColumnMapping は、ソースまたは宛先のどの列とも一致しません。
私へのアイデアや提案はありますか?
datatable - SqlBulkCopy WriteToServerのDataTableにすべてのデータベース列が必要ですか?
CSVから一部のデータをインポートしていますが、テーブルにあるすべてのフィールドが含まれていません。CSVの列のみを使用してDataTableを作成していましたが、文字列からブール値への変換でエラーが発生します。追加するフィールドはいずれもブール値ではないため、そのままにしておいたフィールドに問題があると想定しています。
DataTableに1-1マッピングを含める必要がありますか?
sql-server - BCP を使用した SQL Server テーブルからファイルへの書き込み
SQL Server で作業していたので、キャップがオンになっていることに気付きました。
とにかく、私はから書き込もうとしています
serverName.databaseName.databaseInstanceName.TableName
に
C:\ファイル名.xml
bcpを使用していて、列Col1とCol2だけを書きたいのですが、構文について少し助けてもらえますか? 私はここで苦労しています。
ありがとう、
テッド
sql-server-2005 - SqlBulkCopyはどの段階で制約をチェックしますか?
SqlBulkCopyOptions.CheckConstraintsオプションがSqlBulkCopy挿入に設定されている場合、各レコードの後で、またはすべてのレコードが挿入された後に、制約を個別にチェックしますか?
一部の列を(UDFを介して)親行と比較するチェック制約があります。MS Sql Server 2005を使用しています。http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopyoptions.aspxのドキュメントには、 「データの挿入中に制約を確認する」としか記載されていません。
私のテストでは、外部キーは最後までチェックされていないようですが、次の行を追加する前に、各行のチェック制約がチェックされます。これはかなり奇妙に聞こえます。これに関するドキュメントは見つかりませんでした。