Frage

Ich habe ein SSIS-Paket, das ich entwickeln werde. Ich bin versucht, Daten von SQL Server 2005 auf MS Access 2007 zu schreiben.

Ich bin schön ratlos, wie ein SQL-char (1) Feld mit einem Access Ja / Nein Feld zu konvertieren.

Von den Informationen, die ich gesammelt haben, die SQL-äquivalent einen Access Ja / Nein Feld ein Bit-Feld sein würde, mit Werten von 0 oder 1.

My SQL char (1) Feld (was mein Quellfeld), enthält "N" oder "Y". Ich habe nicht die Möglichkeit, ein Bitfeld verwenden, damit mein Dilemma. Ich habe versucht, booleans Gießen und ganzen Zahlen und haben keinen Erfolg gehabt.

In meinem Datenflußtask habe ich versucht, reguläre Ausdrücke ohne Erfolg zu schaffen und Spalten abgeleitet, Datentransformationen, usw. ohne Erfolg. Ich bin fest.

Ich habe einige Beispiele gesehen auf den Aufbau bedingte Anweisungen, dass eine Schleife durch die .Row Sammlungen. Dies scheint ein wenig über Bord zu haben Bedingungen für NULL Schecks oder String-Werte zu schreiben.

In dem MSDN-Link

War es hilfreich?

Lösung

Siehe dieses Thema auf MSDN für Informationen über die Spalte Transformation abgeleitet.

Es ist nicht spezifisch adressieren, was Sie zu tun versuchen, aber einige der Beispiele bedeuten, dass Sie in der Lage sein sollten, Ihr Ziel zu erreichen. Stellen Sie die abgeleiteten Ausgabespalte des Typs DT_BOOL und verwenden eine einzeilige Version des Codes Sie oben als Ausdruck haben (vielleicht mit einem ternären Operator?).

Und ja, Zugriff Jet stellt Wahr als -1. Falsch = 0, und Wahr ist nicht falsch. Wenn Sie eine bitweise gelten nicht für 0, erhalten Sie die Zweier-Komplement-Version von -1.

Update: Der Jet interne Speicher eines Booleschen ist als Integer (Abbildung gehen - aber das ist, was sie gewählt haben ...). Als solchen Jet Ja / Nein-Felder akzeptieren Null (0) für falsch und nicht-Null (nicht nur -1) für True. Siehe Anmerkungen

Andere Tipps

Um dieses Problem zu lösen, habe ich eine abgeleitete Spalte.

Der reguläre Ausdruck für die Spalte ist:

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

Der Datentyp ist:

single-byte signed integer [DT_I1]

und Viola! Jet (auch bekannt als MS Access, Dank David W. Fenton!), Zeigt nun mein Ja / Nein Felder aus.

Nachdem ich bemerkte, dass nur ein Datensatz in der Tabelle wurde erscheinen, ich meine Testdaten auffiel, waren ungültig und korrigiert, um das zugrunde liegende Problem.

Das ist eine gute Dokumentation, wie SQL-char werfen (1) Felder (mit "N" oder "Y" Werte) auf MS Access (oooops, ich meinte Jet) Ja / Nein-Felder.

Vielen Dank für die Hilfe aller. Stackoverflow ist von unschätzbarem Wert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top