none
limites RRS feed

  • Pregunta

  • Hola

    al intentar hacer un bulcado de un texto me sale el error de que una de las columnas que estoy intentando insertar es demasiada larga, tendria que declarar la columna como varchar de 2000 y en realidad solo neccesito los 250 primeros valores. He aqui la pregunta podria modificar este texto antes de su inserccion para poder decirle que si pasa de 250 caracters me coja solo los 250 caracters? o podria hacer un truncate de esta columna ?¿

    martes, 11 de mayo de 2010 8:15

Respuestas

  • ¿Siempre es el mismo número de campos? Si es así, puedes convertir la línea en array y hacer lo que te dije antes con la columna en cuestion. Posteriormente vuelves a montar la línea. Pongamos que el elemento que quieres truncar es el 12 (índice en el array 11) y que la línea originakl está en la variable $Linea:

    $arr_Linea = $Linea.Split(" ")
    If($arr_Linea[11].Length -gt 250){$arr_Linea[11] = $arr_Linea[11].SubString(0,249)}
    $LineaRetocada = [string]::Join(" ",$arr_Linea)

    Un saludo

    Fernando Reyes [MS MVP]
    MCSA 2000/2003
    MCSE 2000/2003
    MCITP EnterpriseAdministrator
    Web: http://freyes.svetlian.com
    Blog: http://urpiano.wordpress.com
    RSS: http://urpiano.wordpress.com/feed/
    freyes.champú@champú.mvps.org
    (Aclárate la cabeza si quieres escribirme)
    • Marcado como respuesta Ismael Borche viernes, 1 de abril de 2011 2:10
    martes, 11 de mayo de 2010 11:46
    Moderador

Todas las respuestas

  • Podrías usar el método SubString para que sólo te devolviera 250 caracteres:

    If($Cadena.Length -gt 250){$Cadena = $Cadena.SubString(0,249)}

    Un saludo

    Fernando Reyes [MS MVP]
    MCSA 2000/2003
    MCSE 2000/2003
    MCITP EnterpriseAdministrator
    Web: http://freyes.svetlian.com
    Blog: http://urpiano.wordpress.com
    RSS: http://urpiano.wordpress.com/feed/
    freyes.champú@champú.mvps.org
    (Aclárate la cabeza si quieres escribirme)
    martes, 11 de mayo de 2010 10:09
    Moderador
  • yo tengo algunas lienas asi en el txt

    2010-04-09 06:10:36 carpeta servidor 10.200.0.60 GET /_controls/notes/notesdata.aspx id=&ParentEntity=4&NotesView=1&EnableInlineEdit=true&EnableInsert=true 80 SCO\CA74800 10.200.0.11 HTTP/1.1 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+5.1;+.NET+CLR+1.0.3705;+.NET+CLR+1.1.4322;+Media+Center+PC+4.0;+.NET+CLR+2.0.50727;+.NET+CLR+3.0.4506.2152;+.NET+CLR+3.5.30729) mappfreportal=https://entorno.mapfre.com/C4/Actividades/default.aspx?reload=true;+JSESSIONID=0000hZ339xpz6wXh-eRIl4DXKGw:134saq8q3;+LtpaToken=dS/2IMafvBu75hc+0E8R5jk5Iy3bANjhSnOP8boNKFxB555uFbNUrpoOP11RZkP/mQAbWJIfy7PuEaEhHpVDBc1OMw6PMMfsEW5baZ1e3OWq4Jk7SlZhIalCJLXftjOOoWgu+4DBy3KjmYM/WwiBjN8HnqXxtCNC/mgAj2k2nyZw5RwHGOQ+Ac34kyMjhZ6ICkeodudHndThXZlJfy6AgCorFmkfCzvszI+5hVgleCegE46zREs+MDwGHpbmQRcLl1mUrbfzoXj9a0z+oFIP0RqABRR6aPwRqI5CahNrgZz3n0PdzYI0w091mxHy2RaLtdlQCACu0GXHpKcJyQGV59LOO+X8f1DBe+lYInUzQsD/9LP7U1WkliL/QsJTZaUp1q0mKEj1sRI=;+ISAWPLB{C34A5888-58BA-4AD7-9D22-BA952414DFF2}={AF9E7F3B-B1D8-4EB4-AFE5-FEDFAD2EC11F}; https://crm.mapfre.com/sfa/leads/edit.aspx crm.mapfre.com:443 200 0 0 7035 27853 31

    esta linea tiene que solo una fila, como ves cada columna estan separadas por espacios " ", como ves una de las columnas tiene demasiado caracters ineccesarios solo me interesaria tener los 250 primero caracteres. Quizas con un truncate del aquella parte estaria bien, teniendo en cuenta que hay 1.000.000 de filas en todo el txt (en algunos txt solo tengo 460.000)

    martes, 11 de mayo de 2010 10:18
  • ¿Siempre es el mismo número de campos? Si es así, puedes convertir la línea en array y hacer lo que te dije antes con la columna en cuestion. Posteriormente vuelves a montar la línea. Pongamos que el elemento que quieres truncar es el 12 (índice en el array 11) y que la línea originakl está en la variable $Linea:

    $arr_Linea = $Linea.Split(" ")
    If($arr_Linea[11].Length -gt 250){$arr_Linea[11] = $arr_Linea[11].SubString(0,249)}
    $LineaRetocada = [string]::Join(" ",$arr_Linea)

    Un saludo

    Fernando Reyes [MS MVP]
    MCSA 2000/2003
    MCSE 2000/2003
    MCITP EnterpriseAdministrator
    Web: http://freyes.svetlian.com
    Blog: http://urpiano.wordpress.com
    RSS: http://urpiano.wordpress.com/feed/
    freyes.champú@champú.mvps.org
    (Aclárate la cabeza si quieres escribirme)
    • Marcado como respuesta Ismael Borche viernes, 1 de abril de 2011 2:10
    martes, 11 de mayo de 2010 11:46
    Moderador
  • me salta con este error

    Exception calling "ExecuteNonQuery" with "0" argument(s): "Bulk load data conversion error (truncation) for row 3150, column 8 (cs-uri-query).
    Bulk load data conversion error (truncation) for row 3155, column 8 (cs-uri-query).

    miércoles, 12 de mayo de 2010 8:51
  • Eso es porque el tamaño de los datos que insertas es superior al tamaño de la columna 8 (sea la que sea) ¿No estará dando problemas el espacio como separador, porque haya espacios dentro de las columnas? Tommy, esos ficheros que manejas son un infierno :-P
    Un saludo

    Fernando Reyes [MS MVP]
    MCSA 2000/2003
    MCSE 2000/2003
    MCITP EnterpriseAdministrator
    Web: http://freyes.svetlian.com
    Blog: http://urpiano.wordpress.com
    RSS: http://urpiano.wordpress.com/feed/
    freyes.champú@champú.mvps.org
    (Aclárate la cabeza si quieres escribirme)
    miércoles, 12 de mayo de 2010 10:20
    Moderador
  • me llevan por el camino de la amargura pero bueno poco a poco todo funciona bien, lo que me falla es intentar que solo coja eso directamente sin tener que poner lo de las variables porque me hara que el scrip sea mas lento :(

    lo que intentare hacer es una tabla temporal

    miércoles, 12 de mayo de 2010 10:50
  • ¿No podríasal inicio del volcado incrementar el tamaño de la columna para que no casque y restituir el tamaño original a final truncándola? Seguro que es más rápido.
    Un saludo

    Fernando Reyes [MS MVP]
    MCSA 2000/2003
    MCSE 2000/2003
    MCITP EnterpriseAdministrator
    Web: http://freyes.svetlian.com
    Blog: http://urpiano.wordpress.com
    RSS: http://urpiano.wordpress.com/feed/
    freyes.champú@champú.mvps.org
    (Aclárate la cabeza si quieres escribirme)
    jueves, 13 de mayo de 2010 10:34
    Moderador