1

開発中の SSIS パッケージがあります。SQL Server 2005 から MS Access 2007 にデータを書き込もうとしています。

SQL char(1) フィールドを Access の Yes/No フィールドに変換する方法にかなり困惑しています。

私が収集した情報によると、Access の Yes/No フィールドに相当する SQL は、値が 0 または 1 のビット フィールドです。

SQL char(1) フィールド (ソース フィールド) に "N" または "Y" が含まれています。ビットフィールドを使用するオプションがないため、ジレンマです。ブール値と整数にキャストしようとしましたが、成功しませんでした。

私のデータ フロー タスクでは、正規表現を作成しようとしましたが、役に立たず、派生列、データ変換なども役に立ちませんでした。ハマった。

.Row コレクションをループする条件ステートメントを作成する例をいくつか見てきました。NULL チェックまたは文字列値の条件を記述しなければならないのは、少しやり過ぎのようです。

MSDN のリンクSSIS Equivalent to DTS Transform Data Task Propertiesには、次のようなコードがあります。

If DTSSource("Col010") = "Y" Then
  DTSDestination("X") =  -1
 Else
  DTSDestination("X") =  0
End If

コードを使用して、行の値を直接操作できるようにする必要がありますか? ソース フィールドは Yes/No タイプなので、整数値を受け入れますか? 負の値?はい、実際には MS アクセスでは "-1" です。これは私を混乱させていると思います。

正規表現でこの問題を解決できるようですが、それを使用する方法もわかりません。

私が見落としているものはありますか?「CHAR」を「YES/NO」に変換する方法が必要です。

** 古き良き 2000 年の SQL DTS は、サルがインストールした箱から出してすぐに、デフォルトで問題なくこれを処理できることをここで指摘するのは簡単です。私は、この Yes/No フィールドの問題など、SSIS の非常に小さな癖に WAAAAY を費やしすぎていることに気付きました。

SSIS および MS Access の Yes/No フィールドに関するドキュメントが見つかりません。MSDN でも、質問を投稿することはできません。私は知っています、貧しい私:(

SSIS と MS Access でこの癖に遭遇した人はいますか?

4

2 に答える 2

1

派生列の変換については、MSDN のこのトピックを参照してください。

何をしようとしているのかを具体的に説明するものではありませんが、いくつかの例は、目的を達成できるはずであることを示唆しています。派生出力列の型を DT_BOOL に設定し、上記のコードの 1 行バージョンを式として使用します (おそらく三項演算子を使用しますか?)。

はい、Access Jet は True を -1 として表します。False = 0、True は False ではありません。ビット単位の Not を 0 に適用すると、2 の補数バージョンの -1 が得られます。

更新: Boolean の Jet 内部ストレージは整数です(図を参照してください-しかし、それが彼らが選択したものです...)。そのため、Jet の Yes/No フィールドは、False の場合はゼロ (0) を受け入れ、True の場合はゼロ以外 (-1 だけではない) を受け入れます。コメントを見る

于 2009-06-18T00:00:26.513 に答える
0

この問題を解決するために、派生列を作成しました。

列の正規表現は次のとおりです。

[column] == "Y" ? -1 : 0

データ型は次のとおりです。

single-byte signed integer [DT_I1]

そしてヴィオラ!Jet (別名 MS Access、ありがとう、David W. Fenton!) は、私の Yes/No フィールドを表示するようになりました。

テーブルに 1 つのレコードしか表示されていないことに気付いた後、テスト データが無効であることに気付き、根本的な問題を修正しました。

これは、SQL char(1) フィールド ("N" または "Y" 値を持つ) を MS Access (おっと、Jet のことです) の Yes/No フィールドにキャストする方法に関する優れたドキュメントです。

みんなの助けに感謝します。Stackoverflow は非常に貴重です。

于 2009-06-19T18:52:31.360 に答える