Valores predeterminados al cargar datos con bulk insert.

31/05/2005 - 09:56 por José Antonio | Informe spam
Hola a todos, al cargar datos con BULK INSERT desde un archivo de texto. Que
se debe poner en la columna del archivo de texto para que se cargue en la
base de datos el valor predeterminado que tiene en la tabla?.


Saludos.

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
31/05/2005 - 14:06 | Informe spam
José Antonio,

Trata dejando la columna en blanco (en el archivo texto) y no usar la opcion
"KEEPNULLS".

Ejemplo:

Supongamos que tenemos una tabla con la siguiente definicion:

c1 int not null
c2 datetime null default (getdate())

y un archivo texto con la sgte info:

1,
2,2005-05-31T08:08:08.000
3,

entonces el sgte script va cargar los valores desde el archivo texto y usara
el valor default definido para la columna c2 en las filas 1 y 3.

use northwind
go

create table t1 (
c1 int not null,
c2 datetime null default (getdate())
)
go

bulk insert Northwind.dbo.[t1]
from "c:\temp\test.txt"
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = ''
)
go

select * from t1
go

drop table t1
go


AMB

"José Antonio" wrote:

Hola a todos, al cargar datos con BULK INSERT desde un archivo de texto. Que
se debe poner en la columna del archivo de texto para que se cargue en la
base de datos el valor predeterminado que tiene en la tabla?.


Saludos.



Respuesta Responder a este mensaje
#2 José Antonio
31/05/2005 - 14:45 | Informe spam
No utilizola opcion KEEPNULLS y las columnas las tengo en blanco, sin
embargo en estas columnas siempre me pone Null.

José Antonio
"Alejandro Mesa" escribió en el
mensaje news:
José Antonio,

Trata dejando la columna en blanco (en el archivo texto) y no usar la
opcion
"KEEPNULLS".

Ejemplo:

Supongamos que tenemos una tabla con la siguiente definicion:

c1 int not null
c2 datetime null default (getdate())

y un archivo texto con la sgte info:

1,
2,2005-05-31T08:08:08.000
3,

entonces el sgte script va cargar los valores desde el archivo texto y
usara
el valor default definido para la columna c2 en las filas 1 y 3.

use northwind
go

create table t1 (
c1 int not null,
c2 datetime null default (getdate())
)
go

bulk insert Northwind.dbo.[t1]
from "c:\temp\test.txt"
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = ''
)
go

select * from t1
go

drop table t1
go


AMB

"José Antonio" wrote:

Hola a todos, al cargar datos con BULK INSERT desde un archivo de texto.
Que
se debe poner en la columna del archivo de texto para que se cargue en la
base de datos el valor predeterminado que tiene en la tabla?.


Saludos.



Respuesta Responder a este mensaje
#3 Alejandro Mesa
31/05/2005 - 14:55 | Informe spam
José Antonio,

No utilizola opcion KEEPNULLS y las columnas las tengo en blanco, sin
embargo en estas columnas siempre me pone Null.



Me inmagino que estas columnas tengan asociada una restriccion de "default".
Puedes postear la definicion de la tabla y un ejemplo de la data que se esta
cargando, asi como la sentencia "bulk insert" que estas usando?


AMB

"José Antonio" wrote:

No utilizola opcion KEEPNULLS y las columnas las tengo en blanco, sin
embargo en estas columnas siempre me pone Null.

José Antonio
"Alejandro Mesa" escribió en el
mensaje news:
> José Antonio,
>
> Trata dejando la columna en blanco (en el archivo texto) y no usar la
> opcion
> "KEEPNULLS".
>
> Ejemplo:
>
> Supongamos que tenemos una tabla con la siguiente definicion:
>
> c1 int not null
> c2 datetime null default (getdate())
>
> y un archivo texto con la sgte info:
>
> 1,
> 2,2005-05-31T08:08:08.000
> 3,
>
> entonces el sgte script va cargar los valores desde el archivo texto y
> usara
> el valor default definido para la columna c2 en las filas 1 y 3.
>
> use northwind
> go
>
> create table t1 (
> c1 int not null,
> c2 datetime null default (getdate())
> )
> go
>
> bulk insert Northwind.dbo.[t1]
> from "c:\temp\test.txt"
> WITH
> (
> FIELDTERMINATOR = ',',
> ROWTERMINATOR = ''
> )
> go
>
> select * from t1
> go
>
> drop table t1
> go
>
>
> AMB
>
> "José Antonio" wrote:
>
>> Hola a todos, al cargar datos con BULK INSERT desde un archivo de texto.
>> Que
>> se debe poner en la columna del archivo de texto para que se cargue en la
>> base de datos el valor predeterminado que tiene en la tabla?.
>>
>>
>> Saludos.
>>
>>
>>



Respuesta Responder a este mensaje
#4 Jose Antonio
31/05/2005 - 21:59 | Informe spam
Alejandro esta es la definicion de la tabla:

CREATE TABLE [dbo].[CONTRATO] (

[SERIE] [varchar] (3) COLLATE Modern_Spanish_CI_AS NOT NULL ,

[ANO] [varchar] (4) COLLATE Modern_Spanish_CI_AS NOT NULL ,

[NUMERO] [varchar] (6) COLLATE Modern_Spanish_CI_AS NOT NULL ,

[FECHA] [datetime] NULL ,

[HORA] [datetime] NULL ,

[VALOR] [datetime] NULL ,

[CLIENTE] [varchar] (10) COLLATE Modern_Spanish_CI_AS NULL ,

[OBRA] [varchar] (6) COLLATE Modern_Spanish_CI_AS NULL ,

[AGENTE] [varchar] (10) COLLATE Modern_Spanish_CI_AS NULL ,

[UBICACION] [varchar] (3) COLLATE Modern_Spanish_CI_AS NULL ,

[TIPO] [int] NULL ,

[SUPEDIDO] [varchar] (25) COLLATE Modern_Spanish_CI_AS NULL ,

[FACTURADO] [char] (1) COLLATE Modern_Spanish_CI_AS NULL ,

[COMPLETO] [char] (1) COLLATE Modern_Spanish_CI_AS NULL ,

[ESTADO] [int] NULL ,

[OBSERVACIONES] [varchar] (2000) COLLATE Modern_Spanish_CI_AS NULL ,

[CREAUSER] [varchar] (15) COLLATE Modern_Spanish_CI_AS NULL ,

[MODIUSER] [varchar] (15) COLLATE Modern_Spanish_CI_AS NULL ,

[CREAFECHA] [datetime] NULL ,

[MODIFECHA] [datetime] NULL

) ON [PRIMARY]

GO

ALTER TABLE [dbo].[CONTRATO] WITH NOCHECK ADD

CONSTRAINT [PK_CONTRATO] PRIMARY KEY CLUSTERED

(

[SERIE],

[ANO],

[NUMERO]

) ON [PRIMARY]

GO

ALTER TABLE [dbo].[CONTRATO] ADD

CONSTRAINT [DF_CONTRATO_CLIENTE] DEFAULT ('') FOR [CLIENTE],

CONSTRAINT [DF_CONTRATO_OBRA] DEFAULT ('') FOR [OBRA],

CONSTRAINT [DF_CONTRATO_AGENTE] DEFAULT ('') FOR [AGENTE],

CONSTRAINT [DF_CONTRATO_UBICACION] DEFAULT ('') FOR [UBICACION],

CONSTRAINT [DF_CONTRATO_TIPO] DEFAULT (0) FOR [TIPO],

CONSTRAINT [DF_CONTRATO_SUPEDIDO] DEFAULT ('') FOR [SUPEDIDO],

CONSTRAINT [DF_CONTRATO_FACTURADO] DEFAULT ('N') FOR [FACTURADO],

CONSTRAINT [DF_CONTRATO_DEVUELTO] DEFAULT ('N') FOR [COMPLETO],

CONSTRAINT [DF_CONTRATO_ESTADO] DEFAULT (0) FOR [ESTADO],

CONSTRAINT [DF_CONTRATO_OBSERVACIONES] DEFAULT ('') FOR [OBSERVACIONES],

CONSTRAINT [DF_CONTRATO_CREAUSER] DEFAULT ('Administrador') FOR [CREAUSER],

CONSTRAINT [DF_CONTRATO_MODIUSER] DEFAULT ('') FOR [MODIUSER],

CONSTRAINT [DF_CONTRATO_CREAFECHA] DEFAULT (getdate()) FOR [CREAFECHA]

Curiosamente los campos que me fallan son los que tienen por defecto ('') o
se vacio pero no null, sin embargo los que tienen por defecto
'Administrador' y getdate() funcionan correctamente coge los datos por
defecto aunque el campo este en blanco.

El archivo esta definico con separadores de tabulador y simplemente si hay
un campo vacion hay dos tabuladores seguidos.



Saludos

"Alejandro Mesa" escribió en el
mensaje news:
José Antonio,

No utilizola opcion KEEPNULLS y las columnas las tengo en blanco, sin
embargo en estas columnas siempre me pone Null.



Me inmagino que estas columnas tengan asociada una restriccion de
"default".
Puedes postear la definicion de la tabla y un ejemplo de la data que se
esta
cargando, asi como la sentencia "bulk insert" que estas usando?


AMB

"José Antonio" wrote:

No utilizola opcion KEEPNULLS y las columnas las tengo en blanco, sin
embargo en estas columnas siempre me pone Null.

José Antonio
"Alejandro Mesa" escribió en el
mensaje news:
> José Antonio,
>
> Trata dejando la columna en blanco (en el archivo texto) y no usar la
> opcion
> "KEEPNULLS".
>
> Ejemplo:
>
> Supongamos que tenemos una tabla con la siguiente definicion:
>
> c1 int not null
> c2 datetime null default (getdate())
>
> y un archivo texto con la sgte info:
>
> 1,
> 2,2005-05-31T08:08:08.000
> 3,
>
> entonces el sgte script va cargar los valores desde el archivo texto y
> usara
> el valor default definido para la columna c2 en las filas 1 y 3.
>
> use northwind
> go
>
> create table t1 (
> c1 int not null,
> c2 datetime null default (getdate())
> )
> go
>
> bulk insert Northwind.dbo.[t1]
> from "c:\temp\test.txt"
> WITH
> (
> FIELDTERMINATOR = ',',
> ROWTERMINATOR = ''
> )
> go
>
> select * from t1
> go
>
> drop table t1
> go
>
>
> AMB
>
> "José Antonio" wrote:
>
>> Hola a todos, al cargar datos con BULK INSERT desde un archivo de
>> texto.
>> Que
>> se debe poner en la columna del archivo de texto para que se cargue en
>> la
>> base de datos el valor predeterminado que tiene en la tabla?.
>>
>>
>> Saludos.
>>
>>
>>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida