Import nach MSSQL

PeterP4LE

Benutzer
Beiträge
7
Guten Tag,

ich hoffe mir kann jemand bei meinem Problem helfen.

Ich bekomme von einem Barcode Datensammler eine CSV Datei geliefert.

Der Aufbau der Datei ist dabei wie folgt:

"12";"15:01:53";"09/02/15"
"12345685520";"10:01:57";"09/02/15"
"12345685520";"15:01:57";"09/02/15"
"14";"15:01:53";"09/02/15"
"12345685520";"10:01:57";"09/02/15"
"12345685520";"15:01:57";"09/02/15"

Diese Daten versuche ich per BulkInsert zu importieren.
Allerdings sind immer 3 Zeilen ein Datensatz!

Der Aufbau der SQL Tabelle ist also
id |id_time|id_date|pr_begin|pr_begin_time|pr_begin_date|pr_end|pr_end-time|pr_end_date|
12|10:01:53|09/02/15|12345685520|10:01:57|09/02/15|12345685520|15:01:57|09/02/15|
14|10:01:53|09/02/15|12345685520|10:01:57|09/02/15|12345685520|15:01:57|09/02/15|

Ich bin leicht am verzweifeln, weil ich das einfach nicht hinbekomme.

Kann mir jemand helfen?

Vielen vielen Dank im Vorfeld!!

LG

Peter
 
Werbung:
In Oracle würde ich wahrscheinlich via PL/SQL richtig konkatenieren. Einfach nur weil ich zu faul wäre mir dafür ein passendes SQL-Statement auszudenken :)
Wobei man einfach sowas machen könnte wie:
Code:
Select t1.*, t2.*, t3.*
From (Select t.*, rownum rn
      From   import_tab t
      Order By t.id asc) t1,
      (Select t.*, rownum rn
       From   import_tab t
       Order  By t.id asc) t2,
      (Select t.*, rownum rn
       From   import_tab t
       Order  By t.id asc) t3
Where mod(t1.rn, 3) = 0
And   mod(t2.rn, 3) = 1
And   mod(t3.rn, 3) = 2
And   t1.id = t2.id
And   t1.id = t3.id
denke ich?!
 
Ich würde es auch im ersten Schritt so wie es ist in eine Tabelle importieren mit einem TIMESTAMP für jede Zeile. Danach läßt sich dann später sortieren um die Datensätze zusammen zu joinen. Ich kenne keinen Weg bei BULK INSERT mit 2 unterschiedlichen Trennzeichen zu arbeiten (; und Zeilenumbruch) um dann nach x Atributen einen neuen Datensatz zu beginnen. Vieleicht kann das ein gesondertes Import Tool, die hat aber nicht jeder: http://de.wikipedia.org/wiki/SQL_Server_Integration_Services

PS: TIMESTAMP ist in MSSQL kein Datum sondern ein eigener Datentyp: http://www.sqlteam.com/article/timestamps-vs-datetime-data-types
 
Hallo,

falls du ein Linux System zur Verfügung hast geht das auch mit sed

cat sqldatei. sql | sed '2n;N;N;s/\n/;/g' >neue.sql

Das hängt immer 3 Zeilen in eine und setzt noch ein Semikolon ein

Das Ergebnis sieht dann so aus:
"12";"15:01:53";"09/02/15"-;-"12345685520";"10:01:57";"09/02/15"-;-"12345685520";"15:01:57";"09/02/15"
"14";"15:01:53";"09/02/15"-;-"12345685520";"10:01:57";"09/02/15"-;-"12345685520";"15:01:57";"09/02/15"

Gruss

Bernd
 
Werbung:
ups,

da hab ich falsch kopiert, da bei mir noch eine Headline war. So sollte es gehen

cat sqldatei. sql | sed 'N;N;s/\n/;/g' >neue.sql

Gruss

Bernd
 
Zurück
Oben