Goedemiddag aan allen,
Ik ondervind een probleem bij het runnen van een bulk insert in SQL Server Management Studio (Express versie 2012)
In het tekstbestand dat ik wil inserten zit een veld dat tijd moet voorstellen maar de lay-out van dat veld is niet conform het type datetime. vb: 0 01:23
Gevolg is dat ik met geen enkel datatype dit kan inlezen. Met dit veld moeten wel berekeningen gedaan worden dus ben ik vrij beperkt.
Mijn kennis van SQL is niet groot vandaar dat ik jullie hulp inroep
Dit is de tabel:
[SQL]
use Management_Info
if exists (select * from sys.tables where name = 'DL')
begin
drop table DL
end
Create Table [DL]
(
[Id] int identity(1,1) Not Null,
[Assignment] nvarchar(8) Not Null,
[DC] nchar(2),
[WH] nchar(1),
[Rpt_Date] smalldatetime,
[Start_Date] smalldatetime,
[Start_Time] smalldatetime,
[End_Date] smalldatetime,
[End_Time] datetime,
[Cust_Id] nchar(5),
[Assoc_Id] nchar(4),
[Rpt_Group] nchar(1),
[JobCode] nchar(5),
[Pallets] smallint,
[Cases] smallint,
[Tot_Time] smalldatetime
constraint pk_LD_Id primary key (Id)
)
[/SQL]
De code voor de bulk insert:
[SQL]
use Management_Info
go
----------------------bulkinsert(enkele records tegelijk)----------------------
BULK INSERT DL
From 'C:\BI\Management_Info\SQL Scripts\DL.csv'
WITH
(
FIELDTERMINATOR = '|',
ROWTERMINATOR = '\n',
FIRSTROW = 1 --start met inladen vanaf 1ste rij (txt bestand heeft geen headers)
)
select * from DL
[/SQL]
Een voorbeeldje van de txt file als attachment toegevoegd.
Weet iemand hoe ik dit kan omzeilen? Kan ik een cast of convert doen bij het creëren van de tabel?
Ik weet dat ik het vrij primitief aanpak maar een bulk insert is een handige tool om duizenden lijnen in te lezen (het bijgevoegd voorbeeld is drastisch ingekrompen)
Alvast bedankt op voorhand.
Grtjs,
Ambertje
Bekijk bijlage 180218
Ik ondervind een probleem bij het runnen van een bulk insert in SQL Server Management Studio (Express versie 2012)
In het tekstbestand dat ik wil inserten zit een veld dat tijd moet voorstellen maar de lay-out van dat veld is niet conform het type datetime. vb: 0 01:23
Gevolg is dat ik met geen enkel datatype dit kan inlezen. Met dit veld moeten wel berekeningen gedaan worden dus ben ik vrij beperkt.
Mijn kennis van SQL is niet groot vandaar dat ik jullie hulp inroep

Dit is de tabel:
[SQL]
use Management_Info
if exists (select * from sys.tables where name = 'DL')
begin
drop table DL
end
Create Table [DL]
(
[Id] int identity(1,1) Not Null,
[Assignment] nvarchar(8) Not Null,
[DC] nchar(2),
[WH] nchar(1),
[Rpt_Date] smalldatetime,
[Start_Date] smalldatetime,
[Start_Time] smalldatetime,
[End_Date] smalldatetime,
[End_Time] datetime,
[Cust_Id] nchar(5),
[Assoc_Id] nchar(4),
[Rpt_Group] nchar(1),
[JobCode] nchar(5),
[Pallets] smallint,
[Cases] smallint,
[Tot_Time] smalldatetime
constraint pk_LD_Id primary key (Id)
)
[/SQL]
De code voor de bulk insert:
[SQL]
use Management_Info
go
----------------------bulkinsert(enkele records tegelijk)----------------------
BULK INSERT DL
From 'C:\BI\Management_Info\SQL Scripts\DL.csv'
WITH
(
FIELDTERMINATOR = '|',
ROWTERMINATOR = '\n',
FIRSTROW = 1 --start met inladen vanaf 1ste rij (txt bestand heeft geen headers)
)
select * from DL
[/SQL]
Een voorbeeldje van de txt file als attachment toegevoegd.
Weet iemand hoe ik dit kan omzeilen? Kan ik een cast of convert doen bij het creëren van de tabel?
Ik weet dat ik het vrij primitief aanpak maar een bulk insert is een handige tool om duizenden lijnen in te lezen (het bijgevoegd voorbeeld is drastisch ingekrompen)
Alvast bedankt op voorhand.
Grtjs,
Ambertje
Bekijk bijlage 180218