Spaces:
Sleeping
Sleeping
| :setvar DemoDatabase "CustomerAIDemo2022" | |
| :setvar CsvPath "D:\DSA\Demo_DBMS\data\customer_feedback.csv" | |
| IF DB_ID(N'$(DemoDatabase)') IS NULL | |
| BEGIN | |
| EXEC(N'CREATE DATABASE [$(DemoDatabase)]'); | |
| END | |
| GO | |
| USE [$(DemoDatabase)]; | |
| GO | |
| -- Drop dependent tables first to avoid FK conflicts when reseeding. | |
| IF OBJECT_ID(N'dbo.RealFeedbackEmbedding', N'U') IS NOT NULL | |
| DROP TABLE dbo.RealFeedbackEmbedding; | |
| GO | |
| IF OBJECT_ID(N'dbo.RealEmbeddingMetadata', N'U') IS NOT NULL | |
| DROP TABLE dbo.RealEmbeddingMetadata; | |
| GO | |
| IF OBJECT_ID(N'dbo.FeedbackEmbedding', N'U') IS NOT NULL | |
| DROP TABLE dbo.FeedbackEmbedding; | |
| GO | |
| IF OBJECT_ID(N'dbo.CustomerFeedback', N'U') IS NOT NULL | |
| DROP TABLE dbo.CustomerFeedback; | |
| GO | |
| IF OBJECT_ID(N'dbo.CustomerFeedbackStage', N'U') IS NOT NULL | |
| DROP TABLE dbo.CustomerFeedbackStage; | |
| GO | |
| IF OBJECT_ID(N'dbo.QueryEmbedding', N'U') IS NOT NULL | |
| DROP TABLE dbo.QueryEmbedding; | |
| GO | |
| CREATE TABLE dbo.CustomerFeedback | |
| ( | |
| FeedbackId INT IDENTITY(1,1) NOT NULL | |
| CONSTRAINT PK_CustomerFeedback PRIMARY KEY CLUSTERED, | |
| MaskedCustomerId NVARCHAR(30) NOT NULL, | |
| Product NVARCHAR(100) NOT NULL, | |
| CustomerSegment NVARCHAR(50) NOT NULL, | |
| Region NVARCHAR(50) NOT NULL, | |
| Channel NVARCHAR(50) NULL, | |
| RiskLevel NVARCHAR(20) NULL, | |
| CreatedAt DATETIME2(0) NOT NULL, | |
| SourceIssueGroup NVARCHAR(80) NOT NULL, | |
| FeedbackText NVARCHAR(MAX) NOT NULL | |
| ); | |
| GO | |
| CREATE INDEX IX_CustomerFeedback_BusinessFilters | |
| ON dbo.CustomerFeedback | |
| ( | |
| CustomerSegment, | |
| RiskLevel, | |
| Product, | |
| CreatedAt | |
| ) | |
| INCLUDE (Channel, Region, SourceIssueGroup); | |
| GO | |
| CREATE TABLE dbo.CustomerFeedbackStage | |
| ( | |
| MaskedCustomerId NVARCHAR(30) NOT NULL, | |
| Product NVARCHAR(100) NOT NULL, | |
| CustomerSegment NVARCHAR(50) NOT NULL, | |
| Region NVARCHAR(50) NOT NULL, | |
| Channel NVARCHAR(50) NULL, | |
| RiskLevel NVARCHAR(20) NULL, | |
| CreatedAt NVARCHAR(40) NOT NULL, | |
| SourceIssueGroup NVARCHAR(80) NOT NULL, | |
| FeedbackText NVARCHAR(MAX) NOT NULL | |
| ); | |
| GO | |
| BULK INSERT dbo.CustomerFeedbackStage | |
| FROM '$(CsvPath)' | |
| WITH | |
| ( | |
| FORMAT = 'CSV', | |
| FIRSTROW = 2, | |
| FIELDQUOTE = '"', | |
| CODEPAGE = '65001', | |
| ROWTERMINATOR = '0x0d0a', | |
| TABLOCK | |
| ); | |
| GO | |
| INSERT INTO dbo.CustomerFeedback | |
| ( | |
| MaskedCustomerId, Product, CustomerSegment, Region, Channel, | |
| RiskLevel, CreatedAt, SourceIssueGroup, FeedbackText | |
| ) | |
| SELECT | |
| MaskedCustomerId, Product, CustomerSegment, Region, Channel, | |
| RiskLevel, CONVERT(DATETIME2(0), CreatedAt, 126), | |
| SourceIssueGroup, FeedbackText | |
| FROM dbo.CustomerFeedbackStage; | |
| GO | |
| DROP TABLE dbo.CustomerFeedbackStage; | |
| GO | |
| SELECT | |
| COUNT(*) AS imported_rows, | |
| MIN(CreatedAt) AS min_created_at, | |
| MAX(CreatedAt) AS max_created_at, | |
| COUNT(DISTINCT Product) AS distinct_products, | |
| SUM(CASE WHEN RiskLevel = N'Critical' THEN 1 ELSE 0 END) AS critical_count | |
| FROM dbo.CustomerFeedback; | |
| GO | |
| PRINT 'CSV import into SQL Server 2022-compatible schema complete.'; | |
| PRINT 'Next: scripts\build_real_embeddings_ollama.ps1 -Database $(DemoDatabase) -Model bge-m3'; | |
| GO | |