SQL - Importación de Datos en SQL

 
Vista:

Importación de Datos en SQL

Publicado por Camila (6 intervenciones) el 25/02/2008 20:29:48
Hola que tal me podrian ayudar en saber como le puedo hacer para importar datos pero no de forma masiva es decir tengo un archivo de texto de 10 millones de registros y necesito imoprtarlos a SQL pero en el registro 3 millones me envía un mensaje de error, me imagino que que no ha de tener la estructura correspondiente, por lo tanto quiero abrirlo y ningun NotePad, o TexPad me lo abre me dice que son muchos registros, entonces se me ocurre realizar la importanción poco a poco pero la verdad no se si existe una forma de importarlos poco a poco no se igual de un millon en un millon y después la junto o quien podría sugeir algo, espero que la explciación no este tan mal planteada, agradeciendo su tiempo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Importación de Datos en SQL

Publicado por Homero (1 intervención) el 25/02/2008 21:40:52
Hola:
¿Qué tal si al crear la consulta de importacion indicas la cantidad de registros que deseas traer? La idea sería, por ejemplo:
select top 5000 campo1, campo2, campo3 from tabla

Este select te traería los primeros 5000 registros.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Importación de Datos en SQL

Publicado por Camila (6 intervenciones) el 25/02/2008 22:36:05
Muchas gracias por haberme respondido, lo que pasas es que mi conocimiento en SQL es limitado no me podrias ayudar mas especificamente, es que no tengo ni idea como lo implementaría, disculpa las molestias, y gracias nuevamente por tu tiempo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Importación de Datos en SQL

Publicado por Isaias (5072 intervenciones) el 26/02/2008 00:14:24
¿Cual es el maximo de longitud de tu registro, 250 posiciones?

Bueno, creas una tabla con una sola columna varchar (250) y haces un simple

INSERT INTO TuTabla (Toculmna)
EXEC master..xp_cmdshell 'type c: ucarpeta uarchito.txt'

Una vez estando en tu tabla de SQL, revisas cual de ellas tiene menos longitud

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Importación de Datos en SQL

Publicado por Camila (6 intervenciones) el 27/02/2008 15:50:08
Gracias por el tiempo en atedender mi pregunta sin embargo la verdad como estoy comenzando con SQL, no comprendo bien tu indicación Isaias este significa que al yo tener que columna es la que esta defasada podría hacer que se alíne a las demas y así poder insertar todos los registros??, por que solo quiero importar un archivo de TXT con 10 millones de registros a mi manejador de SQL solo que no me permite integrar todos por que en el registro 3 millones (por así decirlo) me dice que hay un desfasamiento o un caracter de más... y por lo tanto me rechaza toda la transacción, es por eso que opte por preguntar si habia una forma de hacerlo por fracciones o como realizar esta importación al SQL

Gracias nuevamente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Importación de Datos en SQL

Publicado por Isaias (5072 intervenciones) el 27/02/2008 19:35:39
Camila

Al estar procesando un archivo TEXTO-PLANO, totalmente AJENO al montor de SQL Server, este, no puede identificar si algun registro esta mas corto o mas largo de lo definido en tu tabla a depositar tus registros.

¿Porque?

Simple, porque el archivo pertenece a OS (Sistema Operativo), no al motor de SQL Server.

Ahora bien, NO PUEDES indicarle a SQL Server (BCP o BULK INSERT), que si hay un registro, fuera de lo estipulado, no lo procese (o ignore) y continue con los demas.

¿Es frustrante?, SI, pero cualquier otro motor, por mas potente que sea, se comporta de la misma forma (en las IMPORTACIONES MASIVAS DE DATOS).

¿Que hacer?

1.- Pedir a la persona que te pasa el archivo, TODOS los registros, sean de la misma longitud.
2.- Importar TOTALMENTE el archivo (asi sean 20 millones de registros) y verificar que registro no cumple con las condiciones que tu necesitas.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Importación de Datos en SQL

Publicado por Isaias (5072 intervenciones) el 27/02/2008 19:39:19
** Ademdum **

En el paso 2, ya podrias procesar registro por registro y aquel que no cumpla con las condiciones, guardarlo en una bitacora, para poder "reclamar" al que genero dicho registro.

Al decir PROCESAR, me refiero que podrias desarrollar un PROCEDURE que lea tu tabla de importacion masiva, crear un LOOP y pasar los registros "buenos" a tu tabla destino.

Pero ya tendrias 19, 999, 999 registros procesados.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Importación de Datos en SQL

Publicado por Camila (6 intervenciones) el 28/02/2008 02:35:34
Isaias

Pues muchisimas gracias por tomarte el tiempo a esta pregunta, voy a ver todos lo medios necesario para gestionar nuevamente la información y hare las indicaciones que me mencionaste.

Agradeciendo tu atencón y apoyo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Importación de Datos en SQL

Publicado por Isaias (5072 intervenciones) el 28/02/2008 02:42:06
Camila

Esto que te comento, no es algo "inventado", es vivencia pura que he tenido en el proceso de archivos planos que deben "subirse" a SQL Server.

Para eso, yo declaraba una columna de tipo IDENTITY (Numeric) y en base a esta, iba procesando la informacion, ¿Cual fue mi primera verificacion?

IF (SELECT DATALENGH(REGISTRO) FROM ##TEMPORAL) < 120
BEGIN
'Error de longitud'

Suponiendo que la longitud deberia ser de 120, ni mas, ni menos........

Actualizaba la bandera del registro en ERROR y seguia con el otro........

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar