Cómo estás¡? Me gustaría saber si puedes ayudarme, necesito importar un archivo plano a una tabla de sql server, como el formato del archivo no tiene carácter de delimitación (los campos están por posiciones) no es apto para utilizar el bcp, ¿conoces alguna otra forma?, ¿Tienes ejemplos de cómo hacerlo?
3 Respuestas
Respuesta de gizmomega
1
1
gizmomega, Programacion en Visual Basic hace mas de 10 años
Bueno lo que necesitas hacer vos es exportar y no importar =) Lo que te recomiendo hacer es: Vos sabes las posiciones de cada campo, bien, entonces abrís el archivo de texto con un Open for Output y lo lees linea a linea con el comando Line Input volcandolo a una variable, y por medio del comando Mid(var, pos_comienzo, cantidad) Donde irias alternando las posiciones de comienzo y la cantidad de digitos a tomar. Te doy un simple ejemplo Open archivo For Output As #1 Do While Not EOF(1) Line Input #1, Var Var = Mid(Var, 1, 10) 'Primer campo por ej. var2 = Mid(Var, 11, 10) 'segundo campo 'y asi sucesivamente Loop Close #1 Saludos y si no entiendes algo no dudes en preguntar de nuevo
- Anónimoahora mismo
Respuesta
1
1
Anónimo
********************************************************************* Lo que voy a contar ahora es un poco chapucero pero te funcionara a la perfección: Lo primero que tienes que hacer es abrir el Access. Una vez abierto el Access te creas una base de datos nueva. Presionas botón derecho sobre la pantalla Tabas(en la que te aparece las opciones: "crear una tabla en vista diseño", "crear una tabla usando el asistente" y "crear una tabla introduciendo datos") y le das a la opción vincular tablas. En tipo de archivo escoges "ODBC Data Bases". Escoges la pestaña "Origen de datos de Equipo". Si ves en la lista el nombre "SQL Server" le escoges, si no: Vas a "nuevo", "origen de datos del sistema", "Siguiente", "SQL Server", "Siguiente", "Finalizar", Te aparecerá una pantalla en la que: Nombre es el nombre que le quieras dar, por ejemplo"Mi SQL Server" Descripción la que la quieras dar, por ejemplo "SQL Server Nombre de la base de datos", otro ejemplo "SQL Server Hospital" Servidor es el nombre de la maquina donde esta el servidor de la base de datos "(Local)" significa que se trata del ordenador con el que estas trabajando, si no es este ordenador vas a mis sitios de red y miras como se llama el equipo en el que esta la base de datos y lo pones en ese recuadro, ejemplos "Servidor", "Equipo5", "Principal", etc... Le das a siguiente. En id de inicio debes de poner el nombre de un usuario que tenga permisos de escritura y lectura sobre todas las tablas de la base de datos. En realidad puedes poner cualquier usuario y su contraseña, pero ten cuidado se aplican todos los permisos y restricciones, así que antes de poner un usuario aquí asegurate de que este tiene los permisos suficientes como para insertar datos en las tablas en las que quieres meter el texto plano. Generalmente se usa al administrador de SQL Server que suele ser en muchas ocasiones "SA" (sin contraseña). Si es así pones SA y contraseña lo dejas vació. Le das a "Siguiente" En establecer la siguiente base de datos como predeterminada escoges la base de datos con la que quieres trabajar, si no aparece la escribes. Ejemplo "Hospital". Dejas marcado "Establecer la siguiente base de datos ...", "Crear procedimientos almacenados ...", "Al desconectar y cuando sea conveniente ...", "Usar identificadores entrecomillados ANSI", "Usar nulos y rellenos y advertencias ANSI", "Usar el servidor SQL Server ..." "Siguiente", "Establecer el siguiente idioma ..." (Spanish) o (Español). "Siguiente", "Finalizar" y "Probar origen de datos" "Aceptar", escoges la conexión que acabas de crear, "Aceptar" Bueno si ahora todo te ha salido bien ya puedes importar los datos del fichero plano en Access "Archivo", "Obtener Datos externos", "importar". Escoges el archivo plano y te permitirá poner los delimitadores de campos donde tu quieras Escoges "ancho fijo ...", "Siguiente" y empiezas a poner delimitadores pulsando sobre la regla, el ya te abra creado unos cuantos, tu tendrás que crear solo aquellos de datos numéricos, ya que estos rellenan sus campos con ceros en vez de con espacios en blanco. "Siguiente", "en una tabla existente" y escoges la tabla en la que quieras meter los datos. En Avanzado puedes ver los campos de la tabla en donde vas a meter los datos y ay lo tienes, yo que tu antes de probar a meter los datos directamente sobre la tabla, los metería en una tabla nueva Lo que no se muy bien como se hace es como asignar cada uno de los elementos al elemento correspondiente. ********************************************************************* También puedes importar el fichero plano en Access Exportarlo y entonces te permitirá delimitar los datos común carácter que podrás cambiar en "Avanzado"
a) amigo(a). Con respecto a tu pregunta cuando un archivo no tiene delimitador es un poco más complicado y no tenemos ninguna herramienta directamente que nos pueda ayudar pero podrías generar una aplicación en VB en donde abras el archivo y vayas leyendo linea a linea el archivo y a través de la instrucción "mid" vayas tu segmentando la linea que vas cargando al programa ya que dices que tienes las posiciones donde se encuentra la información y me imagino que también la longitud de cada campo que te interesa entonces utilizas el mid de la siguiente forma mid(linealeida,posicion_de_inicio_de_lectura, Longitud_de_Campo) Esto te segmentara cada una de las posiciones que necesitas al terminar de hacer la segmentación ya puedes guardar a través de SQL los segmentos resultantes en tu base de Datos... Espero haberte ayudado y si puedo seguir haciéndolo no dudes en preguntar... Que tengas un muy feliz día