Foros del Web » Programando para Internet » PHP »

Error de conversion CSV a SQL server 2005

Estas en el tema de Error de conversion CSV a SQL server 2005 en el foro de PHP en Foros del Web. Hola buenas!, Tengo este código para subir mi archivo CSV a una base de datos SQL 2005 usando PHP, pero me manda un error de ...
  #1 (permalink)  
Antiguo 23/04/2014, 23:07
 
Fecha de Ingreso: diciembre-2012
Ubicación: .huihuihi
Mensajes: 21
Antigüedad: 12 años
Puntos: 0
Pregunta Error de conversion CSV a SQL server 2005

Hola buenas!,


Tengo este código para subir mi archivo CSV a una base de datos SQL 2005 usando PHP, pero me manda un error de conversión de string a datatime

Código PHP:
 $file $_FILES['archivo']['tmp_name'];
          
          
          
          
          
$ext_permitidas = array('csv');
          
$partes_nombre explode('.'$nombre);
          
$extension end$partes_nombre );
          
$ext_correcta in_array($extension$ext_permitidas);
          
          
          
$handle =fopen($file"r");
          while((
$fileop fgetcsv($handle,1000,","))!==false)
          {
          

          
$uno $fileop[0];
          
$dos $fileop[1]; 
          
$tres $fileop[2];
          
$cuatro $fileop[3];
          
$cinco $fileop[4]; 
          
$seis $fileop[5];
          
$siete $fileop[6]; 
          
$ocho $fileop[7];
          
$nueve $fileop[8];
          
$diez $fileop[9];
          
          
          
          
$sqlmssql_query("INSERT INTO asistencia VALUES('$uno', '$dos','$tres','$cuatro','$cinco',
          '$seis','$siete','$ocho','$nueve','$diez')"
); 
Esta es la estructura de mi tabla

Código:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[asistencia](
	[id_datos] [int] IDENTITY(1,1) NOT NULL,
	[no_empleado] [int] NULL,
	[Nombre] [nvarchar](150) NULL,
	[fecha] [datetime] NULL,
	[hora_entra] [datetime] NULL,
	[hora_sale] [datetime] NULL,
	[reg_entra] [datetime] NULL,
	[reg_sale] [datetime] NULL,
	[ent_tarde] [datetime] NULL,
	[sal_antes] [datetime] NULL,
	[falta] [nvarchar](50) NULL,
 CONSTRAINT [PK_asistencia] PRIMARY KEY CLUSTERED 
(
	[id_datos] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
Y aqui esta el CSV por si le quieren echar un vistazo..

https://m e g a.co.nz/#!1p4xQbBI!2M2B3diFbUlYW-2ocg8uaNcNVkbfO7rqOsKf2rGc7j4

(quitarle los espacios)

Me inserta registros pero no todos...me manda un error que es:
Código:
Warning: mssql_query() [function.mssql-query]: message: Error de conversión al convertir una cadena de caracteres a datetime. (severity 16) in C:\wamp\www\le\subir_archivo.php on line 41

Warning: mssql_query() [function.mssql-query]: Query failed in C:\wamp\www\le\subir_archivo.php on line 41
Alguna idea?? o conocen una manera mas practica de realizar esta insercion?

Muchas Gracias por su ayuda!!!
  #2 (permalink)  
Antiguo 24/04/2014, 05:10
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Error de conversion CSV a SQL server 2005

Es muy probable que haya problemas para reconocer el formato de fecha cuando llega como una cadena de tipo "00/00/0000 00:00:00", por ejemplo. Hay que ver si SQL Servver lo está tomando bien.
Yo te sugeriría que usaras para ese campo los delimitadores "#", por ejemplo, o los que corresponda para el tipo de dato, ya que algunos DBMS pueden generar conflictos cuando lo que llega es una cadena y se espera un número o una fecha, y viceversa.
No todos los DBMS hacen buenas conversiones implícitas, ni con todas las configuraciones.

Para darte un ejemplo, si el formato de fecha esperado por SQL Server es MM/DD/AAAA, entonces estos dos registros generarían un error de conversión:
Cita:
41011,Eduardo,13/03/2014,08:00,15:30,,15:32,1:00,,
41011,Eduardo,14/03/2014,08:00,15:30,08:57,,0:57,1:00,
porque no existen los meses 13 y 14.

No te olvides que cuando operas SQL dentro del PHP, el SQL tiene sus propias reglas, que cambian según el DBMS en algunas cosas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 24/04/2014, 08:16
 
Fecha de Ingreso: diciembre-2012
Ubicación: .huihuihi
Mensajes: 21
Antigüedad: 12 años
Puntos: 0
Pregunta Respuesta: Error de conversion CSV a SQL server 2005

Muchas gracias por pasar gnzsoloyo, de echo he estado revisando esa parte desde que me saltaba este error. Como mencioné, si llegan ha insertarse registros a excepción de uno o unos cuantos, pero las fechas al ser insertadas inserta la correspondencia con los campos de la base de datos (AAAA/MM/DD) y el campo de tiempo también respeta la convención, lo mas raro es que solo en muy pocos registros me manda este error, de echo he separado el CSV en dos partes y solo en los últimos registros de la segunda parte me mandan el error que comenté ya que en la primera parte pasa sin problema alguno.

Por el momento no tengo idea a que se deba ojalá y puedas ayudarme.

Saludos.
  #4 (permalink)  
Antiguo 24/04/2014, 10:24
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Error de conversion CSV a SQL server 2005

¿Has probado importar directamente el CSV desde SQL Server?
Si lo toma bien, el problema está en el manejo de PHP, si lo tma mal... tienes problemas en el archivo.

Es una prueba que puede guiarte para evitar perder esfuerzos en la parte equivocada...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 24/04/2014, 14:38
 
Fecha de Ingreso: diciembre-2012
Ubicación: .huihuihi
Mensajes: 21
Antigüedad: 12 años
Puntos: 0
Pregunta Respuesta: Error de conversion CSV a SQL server 2005

Cita:
Iniciado por gnzsoloyo Ver Mensaje
¿Has probado importar directamente el CSV desde SQL Server?
Si lo toma bien, el problema está en el manejo de PHP, si lo tma mal... tienes problemas en el archivo.

Es una prueba que puede guiarte para evitar perder esfuerzos en la parte equivocada...


Intentaré hoy por la tarde, después te digo que pasó, muchas gracias por tu ayuda.


Etiquetas: conversion, csv, fecha, registro, server, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:00.