Access: führende Nullen bei CSV-Export fehlen
#16
geschrieben 17. November 2016 - 14:18
Du sollst nicht mit 0000001 anfangen und dann TARG2017-1 als Präfix davorsetzen (dann passiert das nämlich) sondern schon als Zahl statt mit der 1 mit 10000000 anfangen und da dann TARG2017- vorsetzen.
Im Ergebnis wären beide Ausgaben TARG2017-10000000 bzw. TARG2017-10000001, aber wenn die Zahlen erst bei 10000000 starten, gibt es keine führenden Nullen mehr.
Anzeige
#17
geschrieben 17. November 2016 - 14:21
#18
geschrieben 17. November 2016 - 14:38
Welchen Datentyp hat das Feld in dem die ID steht?
Mit welcher Länge ist der Datentype definiert?
Dieser Beitrag wurde von Gispelmob bearbeitet: 17. November 2016 - 14:38
#19
geschrieben 17. November 2016 - 14:44
Es handelt sich hier um mehrere 1000 Einträge die für Migrationszwecke umgestaltet werden.
#20
geschrieben 17. November 2016 - 14:55
Long Integer oder Replikations-ID?
Neue Werte als Inkrement oder als Zufall?
Nochwas.
Wohin sollen die Daten exportiert werden?
Warum ist es so schlimm wenn die führenden Nullen wegfallen?
Wenn führende Nullen nötig sind, dann werden die durch eine Formatierung der Daten bei der Ausgabe dargestellt aber nicht in der Datenbank.
Dieser Beitrag wurde von Gispelmob bearbeitet: 17. November 2016 - 15:17
#21
geschrieben 17. November 2016 - 15:39
Definiert habe ich es als Long Integer.
Wie definiere ich die Formatierung in der Ausgabe?
Dieser Beitrag wurde von SuperWolf bearbeitet: 17. November 2016 - 15:41
#22
geschrieben 17. November 2016 - 16:17
Ist es denn beim Import zwingen notwendig das die Zahlen 8 Stellen haben?
Hast du schon mal probiert einen Datensatz mit einer einstelligen ID zu importieren und wird er dann richtig übernommen?
Und ist es nicht möglich die Daten als SQL zu exportieren und dann in dem Cloudsystem zu importieren?
#23
geschrieben 17. November 2016 - 16:51
Dieser Beitrag wurde von Holger_N bearbeitet: 17. November 2016 - 16:52
#24
geschrieben 17. November 2016 - 17:12
Zitat (Holger_N: 17. November 2016 - 16:51)
Genau das dürfte das Problem lösen, habe ich aber bisher nicht hinbekommen.
#25
geschrieben 17. November 2016 - 17:14
Soweit ich es verstanden habe stehen die zahlen in der DB als 1, 2, 3 ... und sollen aber in der anderen DB als achtstellige Zahl importiert werden. Ob sie das müssen ist mir noch nicht ganz klar. Eventuell kann man die Zahlen auch so wie sie sind importieren und die Ziel DB macht den Rest automatisch.
Meine Frage steht immernoch ob man den Import nicht auch per SQL machen kann.
Dieser Beitrag wurde von Gispelmob bearbeitet: 17. November 2016 - 17:33
#26
geschrieben 17. November 2016 - 17:27
#27
geschrieben 17. November 2016 - 17:32
#28
geschrieben 17. November 2016 - 17:53
#29
geschrieben 17. November 2016 - 19:03
Dieser Beitrag wurde von Gispelmob bearbeitet: 17. November 2016 - 19:04
#30
geschrieben 17. November 2016 - 19:31
Da kann man dann nämlich sowas tun:
PS C:\> cat C:\Users\ralphs\Documents\test.csv A;B;C; 1;X;Y; 2;W;Z; PS C:\> Import-Csv 'C:\Users\ralphs\Documents\test.csv' -Delimiter ';' | % { # Hole alle CSV-Daten nach MS-Syntax ("Semikola-getrennte Werte" statt "Kommagetrennt") # X | % {...} = "for each element in X do ..." $thisObj = $_; # $_ hat einen miesen Gültigkeitsbereich => anderswo ablegen $var = [int]$thisObj.A; # Konvertiere Wert aus Spalte A [das A ganz oben im Beispiel] nach Int und pack das nach $var $strg = ( 'TEST-{0}' -f $var.ToString("00000000")); # Formatiere den eben gebastelten Int in 8-stelliges Objekt und schreib TEST- davor $thisObj.A = $strg; # Ergebnis ins ursprüngliche Objekt zurückschreiben... $thisObj # ... und ausgeben; sonst kriegen wir nix aus der Schleife zurück } | ConvertTo-Csv -NoTypeInformation -Delimiter ';' # Ergebnis wieder nach CSV konvertieren und MS' Wunsch nach Semikola als Trennzeichen entsprechen; für Ausgabe in Datei stattdessen Export-Csv mit -Path 'Dateiname' verwenden # NoTypeInformation nicht vergessen, sonst stolpern CSV-Importer über von PS' einkommentierte Typinformationen, die Du aber eh nicht brauchst # Ausgabe der Pipeline oben, so wie sie dasteht: "A";"B";"C" "TEST-000001";"X";"Y" "TEST-000002";"W";"Z" # So würde das mit Export-Csv und demselben Parametersatz dazu (plus natürlich -Path ... ) in der bewußten CSV-Datei landen. PS C:\>
Wenn das bei Dir andere Delimiter erfordert, das halt mit -Delimiter angeben, idealerweise als Variable, damit Import- und Export-Delimiter synchron bleiben. Ohne -Delimiter gibts Kommata als Trennzeichen, dem Standard entsprechend.