0

単純なハイブ テーブルを SQL サーバーにエクスポートしています。両方のテーブルに正確なスキーマがあります。Sql Server には ID 列があり、「set identity_insert table_name on」を実行しました。

しかし、sqoop から sql サーバーにエクスポートすると、sqoop から「IDENTITY_INSERT がオフに設定されています」というエラーが表示されます。

ID 列を持たない Sql Server テーブルにエクスポートすると、すべて正常に動作します。

これについて何か考えはありますか?sqoop から sql サーバーへのエクスポート中にこの問題に直面した人はいますか?

ありがとう

4

3 に答える 3

1

IDENTITY 列を使用してテーブルに挿入できるように SQL Server に指示します。これは、通常は書き込みできない自動インクリメント列です。しかし、あなたはそれを変えることができます。ここまたはここを参照してください。値の 1 つがその列に既に存在する値と競合する場合でも失敗します。

于 2013-04-01T17:44:55.017 に答える
0

SET IDENTITY_INSERT ステートメントはセッション固有です。そのため、クエリ ウィンドウを開いてステートメントを実行し、エクスポートを別の場所で実行して設定した場合、IDENTITY_INSERT はそのセッションでのみ設定され、エクスポート セッションでは設定されませんでした。可能であれば、エクスポート自体を変更する必要があります。そうでない場合、sqoop から MSSQL への直接エクスポートはできません。代わりに、sqoop から MSSQL が読み取ることができるファイル (タブ区切りなど) にデータをダンプし、最初に SET IDENTITY_INSERT ON を実行し、次にファイルを BULK INSERT し、次に SET IDENTITY_INSERT OFF を実行するステートメントを記述する必要があります。

于 2013-04-01T20:38:44.047 に答える