Public Access
1
0
mirror of https://github.com/iscmt/event-parser.git synced 2026-04-04 14:02:24 -04:00
Files
event-parser/BulkInsert_StoredProcedure.sql
2020-04-14 18:52:03 -04:00

106 lines
4.1 KiB
Transact-SQL
Executable File

/****** Object: StoredProcedure [dbo].[ImportLogs] Script Date: 19/07/2019 06:14:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ImportLogs] @filepath NVARCHAR(500),
@bulkinsert NVARCHAR(2000)
AS
IF Object_id('event_logs') IS NOT NULL
BEGIN
-- The bulk insert command must be built as a string because the filepath of the CSV file cannot be passed as a paramter.
-- https://stackoverflow.com/questions/15671971/syntax-error-when-defining-a-parameter-for-bulk-insert
SET @bulkinsert = N'BULK INSERT event_logs FROM '''
+ @filepath
+
N''' WITH (FIELDTERMINATOR = '','', ROWTERMINATOR = ''\n'')'
EXEC sp_executesql @bulkinsert
END
ELSE
BEGIN
/****** Object: Table [dbo].[event_logs] Script Date: 19/07/2019 05:57:04 ******/
SET ansi_nulls ON
SET quoted_identifier ON
CREATE TABLE [dbo].[event_logs]
(
[guid] [VARCHAR](100) NOT NULL,
[level] [VARCHAR](100) NULL,
[date_and_time] [VARCHAR](100) NULL,
[source] [VARCHAR](100) NULL,
[event_id] [SMALLINT] NULL,
[task_category] [VARCHAR](100) NULL,
[extracted_account_name] [VARCHAR](100) NOT NULL,
CONSTRAINT [PK_event_logs] PRIMARY KEY CLUSTERED ( [guid] ASC )
WITH (
pad_index = OFF, statistics_norecompute = OFF, ignore_dup_key =
OFF,
allow_row_locks = on, allow_page_locks = on) ON [PRIMARY]
)
ON [PRIMARY]
SET ansi_padding ON
/****** Object: Index [IX_date_and_time] Script Date: 19/07/2019 05:57:04 ******/
CREATE NONCLUSTERED INDEX [IX_date_and_time]
ON [dbo].[event_logs] ( [date_and_time] ASC )
WITH (pad_index = OFF, statistics_norecompute = OFF, sort_in_tempdb
=
OFF,
drop_existing = OFF, online = OFF, allow_row_locks = ON,
allow_page_locks
=
ON) ON [PRIMARY]
/****** Object: Index [IX_event_id] Script Date: 19/07/2019 05:57:04 ******/
CREATE NONCLUSTERED INDEX [IX_event_id]
ON [dbo].[event_logs] ( [event_id] ASC )
WITH (pad_index = OFF, statistics_norecompute = OFF, sort_in_tempdb
=
OFF,
drop_existing = OFF, online = OFF, allow_row_locks = ON,
allow_page_locks
=
ON) ON [PRIMARY]
SET ansi_padding ON
/****** Object: Index [IX_extracted_account_name] Script Date: 19/07/2019 05:57:04 ******/
CREATE NONCLUSTERED INDEX [IX_extracted_account_name]
ON [dbo].[event_logs] ( [extracted_account_name] ASC )
WITH (pad_index = OFF, statistics_norecompute = OFF, sort_in_tempdb
=
OFF,
drop_existing = OFF, online = OFF, allow_row_locks = ON,
allow_page_locks
=
ON) ON [PRIMARY]
SET ansi_padding ON
/****** Object: Index [IX_task_category] Script Date: 19/07/2019 05:57:04 ******/
CREATE NONCLUSTERED INDEX [IX_task_category]
ON [dbo].[event_logs] ( [task_category] ASC )
WITH (pad_index = OFF, statistics_norecompute = OFF, sort_in_tempdb
=
OFF,
drop_existing = OFF, online = OFF, allow_row_locks = ON,
allow_page_locks
=
ON) ON [PRIMARY]
-- Import records once database has been created.
SET @bulkinsert = N'BULK INSERT event_logs FROM '''
+ @filepath
+
N''' WITH (FIELDTERMINATOR = '','', ROWTERMINATOR = ''\n'')'
EXEC sp_executesql @bulkinsert
END
GO