У меня есть две таблицы данных, которые я вставляю в SQL Server 2008, используя SqlBulkCopy
вот они:
QuickLabDump = new DataTable();
QuickLabDump.Columns.Add("Specimen ID", typeof(string));
QuickLabDump.Columns.Add("Client Key", typeof(int));
QuickLabDump.Columns.Add("Outcome", typeof(string));
QuickLabDump.Columns.Add("Medications", typeof(string));
QuickLabDump.Columns.Add("Date Collected", typeof(DateTime));
QuickLabDump.Columns.Add("Time Collected", typeof(TimeSpan));
QuickLabDump.Columns.Add("Date Entered", typeof(DateTime));
QuickLabDump.Columns.Add("Time Entered", typeof(TimeSpan));
QuickLabDump.Columns.Add("Date Completed", typeof(DateTime));
QuickLabDump.Columns.Add("Time Completed", typeof(TimeSpan));
QuickLabDump.Columns.Add("Test Date", typeof(DateTime));
QuickLabDump.Columns.Add("Test Time", typeof(TimeSpan));
QuickLabDump.Columns.Add("Practice Name", typeof(string));
QuickLabDump.Columns.Add("Practice Code", typeof(string));
QuickLabDump.Columns.Add("Client ID", typeof(string));
QuickLabDump.Columns.Add("Requesting Physician", typeof(string));
QuickLabDump.Columns.Add("Other Medications", typeof(string));
QuickLabDump.Columns.Add("Order Comments", typeof(string));
QuickLabDump.Columns.Add("Reference Number", typeof(string));
QuickLabDump.Columns.Add("Order Count", typeof(int));
TestResults = new DataTable();
TestResults.Columns.Add("TestName", typeof(String));
TestResults.Columns.Add("Result", typeof(Decimal));
TestResults.Columns.Add("NonNumericResult", typeof(String));
TestResults.Columns.Add("QuickLabDumpid", typeof(int));
в базе данных они:
[Specimen ID] [varchar](50) NOT NULL,
[Client Key] [int] NOT NULL,
[Outcome] [varchar](50) NOT NULL,
[Medications] [varchar](max) NULL,
[Date Collected] [date] NOT NULL,
[Time Collected] [time](0) NOT NULL,
[Date Entered] [date] NOT NULL,
[Time Entered] [time](0) NOT NULL,
[Date Completed] [date] NOT NULL,
[Time Completed] [time](0) NOT NULL,
[Test Date] [date] NULL,
[Test Time] [time](0) NULL,
[Practice Name] [varchar](500) NOT NULL,
[Practice Code] [varchar](500) NOT NULL,
[Client ID] [varchar](500) NULL,
[Requesting Physician] [varchar](500) NULL,
[Other Medications] [varchar](max) NULL,
[Order Comments] [varchar](max) NULL,
[Reference Number] [varchar](500) NULL,
[Order Count] [int] NOT NULL,
[QuickLabDumpID] [int] IDENTITY(1,1) NOT NULL,
и
[TestName] [varchar](500) NOT NULL,
[Result] [decimal](18, 4) NULL,
[NonNumericResult] [varchar](100) NULL,
[QuickLabDumpID] [int] NOT NULL,
[TestResultsID] [int] IDENTITY(1,1) NOT NULL,
[QuickLabDumpID] [int] IDENTITY(1,1) NOT NULL
это автоинкремент. каждый раз, когда вставляется строка, она увеличивается. это также внешний ключ для того же столбца в другой таблице.
вопрос У меня нет проблем с вставкой записей в любую из таблиц; однако мне нужно сохранить ссылочную целостность, чтобы QuickLabDumpID
в первой таблице совпадал с QuickLabDumpID
в другой таблице.
Я НЕ хочу использовать @@identity
, потому что я вставляю 100 миллионов строк, и это займет дни !! Я попробовал это.