USE CanvasWarehouse GO IF OBJECT_ID(N'[dbo].[Canvas-enrollment_dim-staging]', N'U') IS NOT NULL BEGIN DROP TABLE [dbo].[Canvas-enrollment_dim-staging] END ; CREATE TABLE [dbo].[Canvas-enrollment_dim-staging] ( id bigint NOT NULL , canvas_id bigint NOT NULL , root_account_id bigint NOT NULL , course_section_id bigint NOT NULL , role_id bigint NOT NULL , type varchar(256) NOT NULL , workflow_state varchar(256) NOT NULL , created_at varchar(max) NOT NULL , updated_at varchar(max) NOT NULL , start_at varchar(max) NULL , end_at varchar(max) NULL , completed_at varchar(max) NULL , self_enrolled varchar(5) NOT NULL , sis_source_id varchar(256) NULL , course_id bigint NOT NULL , user_id bigint NOT NULL , last_activity_at varchar(max) NULL ) GO BULK INSERT [dbo].[Canvas-enrollment_dim-staging] FROM 'G:\Canvas\unpackedFiles\enrollment_dim.txt' WITH ( FIRSTROW = 2 , FIELDTERMINATOR = '\t' --, ROWTERMINATOR = '\r\n' -- This is due to unix encoding, the row terminator is not \n , ROWTERMINATOR = '0x0A' , KEEPNULLS ) GO IF OBJECT_ID(N'[dbo].[Canvas-enrollment_dim]', N'U') IS NOT NULL BEGIN DROP TABLE [dbo].[Canvas-enrollment_dim] END ; CREATE TABLE [dbo].[Canvas-enrollment_dim] ( id bigint NOT NULL , canvas_id bigint NOT NULL -- , root_account_id bigint NOT NULL , course_section_id bigint NOT NULL , role_id bigint NOT NULL , type varchar(256) NOT NULL , workflow_state varchar(256) NOT NULL , created_at datetime NOT NULL , updated_at datetime NOT NULL -- , start_at datetime NULL -- , end_at datetime NULL -- , completed_at datetime NULL , self_enrolled bit NOT NULL -- , sis_source_id varchar(256) NULL , course_id bigint NOT NULL , user_id bigint NOT NULL , last_activity_at datetime NULL ) GO INSERT INTO [dbo].[Canvas-enrollment_dim] SELECT id , canvas_id -- , root_account_id , course_section_id , role_id , type , workflow_state , CASE WHEN created_at IS NULL THEN NULL WHEN LEFT(created_at, 4) < 1900 THEN NULL ELSE CAST(created_at AS datetime) END as created_at , CASE WHEN updated_at IS NULL THEN NULL WHEN LEFT(updated_at, 4) < 1900 THEN NULL ELSE CAST(updated_at AS datetime) END as updated_at -- , CASE -- WHEN start_at IS NULL THEN NULL -- WHEN LEFT(start_at, 4) < 1900 THEN NULL -- ELSE CAST(start_at AS datetime) -- END as start_at -- , CASE -- WHEN end_at IS NULL THEN NULL -- WHEN LEFT(end_at, 4) < 1900 THEN NULL -- ELSE CAST(end_at AS datetime) -- END as end_at -- , CASE -- WHEN completed_at IS NULL THEN NULL -- WHEN LEFT(completed_at, 4) < 1900 THEN NULL -- ELSE CAST(completed_at AS datetime) -- END as completed_at , CAST( CASE WHEN self_enrolled = 'true' THEN 1 WHEN self_enrolled = 'false' THEN 0 ELSE NULL END as bit ) as self_enrolled -- , sis_source_id , course_id , user_id , CASE WHEN last_activity_at IS NULL THEN NULL WHEN last_activity_at LIKE '%' + CHAR(10) + '%' THEN NULL WHEN last_activity_at LIKE '%' + CHAR(13) + '%' THEN NULL WHEN LEFT(last_activity_at, 4) < 1900 THEN NULL ELSE CAST(last_activity_at AS datetime) END as last_activity_at FROM [dbo].[Canvas-enrollment_dim-staging] IF OBJECT_ID(N'[dbo].[Canvas-enrollment_dim-staging]', N'U') IS NOT NULL BEGIN DROP TABLE [dbo].[Canvas-enrollment_dim-staging] END ;