sql >> データベース >  >> RDS >> Sqlserver

テキストが切り捨てられたか、1 つ以上の文字がターゲット コード ページで一致しませんでした Excel ファイルからインポートする場合

    SSISダイアログでExcelソースを使用してこれをインポートしようとしていると思いますか?

    その場合、問題はおそらく、SSIS が Excel ソースを作成するときに、スプレッドシートの先頭でいくつかの行をサンプリングすることです。 [ShortDescription] 列に大きすぎるものがない場合は、デフォルトで 255 文字のテキスト列になります。

    そのため、大量のデータを含む行を含む列から切り捨てなしでデータをインポートするには、次の 2 つのオプションがあります。

    <オール>
  1. サンプリングされた行の少なくとも 1 つの [ShortDescription] 列に、255 文字を超える値が含まれていることを確認する必要があります。これを行う 1 つの方法は、REPT() 関数を使用することです。 =REPT('z', 4000)、文字 'z' の 4000 の文字列を作成します。
  2. そのような行を含めるには、Jet Excel ドライバによってサンプリングされる行数を増やす必要があります。 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel の下の TypeGuessRows の値を増やすことで、サンプリングされる行数を増やすことができます (システムが x64 の場合、HKEY_LOCAL_MACHINE\SOFTWARE\wow6432node\Microsoft\Jet\4.0\Engines\Excel の下) )レジストリ キー。
  3. 詳細については、次の 2 つのリンクを参照してください:

    さらに説明すると、SSIS はウィザードの背後で 3 つのオブジェクトを作成します。Excel データ ソース オブジェクト、SQL テーブル変換先オブジェクト、およびそれらの間のデータ フロー演算子です。 Excel ソース オブジェクトはソース データを定義し、他の 2 つのオブジェクトから独立して存在します。したがって、作成されると、前述のサンプリングが行われ、ソース列のサイズが設定されます。そのため、データ フロー オペレーターが実行され、Excel からデータを取得してテーブルに挿入しようとするまでに、255 文字に制限されたデータ ソースを既に参照しています。



    1. 独自のクラウドをDigitalOceanで利用できるようにする

    2. データベーススーパーユーザーになる-Engineyard

    3. テーブル式の基礎、パート13 –インラインテーブル値関数、続き

    4. Oracle:2つの日付間のHH:MM:SSの時間差を計算します