2015-08-18 4 views
0

В SQL Server, как вставлять значения по умолчанию при использовании команды bcp?SQL Server - Вставка значений по умолчанию bcp

Сценария из приведенной ниже таблицы, в то время как работают bcp команду, столбец «Сно» является столбцом идентификаторов, где значения должны увеличиваться автоматически на 1, данные для values колонок должны поступать из файла данных и значений date столбца автоматически обновляются до сегодняшнего дня дата и значения для столбца состояния должны обновляться как Flag1.

Для нормального использования Я знаю, как создать файл формата bcp. В приведенном выше сценарии, как я могу создать файл формата и вставить данные в таблицу1?

Формат таблицы:

CREATE TABLE [dbo].[table1] 
(
    SNo int IDENTITY(1,1) NOT NULL, 
    values varchar(13) NOT NULL, 
    date datetime NOT NULL, 
    status varchar(50) 
) 

Table1:

sno | values | date | status 
-----+----------+------------+-------- 
1 | 111111 | 2015-08-17 | Flag1 
2 | 222222 | 2015-08-17 | Flag1 
+0

Замечание: * пожалуйста * не называйте ваши столбцы такими, как 'date' - в первую очередь это ** зарезервированное ключевое слово ** (для типа данных) в SQL Server 2008 и новее, а во-вторых, это не выразительно - какая дата? Используйте что-то более значимое - 'OrderDate',' HireDate' - что угодно - просто не только 'date' на себе .... (то же самое относится к' значениям' или 'status' тоже ......) –

+0

here: let я Google, что для вас. Я взял ваш вопрос, и это первый результат. https://msdn.microsoft.com/en-us/library/ms186335.aspx – Jeremy

ответ

1

В принципе, вам просто нужно положить 0 как номер столбца хоста, чтобы избежать колонки от быть вставлено bcp.

Так если у вас есть ограничение по умолчанию для вашего [date] колонки:

ALTER TABLE dbo.table1 
ADD CONSTRAINT DF_Table1_Date DEFAULT(SYSDATETIME()) FOR [Date] 

и каким-то образом вы также создать какой-нибудь способ, чтобы вычислить [status] - то вы можете использовать этот формат файла:

12.0 
4 
1 SQLCHAR   0 12 ";"  0 SNo  "" 
2 SQLCHAR   0 13 ";"  2 values  SQL_Latin1_General_CP1_CI_AS 
3 SQLDATETIME  0 24 ";"  0 date  "" 
4 SQLCHAR   0 50 "\r\n" 0 status  SQL_Latin1_General_CP1_CI_AS 

и, следовательно, вы действительно будете импортировать только столбец [values] - SNo автоматически устанавливается SQL Server (столбец идентичности), столбец [date] автоматически установите на текущую дату & время с помощью ограничения по умолчанию - теперь вам нужно будет найти способ заполнить столбец [status] после или после вставки!

Смежные вопросы