private async Task <DatabaseMetadata> GetDatabaseMetaDataAsync(CodeGeneratorResult codeGeneratorResult, DatabaseMetadata databaseMetaData) { var t = Task <DatabaseMetadata> .Factory.StartNew(() => { if (!String.IsNullOrEmpty(codeGeneratorResult.ConnectionString)) { databaseMetaData = this.GetAllTablesFromCache(codeGeneratorResult.ConnectionString); TableRepository.GetSelectedTableMetaData(databaseMetaData, codeGeneratorResult.SelectedTable); } else if (!String.IsNullOrEmpty(codeGeneratorResult.MySqlConnectionString)) { databaseMetaData = this.GetAllMySqlTables(codeGeneratorResult.MySqlConnectionString); TableRepository.GetSelectedMysqlTableMetaData(databaseMetaData, codeGeneratorResult.SelectedTable); } else if (!String.IsNullOrEmpty(codeGeneratorResult.SqlCreateTableStatement)) { databaseMetaData = SqlParserHelper.ParseSqlCreateStatement(codeGeneratorResult.SqlCreateTableStatement); } return(databaseMetaData); }); await t; return(t.Result); }
public void ParseSqlStatement() { string txt = @" USE [TestEY] GO /****** Object: Table [dbo].[Products] Script Date: 4/28/2018 12:53:17 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Products]( [Id] [int] IDENTITY(1,1) NOT NULL, [StoreId] [int] NULL, [ProductCategoryId] [int] NOT NULL, [BrandId] [int] NULL, [RetailerId] [int] NULL, [ProductCode] [nvarchar](50) NULL, [Name] [nvarchar](500) NOT NULL, [Description] [nvarchar](max) NULL, [Type] [nvarchar](50) NULL, [MainPage] [bit] NULL, [State] [bit] NULL, [Ordering] [int] NULL, [CreatedDate] [datetime2](7) NOT NULL, [ImageState] [bit] NULL, [UpdatedDate] [datetime2](7) NOT NULL, [Price] [float] NOT NULL, [Discount] [float] NOT NULL, [UnitsInStock] [int] NULL, [TotalRating] [int] NULL, [VideoUrl] [nvarchar](1500) NULL, CONSTRAINT [PK_Products_1] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO ALTER TABLE [dbo].[Products] ADD CONSTRAINT [DF_Products_CreatedDate] DEFAULT (getdate()) FOR [CreatedDate] GO ALTER TABLE [dbo].[Products] ADD CONSTRAINT [DF_Products_UpdatedDate] DEFAULT (getdate()) FOR [UpdatedDate] GO "; String mySql = @" CREATE TABLE `urunler` ( `id` int(11) NOT NULL AUTO_INCREMENT, `baslik_tr` varchar(255) DEFAULT NULL, `keywords_tr` varchar(255) DEFAULT NULL, `katID` varchar(11) DEFAULT '0', `ozet_tr` text, `detay_tr` text, `sira` int(11) DEFAULT '1000', `tarih` datetime DEFAULT NULL, `durum` tinyint(1) DEFAULT NULL, `baslik_en` varchar(255) DEFAULT NULL, `keywords_en` varchar(255) DEFAULT NULL, `ozet_en` text, `detay_en` text, `seo` varchar(255) DEFAULT NULL, `tip` int(4) DEFAULT '1' COMMENT '1: motor, 2: yelken', `link` varchar(255) DEFAULT NULL, `vitrin` int(1) DEFAULT '0', `image` varchar(255) DEFAULT NULL, `youtube` varchar(255) DEFAULT NULL, `fiyat` double DEFAULT NULL, `tamam` varchar(255) CHARACTER SET utf8 COLLATE utf8_turkish_ci DEFAULT NULL, `baslik_de` varchar(255) DEFAULT NULL, `keywords_de` varchar(255) DEFAULT NULL, `ozet_de` text, `detay_de` text, `adres_de` text, `online` tinyint(1) DEFAULT NULL, `ColorID` int(11) DEFAULT NULL, `RegionID` int(11) DEFAULT NULL, `GrapeID` int(11) DEFAULT NULL, `yemek_tercihi_tr` text, `haftanin` tinyint(1) DEFAULT NULL, `yemek_tercihi_en` text, `stok` varchar(255) DEFAULT NULL, `yeni` tinyint(1) DEFAULT NULL, `yil` varchar(255) DEFAULT NULL, `miktar` varchar(255) DEFAULT NULL, `eski_fiyat` varchar(255) DEFAULT NULL, `alkol_orani` varchar(255) DEFAULT NULL, `kdv` varchar(255) DEFAULT NULL, `encok` tinyint(1) DEFAULT NULL, `harita` text CHARACTER SET utf8 COLLATE utf8_turkish_ci NOT NULL, `baslik_ar` varchar(255) DEFAULT NULL, `keywords_ar` varchar(255) DEFAULT NULL, `ozet_ar` text, `detay_ar` text, `baslik_ru` varchar(255) DEFAULT NULL, `keywords_ru` varchar(255) DEFAULT NULL, `ozet_ru` text, `detay_ru` text, `teknik` text, `renk` varchar(255) DEFAULT NULL, `kilit` varchar(255) DEFAULT NULL, `kaplama` varchar(255) DEFAULT NULL, `aksesuar` varchar(255) DEFAULT NULL, `aksesuarr` varchar(255) DEFAULT NULL, `markaID` int(11) DEFAULT NULL, `sektorID` int(11) DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=utf8; "; mySql = @"CREATE TABLE Persons ( PersonID int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) ); "; // Create new stopwatch. Stopwatch stopwatch = new Stopwatch(); // Begin timing. stopwatch.Start(); var metadata = SqlParserHelper.ParseSqlCreateStatement(txt); // Stop timing. stopwatch.Stop(); // Write result. Console.WriteLine("Time elapsed: {0}", stopwatch.ElapsedMilliseconds); var r = new CodeGeneratorResult(); r.ModifiedTableName = "NwmProducts"; CodeProducerHelper CodeProducerHelper = new CodeProducerHelper(); CodeProducerHelper.DatabaseMetadata = metadata; CodeProducerHelper.CodeGeneratorResult = r; CodeProducerHelper.GenerateTableItem(); CodeProducerHelper.GenerateSaveOrUpdateStoredProcedure(); Console.WriteLine(r.SqlSaveOrUpdateStoredProc); }