none
Bulk Insert no me respeta el archivo de formato RRS feed

  • Pregunta

  • Tengo una duda ya que no conocía el bulk insert.

    Tengo mi tabla así:

    Tengo mi archivo de formato de esta forma:

    10.0

    8
    1       SQLCHAR             0       12        ","      1     id_cliente                             ""
    2       SQLCHAR             0       1000    ","      2     aviso                                  Modern_Spanish_CI_AS
    3       SQLCHAR             0       100      ","      3     remitente                            Modern_Spanish_CI_AS
    4       SQLCHAR             0       50        ","      4     titulo                                    Modern_Spanish_CI_AS
    5       SQLCHAR             0       24        ","      5     fecha_enviado                     ""
    6       SQLCHAR             0       24        ","      6     fecha_leido                          ""
    7       SQLCHAR             0       3          ","      7     estado                                  ""
    8       SQLCHAR             0       12      "\r\n"   8     TipoUsuario                        ""

    Y mi archivo csv es: 

    id_cliente,aviso,remitente,titulo,fecha_enviado,fecha_leido,estado,TipoUsuario,ColumnaIncorrecta
    9,Aviso al cliente ,Daniel,Aviso 3,22/03/2012,22/03/2012,1,1,300

    Como verán. la última columna (ColumnaIncorrecta) no está ni en el archivo de formato ni en la tabla, con la intención de que no me haga el bulk insert.

    Aun no logro entender bien qué hace, sé que esa sentencia genera un archivo de error: .ERROR.txt.

    Y al ejecutar el bulk insert me lanza el siguiente error:

    Error 4861: Cannot bulk load because the file "C:\Inetpub\wwwroot\*****\csv\errores\Incorrecto.csv .txt.Error.Txt" could not be opened. Operating system error code 80(failed to retrieve text for this error. Reason: 1815).

     

    Mi duda es, se supone que no me debe dejar meter datos a la tabla por el hecho de tener una columna de mas?

    Y además. veo que me está poniendo un espacio en blanco en: 

    Incorrecto.csv .txt.Error.Txt

    La instruccion la contuyo así:

    SET @archivoError = REPLACE(@archivo,'\csv\','\csv\errores\')

    SET @rutaFormatos = 'C:\Inetpub\wwwroot\****\formatos\' + @formatFile

    SET @rutaFormatos = ''''+@rutaFormatos+''''

    SET @sql = 'BULK INSERT ' + @tabla + ' FROM'

    SET @sql = @sql + '''' + @archivo + ''''

    SET @sql = @sql + 'WITH(FORMATFILE= '+ @rutaFormatos +', FIRE_TRIGGERS, FIRSTROW = 2, CHECK_CONSTRAINTS, ERRORFILE ='''+                               @archivoError + '.txt' +''',  DATAFILETYPE = ''char'', FIELDTERMINATOR = '','', ROWTERMINATOR = ''\n'')'

    select @sql

    EXECUTE(@sql)
    viernes, 23 de marzo de 2012 21:18

Respuestas

Todas las respuestas

  • Hola.

    No descartaría que el problema sea ese, pero el mensaje de error que recibes no te dice que no se pueda importar el fichero, sino que no puede abrirse. Trata de ejecutar el bulk insert a mano, no sea que el problema no esté con el fichero de formato. Y cuando tengas la línea de comandos a ejecutar, realizas la automatización.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande

    sábado, 24 de marzo de 2012 7:53
    Moderador
  • Una pregunta ... vos indicas lo siguiente

    Y mi archivo csv es:

    id_cliente,aviso,remitente,titulo,fecha_enviado,fecha_leido,estado,TipoUsuario,ColumnaIncorrecta
    9,Aviso al cliente ,Daniel,Aviso 3,22/03/2012,22/03/2012,1,1,300

    El tema es que la tabla y el CSV tienen que tener el mismo formato, esto es ... se solucionaria si tu CSV fuese:

    id_cliente,aviso,remitente,titulo,fecha_enviado,fecha_leido,estado,TipoUsuario
    9,Aviso al cliente ,Daniel,Aviso 3,22/03/2012,22/03/2012,1,1,300

    Saludos


    Systems Engineer
    Developer & Research Engineer
    DBA SQL Server 2005/2008
    VG Cloud Inc
    My Profile

    miércoles, 28 de marzo de 2012 3:56
  • Hola:

    Tal como dices, te pone un espacio en el nombre del fichero: "Incorrecto.csv .txt.Error.Txt", el cual (casi seguro no debería estar)

    Verifica la variable @Archivo (que es la que 'supongo' contiene el nombre del archivo) y verificala, es posible que el error sea cuando 'montas' el nombre del archivo.

    Saludos

    • Propuesto como respuesta Focus Media miércoles, 18 de abril de 2012 10:42
    miércoles, 28 de marzo de 2012 9:07
  • Hola.

    ¿Resolviste el problema?


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande

    jueves, 5 de abril de 2012 15:44
    Moderador