Problema con la importacion de archivo y tabla temporal con key

06/05/2005 - 15:37 por Nicola Strappazzon | Informe spam
Hola de nuevo muchachos, estoy tratando de poder importar un archivo a una
tabla con primary key, pero al hacerlo me da un error, le quito el primary
key y funciona perfectamente, el caso es q tengo que después recorrer esa
tabla y necesito usar el primary key para poder hacerlo, ya que en el
archivo q estoy importando existe un primary key pero no continuo, que es la
Cedula de Identidad, como un numero de identificación en Venezuela, y no
puedo hacer un contador con eso por q no es un numero continuo y seria MUYYY
LAAARRRGGGOOOOO recorrerlo. Por eso el poner mi idea el PK en la tabla
temporal, alguna sugerencia es bienvenida!



Gracias.

Preguntas similare

Leer las respuestas

#6 Gustavo Larriera [MVP]
06/05/2005 - 17:05 | Informe spam
Con esta modificacion al archivo, funciona:

11992015|06100102|67|11|6|0
11992015|06100101|67|16|6|0
11992015|06100103|67|14|6|0
11992015|06100108|68|13|6|0
11992015|06100206|68|14|6|0
11992015|06100205|68|13|6|0
11992015|06100201|68|15|6|0
11992015|06100207|68|13|6|0
11992015|06100203|68|14|6|0

USE tempdb
GO

CREATE TABLE #tbl_TempFile(
PK_Line INT IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL PRIMARY KEY,
FK_Estudiante INT NOT NULL,
CodMateria VARCHAR(8) NOT NULL,
FK_Periodo INT NOT NULL,
Calificacion TINYINT NOT NULL,
ESTADO TINYINT NOT NULL
)

GO

BULK INSERT #tbl_TempFile
FROM 'x:\Record Academico.TXT'
WITH(
FIELDTERMINATOR = '|',
ROWTERMINATOR = ''
)
GO

SELECT * FROM #tbl_TempFile

PK_Line FK_Estudiante CodMateria FK_Periodo Calificacion ESTADO
1 6100102 67 11 6 0
2 6100101 67 16 6 0
3 6100103 67 14 6 0
4 6100108 68 13 6 0
5 6100206 68 14 6 0
6 6100205 68 13 6 0
7 6100201 68 15 6 0
8 6100207 68 13 6 0
9 6100203 68 14 6 0

(9 row(s) affected)


Gustavo Larriera
Uruguay LatAm
Blog: http://sqljunkies.com/weblog/gux/
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.

"Gustavo Larriera [MVP]" wrote in message
news:
Pues tienes mal el archivo de datos... te faltan datos para la última
columna (la tabla tiene 6 columnas y tu archivo de datos solamente tiene
datos para las 5 columnas iniciales)

Gustavo Larriera
Uruguay LatAm
Blog: http://sqljunkies.com/weblog/gux/
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.

"Nicola Strappazzon" wrote in message
news:
Ok. te pongo todos los datos.

el formato del archivo es asi: 500 mil de esos registros hay en el
archivo plano

11992015|06100102|67|11|6
11992015|06100101|67|16|6
11992015|06100103|67|14|6
11992015|06100108|68|13|6
11992015|06100206|68|14|6
11992015|06100205|68|13|6
11992015|06100201|68|15|6
11992015|06100207|68|13|6
11992015|06100203|68|14|6

creo una tabla temporal para guardar esos datos.

CREATE TABLE #tbl_TempFile(
PK_Line INT IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL PRIMARY KEY,
FK_Estudiante INT NOT NULL,
CodMateria VARCHAR(8) NOT NULL,
FK_Periodo INT NOT NULL,
Calificacion TINYINT NOT NULL,
ESTADO TINYINT NOT NULL
)

despues executo la inscruccion para ver importar los datos.

BULK INSERT #tbl_TempFile
FROM 'D:\My Documents\Visual Studio Projects\Applications\SAVA2.0\Datos
de prueba\Record Academico.TXT'
WITH(
FIELDTERMINATOR = '|',
ROWTERMINATOR = ''
)

Y despues suelta el siguiente error:

Server: Msg 4864, Level 16, State 1, Line 1
Bulk insert data conversion error (type mismatch) for row 1, column 5
(Calificacion).
Server: Msg 4864, Level 16, State 1, Line 1
Bulk insert data conversion error (type mismatch) for row 2, column 5
(Calificacion).
Server: Msg 4864, Level 16, State 1, Line 1
Bulk insert data conversion error (type mismatch) for row 3, column 5
(Calificacion).
Server: Msg 4864, Level 16, State 1, Line 1
Bulk insert data conversion error (type mismatch) for row 4, column 5
(Calificacion).
Server: Msg 4864, Level 16, State 1, Line 1
Bulk insert data conversion error (type mismatch) for row 5, column 5
(Calificacion).
Server: Msg 4864, Level 16, State 1, Line 1
Bulk insert data conversion error (type mismatch) for row 6, column 5
(Calificacion).
Server: Msg 4864, Level 16, State 1, Line 1
Bulk insert data conversion error (type mismatch) for row 7, column 5
(Calificacion).
Server: Msg 4864, Level 16, State 1, Line 1
Bulk insert data conversion error (type mismatch) for row 8, column 5
(Calificacion).
Server: Msg 4864, Level 16, State 1, Line 1
Bulk insert data conversion error (type mismatch) for row 9, column 5
(Calificacion).
Server: Msg 4864, Level 16, State 1, Line 1
Bulk insert data conversion error (type mismatch) for row 10, column 5
(Calificacion).
Server: Msg 4864, Level 16, State 1, Line 1
Bulk insert data conversion error (type mismatch) for row 11, column 5
(Calificacion).
Server: Msg 4865, Level 16, State 1, Line 1
Could not bulk insert because the maximum number of errors (10) was
exceeded.
Server: Msg 7399, Level 16, State 1, Line 1
OLE DB provider 'STREAM' reported an error. The provider did not give any
information about the error.
OLE DB error trace [OLE/DB Provider 'STREAM' IRowset::GetNextRows
returned 0x80004005: The provider did not give any information about the
error.].
The statement has been terminated.

y alli me quede... no consigo info en internet:S

"Alejandro Mesa" wrote in
message news:

Nicola,

Vamos por parte, ok?

Hola de nuevo muchachos, estoy tratando de poder importar un archivo a
una
tabla con primary key, pero al hacerlo me da un error



Cual es el error que te da?

tabla con primary key, pero al hacerlo me da un error, le quito el
primary
key y funciona perfectamente, el caso es q tengo que después recorrer
esa
tabla y necesito usar el primary key para poder hacerlo, ya que en el
archivo q estoy importando existe un primary key pero no continuo,



Cual es la definicion de la tabla?. Danos un poco de informacion sobre
esa
primary key.

Por que necesitas que el pk sea consecutivo?

AMB

"Nicola Strappazzon" wrote:

Hola de nuevo muchachos, estoy tratando de poder importar un archivo a
una
tabla con primary key, pero al hacerlo me da un error, le quito el
primary
key y funciona perfectamente, el caso es q tengo que después recorrer
esa
tabla y necesito usar el primary key para poder hacerlo, ya que en el
archivo q estoy importando existe un primary key pero no continuo, que
es la
Cedula de Identidad, como un numero de identificación en Venezuela, y
no
puedo hacer un contador con eso por q no es un numero continuo y seria
MUYYY
LAAARRRGGGOOOOO recorrerlo. Por eso el poner mi idea el PK en la tabla
temporal, alguna sugerencia es bienvenida!



Gracias.













Respuesta Responder a este mensaje
#7 Nicola Strappazzon
06/05/2005 - 17:24 | Informe spam
Miercoles muchachos, Gracias nuevamente, de verdad que estoy agradecido por
la dedicacion que me han prestado!, jajajaja que bien ! (y) :D

"Nicola Strappazzon" wrote in message
news:%
Hola de nuevo muchachos, estoy tratando de poder importar un archivo a una
tabla con primary key, pero al hacerlo me da un error, le quito el primary
key y funciona perfectamente, el caso es q tengo que después recorrer esa
tabla y necesito usar el primary key para poder hacerlo, ya que en el
archivo q estoy importando existe un primary key pero no continuo, que es
la Cedula de Identidad, como un numero de identificación en Venezuela, y
no puedo hacer un contador con eso por q no es un numero continuo y seria
MUYYY LAAARRRGGGOOOOO recorrerlo. Por eso el poner mi idea el PK en la
tabla temporal, alguna sugerencia es bienvenida!



Gracias.


Respuesta Responder a este mensaje
#8 Nicola Strappazzon
06/05/2005 - 21:02 | Informe spam
estaba probando tu metodo, pero no me funciona muy bien por que me dice
error al no conseguir la columna PK_Line, y me parece extraño, por q hago un
select * from tabla, y si me muestra la columnas con sus respectivos ID,
pero hago un select buscando algo en esa columna en especifivo y nada... me
da el error q te mencione :S

"Alejandro Mesa" wrote in message
news:
Nicola,

El problema se debe a que el archivo de entrada no tiene los valores de la
columna identity. En este caso debes crear un archivo con la
especificacion
del formato de la data contenida por tu archivo de entrada (exactamente
igual
que cuando usas BCP) y usar la opcion FORMATFILE [ = 'format_file_path' ]
de
la sentencia BULK INSERT. La otra opcion es crear la columna identity
despues
que hayas importado la data. Esta ultima opcion te dara mejor rendimiento
puesto que mientras menos indices tengas, mas rapido sera el proceso de
importacion.


CREATE TABLE #tbl_TempFile(
KEY,
FK_Estudiante INT NOT NULL,
CodMateria VARCHAR(8) NOT NULL,
FK_Periodo INT NOT NULL,
Calificacion TINYINT NOT NULL,
ESTADO TINYINT NOT NULL
)

BULK INSERT #tbl_TempFile
FROM 'D:\My Documents\Visual Studio Projects\Applications\SAVA2.0\Datos de
prueba\Record Academico.TXT'
WITH(
FIELDTERMINATOR = '|',
ROWTERMINATOR = ''
)

alter table #tbl_TempFile
add PK_Line INT IDENTITY (1, 1) NOT NULL constraint pk_#tbl_TempFile
primary
key


AMB


"Nicola Strappazzon" wrote:

Ok. te pongo todos los datos.

el formato del archivo es asi: 500 mil de esos registros hay en el
archivo
plano

11992015|06100102|67|11|6
11992015|06100101|67|16|6
11992015|06100103|67|14|6
11992015|06100108|68|13|6
11992015|06100206|68|14|6
11992015|06100205|68|13|6
11992015|06100201|68|15|6
11992015|06100207|68|13|6
11992015|06100203|68|14|6

creo una tabla temporal para guardar esos datos.

CREATE TABLE #tbl_TempFile(
PK_Line INT IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL PRIMARY KEY,
FK_Estudiante INT NOT NULL,
CodMateria VARCHAR(8) NOT NULL,
FK_Periodo INT NOT NULL,
Calificacion TINYINT NOT NULL,
ESTADO TINYINT NOT NULL
)

despues executo la inscruccion para ver importar los datos.

BULK INSERT #tbl_TempFile
FROM 'D:\My Documents\Visual Studio Projects\Applications\SAVA2.0\Datos
de
prueba\Record Academico.TXT'
WITH(
FIELDTERMINATOR = '|',
ROWTERMINATOR = ''
)

Y despues suelta el siguiente error:

Server: Msg 4864, Level 16, State 1, Line 1
Bulk insert data conversion error (type mismatch) for row 1, column 5
(Calificacion).
Server: Msg 4864, Level 16, State 1, Line 1
Bulk insert data conversion error (type mismatch) for row 2, column 5
(Calificacion).
Server: Msg 4864, Level 16, State 1, Line 1
Bulk insert data conversion error (type mismatch) for row 3, column 5
(Calificacion).
Server: Msg 4864, Level 16, State 1, Line 1
Bulk insert data conversion error (type mismatch) for row 4, column 5
(Calificacion).
Server: Msg 4864, Level 16, State 1, Line 1
Bulk insert data conversion error (type mismatch) for row 5, column 5
(Calificacion).
Server: Msg 4864, Level 16, State 1, Line 1
Bulk insert data conversion error (type mismatch) for row 6, column 5
(Calificacion).
Server: Msg 4864, Level 16, State 1, Line 1
Bulk insert data conversion error (type mismatch) for row 7, column 5
(Calificacion).
Server: Msg 4864, Level 16, State 1, Line 1
Bulk insert data conversion error (type mismatch) for row 8, column 5
(Calificacion).
Server: Msg 4864, Level 16, State 1, Line 1
Bulk insert data conversion error (type mismatch) for row 9, column 5
(Calificacion).
Server: Msg 4864, Level 16, State 1, Line 1
Bulk insert data conversion error (type mismatch) for row 10, column 5
(Calificacion).
Server: Msg 4864, Level 16, State 1, Line 1
Bulk insert data conversion error (type mismatch) for row 11, column 5
(Calificacion).
Server: Msg 4865, Level 16, State 1, Line 1
Could not bulk insert because the maximum number of errors (10) was
exceeded.
Server: Msg 7399, Level 16, State 1, Line 1
OLE DB provider 'STREAM' reported an error. The provider did not give any
information about the error.
OLE DB error trace [OLE/DB Provider 'STREAM' IRowset::GetNextRows
returned
0x80004005: The provider did not give any information about the error.].
The statement has been terminated.

y alli me quede... no consigo info en internet:S

"Alejandro Mesa" wrote in
message
news:
>
> Nicola,
>
> Vamos por parte, ok?
>
>> Hola de nuevo muchachos, estoy tratando de poder importar un archivo a
>> una
>> tabla con primary key, pero al hacerlo me da un error
>
> Cual es el error que te da?
>
>> tabla con primary key, pero al hacerlo me da un error, le quito el
>> primary
>> key y funciona perfectamente, el caso es q tengo que después recorrer
>> esa
>> tabla y necesito usar el primary key para poder hacerlo, ya que en el
>> archivo q estoy importando existe un primary key pero no continuo,
>
> Cual es la definicion de la tabla?. Danos un poco de informacion sobre
> esa
> primary key.
>
> Por que necesitas que el pk sea consecutivo?
>
> AMB
>
> "Nicola Strappazzon" wrote:
>
>> Hola de nuevo muchachos, estoy tratando de poder importar un archivo a
>> una
>> tabla con primary key, pero al hacerlo me da un error, le quito el
>> primary
>> key y funciona perfectamente, el caso es q tengo que después recorrer
>> esa
>> tabla y necesito usar el primary key para poder hacerlo, ya que en el
>> archivo q estoy importando existe un primary key pero no continuo, que
>> es
>> la
>> Cedula de Identidad, como un numero de identificación en Venezuela, y
>> no
>> puedo hacer un contador con eso por q no es un numero continuo y seria
>> MUYYY
>> LAAARRRGGGOOOOO recorrerlo. Por eso el poner mi idea el PK en la tabla
>> temporal, alguna sugerencia es bienvenida!
>>
>>
>>
>> Gracias.
>>
>>
>>



Respuesta Responder a este mensaje
#9 Alejandro Mesa
06/05/2005 - 21:44 | Informe spam
Nicola,

No entiendo que pasa. Cual metodo escogistes?. Si escogistes el segundo,
entonces recuerda crear la tabla temporal sin la columna identity, y
adicionarla despues de que la sentencia bulk insert haya terminado. Fijate
que en el ejemplo esta comentada la columna.

> CREATE TABLE #tbl_TempFile(


...


AMB


"Nicola Strappazzon" wrote:

estaba probando tu metodo, pero no me funciona muy bien por que me dice
error al no conseguir la columna PK_Line, y me parece extraño, por q hago un
select * from tabla, y si me muestra la columnas con sus respectivos ID,
pero hago un select buscando algo en esa columna en especifivo y nada... me
da el error q te mencione :S

"Alejandro Mesa" wrote in message
news:
> Nicola,
>
> El problema se debe a que el archivo de entrada no tiene los valores de la
> columna identity. En este caso debes crear un archivo con la
> especificacion
> del formato de la data contenida por tu archivo de entrada (exactamente
> igual
> que cuando usas BCP) y usar la opcion FORMATFILE [ = 'format_file_path' ]
> de
> la sentencia BULK INSERT. La otra opcion es crear la columna identity
> despues
> que hayas importado la data. Esta ultima opcion te dara mejor rendimiento
> puesto que mientras menos indices tengas, mas rapido sera el proceso de
> importacion.
>
>
> CREATE TABLE #tbl_TempFile(
> KEY,
> FK_Estudiante INT NOT NULL,
> CodMateria VARCHAR(8) NOT NULL,
> FK_Periodo INT NOT NULL,
> Calificacion TINYINT NOT NULL,
> ESTADO TINYINT NOT NULL
> )
>
> BULK INSERT #tbl_TempFile
> FROM 'D:\My Documents\Visual Studio Projects\Applications\SAVA2.0\Datos de
> prueba\Record Academico.TXT'
> WITH(
> FIELDTERMINATOR = '|',
> ROWTERMINATOR = ''
> )
>
> alter table #tbl_TempFile
> add PK_Line INT IDENTITY (1, 1) NOT NULL constraint pk_#tbl_TempFile
> primary
> key
>
>
> AMB
>
>
> "Nicola Strappazzon" wrote:
>
>> Ok. te pongo todos los datos.
>>
>> el formato del archivo es asi: 500 mil de esos registros hay en el
>> archivo
>> plano
>>
>> 11992015|06100102|67|11|6
>> 11992015|06100101|67|16|6
>> 11992015|06100103|67|14|6
>> 11992015|06100108|68|13|6
>> 11992015|06100206|68|14|6
>> 11992015|06100205|68|13|6
>> 11992015|06100201|68|15|6
>> 11992015|06100207|68|13|6
>> 11992015|06100203|68|14|6
>>
>> creo una tabla temporal para guardar esos datos.
>>
>> CREATE TABLE #tbl_TempFile(
>> PK_Line INT IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL PRIMARY KEY,
>> FK_Estudiante INT NOT NULL,
>> CodMateria VARCHAR(8) NOT NULL,
>> FK_Periodo INT NOT NULL,
>> Calificacion TINYINT NOT NULL,
>> ESTADO TINYINT NOT NULL
>> )
>>
>> despues executo la inscruccion para ver importar los datos.
>>
>> BULK INSERT #tbl_TempFile
>> FROM 'D:\My Documents\Visual Studio Projects\Applications\SAVA2.0\Datos
>> de
>> prueba\Record Academico.TXT'
>> WITH(
>> FIELDTERMINATOR = '|',
>> ROWTERMINATOR = ''
>> )
>>
>> Y despues suelta el siguiente error:
>>
>> Server: Msg 4864, Level 16, State 1, Line 1
>> Bulk insert data conversion error (type mismatch) for row 1, column 5
>> (Calificacion).
>> Server: Msg 4864, Level 16, State 1, Line 1
>> Bulk insert data conversion error (type mismatch) for row 2, column 5
>> (Calificacion).
>> Server: Msg 4864, Level 16, State 1, Line 1
>> Bulk insert data conversion error (type mismatch) for row 3, column 5
>> (Calificacion).
>> Server: Msg 4864, Level 16, State 1, Line 1
>> Bulk insert data conversion error (type mismatch) for row 4, column 5
>> (Calificacion).
>> Server: Msg 4864, Level 16, State 1, Line 1
>> Bulk insert data conversion error (type mismatch) for row 5, column 5
>> (Calificacion).
>> Server: Msg 4864, Level 16, State 1, Line 1
>> Bulk insert data conversion error (type mismatch) for row 6, column 5
>> (Calificacion).
>> Server: Msg 4864, Level 16, State 1, Line 1
>> Bulk insert data conversion error (type mismatch) for row 7, column 5
>> (Calificacion).
>> Server: Msg 4864, Level 16, State 1, Line 1
>> Bulk insert data conversion error (type mismatch) for row 8, column 5
>> (Calificacion).
>> Server: Msg 4864, Level 16, State 1, Line 1
>> Bulk insert data conversion error (type mismatch) for row 9, column 5
>> (Calificacion).
>> Server: Msg 4864, Level 16, State 1, Line 1
>> Bulk insert data conversion error (type mismatch) for row 10, column 5
>> (Calificacion).
>> Server: Msg 4864, Level 16, State 1, Line 1
>> Bulk insert data conversion error (type mismatch) for row 11, column 5
>> (Calificacion).
>> Server: Msg 4865, Level 16, State 1, Line 1
>> Could not bulk insert because the maximum number of errors (10) was
>> exceeded.
>> Server: Msg 7399, Level 16, State 1, Line 1
>> OLE DB provider 'STREAM' reported an error. The provider did not give any
>> information about the error.
>> OLE DB error trace [OLE/DB Provider 'STREAM' IRowset::GetNextRows
>> returned
>> 0x80004005: The provider did not give any information about the error.].
>> The statement has been terminated.
>>
>> y alli me quede... no consigo info en internet:S
>>
>> "Alejandro Mesa" wrote in
>> message
>> news:
>> >
>> > Nicola,
>> >
>> > Vamos por parte, ok?
>> >
>> >> Hola de nuevo muchachos, estoy tratando de poder importar un archivo a
>> >> una
>> >> tabla con primary key, pero al hacerlo me da un error
>> >
>> > Cual es el error que te da?
>> >
>> >> tabla con primary key, pero al hacerlo me da un error, le quito el
>> >> primary
>> >> key y funciona perfectamente, el caso es q tengo que después recorrer
>> >> esa
>> >> tabla y necesito usar el primary key para poder hacerlo, ya que en el
>> >> archivo q estoy importando existe un primary key pero no continuo,
>> >
>> > Cual es la definicion de la tabla?. Danos un poco de informacion sobre
>> > esa
>> > primary key.
>> >
>> > Por que necesitas que el pk sea consecutivo?
>> >
>> > AMB
>> >
>> > "Nicola Strappazzon" wrote:
>> >
>> >> Hola de nuevo muchachos, estoy tratando de poder importar un archivo a
>> >> una
>> >> tabla con primary key, pero al hacerlo me da un error, le quito el
>> >> primary
>> >> key y funciona perfectamente, el caso es q tengo que después recorrer
>> >> esa
>> >> tabla y necesito usar el primary key para poder hacerlo, ya que en el
>> >> archivo q estoy importando existe un primary key pero no continuo, que
>> >> es
>> >> la
>> >> Cedula de Identidad, como un numero de identificación en Venezuela, y
>> >> no
>> >> puedo hacer un contador con eso por q no es un numero continuo y seria
>> >> MUYYY
>> >> LAAARRRGGGOOOOO recorrerlo. Por eso el poner mi idea el PK en la tabla
>> >> temporal, alguna sugerencia es bienvenida!
>> >>
>> >>
>> >>
>> >> Gracias.
>> >>
>> >>
>> >>
>>
>>
>>



Respuesta Responder a este mensaje
#10 Nicola Strappazzon
06/05/2005 - 22:56 | Informe spam
Ok. use el metodo 2, el llena la tabla perfectamente, le coloca la columna
con clave primaria y funciona bien, pero cuando mando hacer una busqueda con
el where no me reconose la columna con la clave primaria, Recuerda que estoy
tratando de poder migrar los 500.000 mil registros usando conjuntos y no
cursores como me hablaron aller.

Te muestro el codigo:

SET NOCOUNT ON

DECLARE @Vueltas INT
DECLARE @Cedula INT
DECLARE @Cod_Materia VARCHAR(8)
DECLARE @Periodo INT
DECLARE @Calificacion TINYINT
DECLARE @Estado TINYINT

CREATE TABLE #tbl_TempFile(
FK_Estudiante INT NOT NULL,
CodMateria VARCHAR(8) NOT NULL,
FK_Periodo INT NOT NULL,
Calificacion TINYINT NOT NULL,
ESTADO TINYINT NOT NULL)

BULK INSERT #tbl_TempFile
FROM 'D:\My Documents\Visual Studio Projects\Applications\SAVA2.0\Datos de
prueba\Archivos a Importar\Record Academico.TXT'
WITH(
FIELDTERMINATOR = '|',
ROWTERMINATOR = ''
)

ALTER TABLE #tbl_TempFile
ADD PK_Line INT IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL PRIMARY KEY

PK_Line FROM #tbl_TempFile

WHILE(@Vueltas <= (SELECT COUNT(*) FROM #tbl_TempFile))
BEGIN
SET @Cedula = (SELECT FK_Estudiante FROM #tbl_TempFile WHERE PK_Line =
@Vueltas)
SET @Cod_Materia = (SELECT CodMateria FROM #tbl_TempFile WHERE PK_Line =
@Vueltas)
SET @Periodo = (SELECT FK_Periodo FROM #tbl_TempFile WHERE PK_Line =
@Vueltas)
SET @Calificacion = (SELECT Calificacion FROM #tbl_TempFile WHERE PK_Line =
@Vueltas)
SET @Estado = (SELECT ESTADO FROM #tbl_TempFile WHERE PK_Line = @Vueltas)

EXEC SP_IMPORTAR_Calificaciones @Cedula, @Periodo, @Cod_Materia,
@Calificacion, @Estado
SET @Vueltas = @Vueltas + 1
END

DROP TABLE #tbl_TempFile

"Alejandro Mesa" wrote in message
news:
Nicola,

No entiendo que pasa. Cual metodo escogistes?. Si escogistes el segundo,
entonces recuerda crear la tabla temporal sin la columna identity, y
adicionarla despues de que la sentencia bulk insert haya terminado. Fijate
que en el ejemplo esta comentada la columna.

> CREATE TABLE #tbl_TempFile(


...


AMB


"Nicola Strappazzon" wrote:

estaba probando tu metodo, pero no me funciona muy bien por que me dice
error al no conseguir la columna PK_Line, y me parece extraño, por q hago
un
select * from tabla, y si me muestra la columnas con sus respectivos ID,
pero hago un select buscando algo en esa columna en especifivo y nada...
me
da el error q te mencione :S

"Alejandro Mesa" wrote in
message
news:
> Nicola,
>
> El problema se debe a que el archivo de entrada no tiene los valores de
> la
> columna identity. En este caso debes crear un archivo con la
> especificacion
> del formato de la data contenida por tu archivo de entrada (exactamente
> igual
> que cuando usas BCP) y usar la opcion FORMATFILE [ =
> 'format_file_path' ]
> de
> la sentencia BULK INSERT. La otra opcion es crear la columna identity
> despues
> que hayas importado la data. Esta ultima opcion te dara mejor
> rendimiento
> puesto que mientras menos indices tengas, mas rapido sera el proceso de
> importacion.
>
>
> CREATE TABLE #tbl_TempFile(
> KEY,
> FK_Estudiante INT NOT NULL,
> CodMateria VARCHAR(8) NOT NULL,
> FK_Periodo INT NOT NULL,
> Calificacion TINYINT NOT NULL,
> ESTADO TINYINT NOT NULL
> )
>
> BULK INSERT #tbl_TempFile
> FROM 'D:\My Documents\Visual Studio Projects\Applications\SAVA2.0\Datos
> de
> prueba\Record Academico.TXT'
> WITH(
> FIELDTERMINATOR = '|',
> ROWTERMINATOR = ''
> )
>
> alter table #tbl_TempFile
> add PK_Line INT IDENTITY (1, 1) NOT NULL constraint pk_#tbl_TempFile
> primary
> key
>
>
> AMB
>
>
> "Nicola Strappazzon" wrote:
>
>> Ok. te pongo todos los datos.
>>
>> el formato del archivo es asi: 500 mil de esos registros hay en el
>> archivo
>> plano
>>
>> 11992015|06100102|67|11|6
>> 11992015|06100101|67|16|6
>> 11992015|06100103|67|14|6
>> 11992015|06100108|68|13|6
>> 11992015|06100206|68|14|6
>> 11992015|06100205|68|13|6
>> 11992015|06100201|68|15|6
>> 11992015|06100207|68|13|6
>> 11992015|06100203|68|14|6
>>
>> creo una tabla temporal para guardar esos datos.
>>
>> CREATE TABLE #tbl_TempFile(
>> PK_Line INT IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL PRIMARY
>> KEY,
>> FK_Estudiante INT NOT NULL,
>> CodMateria VARCHAR(8) NOT NULL,
>> FK_Periodo INT NOT NULL,
>> Calificacion TINYINT NOT NULL,
>> ESTADO TINYINT NOT NULL
>> )
>>
>> despues executo la inscruccion para ver importar los datos.
>>
>> BULK INSERT #tbl_TempFile
>> FROM 'D:\My Documents\Visual Studio
>> Projects\Applications\SAVA2.0\Datos
>> de
>> prueba\Record Academico.TXT'
>> WITH(
>> FIELDTERMINATOR = '|',
>> ROWTERMINATOR = ''
>> )
>>
>> Y despues suelta el siguiente error:
>>
>> Server: Msg 4864, Level 16, State 1, Line 1
>> Bulk insert data conversion error (type mismatch) for row 1, column 5
>> (Calificacion).
>> Server: Msg 4864, Level 16, State 1, Line 1
>> Bulk insert data conversion error (type mismatch) for row 2, column 5
>> (Calificacion).
>> Server: Msg 4864, Level 16, State 1, Line 1
>> Bulk insert data conversion error (type mismatch) for row 3, column 5
>> (Calificacion).
>> Server: Msg 4864, Level 16, State 1, Line 1
>> Bulk insert data conversion error (type mismatch) for row 4, column 5
>> (Calificacion).
>> Server: Msg 4864, Level 16, State 1, Line 1
>> Bulk insert data conversion error (type mismatch) for row 5, column 5
>> (Calificacion).
>> Server: Msg 4864, Level 16, State 1, Line 1
>> Bulk insert data conversion error (type mismatch) for row 6, column 5
>> (Calificacion).
>> Server: Msg 4864, Level 16, State 1, Line 1
>> Bulk insert data conversion error (type mismatch) for row 7, column 5
>> (Calificacion).
>> Server: Msg 4864, Level 16, State 1, Line 1
>> Bulk insert data conversion error (type mismatch) for row 8, column 5
>> (Calificacion).
>> Server: Msg 4864, Level 16, State 1, Line 1
>> Bulk insert data conversion error (type mismatch) for row 9, column 5
>> (Calificacion).
>> Server: Msg 4864, Level 16, State 1, Line 1
>> Bulk insert data conversion error (type mismatch) for row 10, column 5
>> (Calificacion).
>> Server: Msg 4864, Level 16, State 1, Line 1
>> Bulk insert data conversion error (type mismatch) for row 11, column 5
>> (Calificacion).
>> Server: Msg 4865, Level 16, State 1, Line 1
>> Could not bulk insert because the maximum number of errors (10) was
>> exceeded.
>> Server: Msg 7399, Level 16, State 1, Line 1
>> OLE DB provider 'STREAM' reported an error. The provider did not give
>> any
>> information about the error.
>> OLE DB error trace [OLE/DB Provider 'STREAM' IRowset::GetNextRows
>> returned
>> 0x80004005: The provider did not give any information about the
>> error.].
>> The statement has been terminated.
>>
>> y alli me quede... no consigo info en internet:S
>>
>> "Alejandro Mesa" wrote in
>> message
>> news:
>> >
>> > Nicola,
>> >
>> > Vamos por parte, ok?
>> >
>> >> Hola de nuevo muchachos, estoy tratando de poder importar un
>> >> archivo a
>> >> una
>> >> tabla con primary key, pero al hacerlo me da un error
>> >
>> > Cual es el error que te da?
>> >
>> >> tabla con primary key, pero al hacerlo me da un error, le quito el
>> >> primary
>> >> key y funciona perfectamente, el caso es q tengo que después
>> >> recorrer
>> >> esa
>> >> tabla y necesito usar el primary key para poder hacerlo, ya que en
>> >> el
>> >> archivo q estoy importando existe un primary key pero no continuo,
>> >
>> > Cual es la definicion de la tabla?. Danos un poco de informacion
>> > sobre
>> > esa
>> > primary key.
>> >
>> > Por que necesitas que el pk sea consecutivo?
>> >
>> > AMB
>> >
>> > "Nicola Strappazzon" wrote:
>> >
>> >> Hola de nuevo muchachos, estoy tratando de poder importar un
>> >> archivo a
>> >> una
>> >> tabla con primary key, pero al hacerlo me da un error, le quito el
>> >> primary
>> >> key y funciona perfectamente, el caso es q tengo que después
>> >> recorrer
>> >> esa
>> >> tabla y necesito usar el primary key para poder hacerlo, ya que en
>> >> el
>> >> archivo q estoy importando existe un primary key pero no continuo,
>> >> que
>> >> es
>> >> la
>> >> Cedula de Identidad, como un numero de identificación en Venezuela,
>> >> y
>> >> no
>> >> puedo hacer un contador con eso por q no es un numero continuo y
>> >> seria
>> >> MUYYY
>> >> LAAARRRGGGOOOOO recorrerlo. Por eso el poner mi idea el PK en la
>> >> tabla
>> >> temporal, alguna sugerencia es bienvenida!
>> >>
>> >>
>> >>
>> >> Gracias.
>> >>
>> >>
>> >>
>>
>>
>>



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida