Estoy buscando un código de procedimiento almacenado que abra un archivo de texto, lea en varios miles de líneas y agregue el código a una tabla en la base de datos. ¿Hay una manera simple de implementar esto en T-SQL?Procedimiento almacenado para abrir y leer un archivo de texto
Respuesta
Si el archivo está listo para cargar "como- es"(no hay transformaciones de datos o asignaciones complejas requieren), puede utilizar el comando de inserción masiva:
CREATE PROC dbo.uspImportTextFile
AS
BULK INSERT Tablename FROM 'C:\ImportFile.txt' WITH (FIELDTERMINATOR ='|', FIRSTROW = 2)
Recomendaría usar SSIS. Está diseñado para hacer este tipo de cosas (especialmente si necesita hacerlo regularmente).
Here is a good link que repasa un archivo de texto y lo inserta en la base de datos.
buena respuesta, utilizando un sproc TSQL normal para esto definitivamente no es el camino a seguir. –
¿por qué no utilizar try user functions? De esta forma puede usar .NET para acceder y manejar su archivo.
Control hacia fuera este post
La forma más eficiente de la inserción de muchos registros en una tabla es utilizar BULK INSERT (creo que esto es lo que el BCP Utility usos, y así debe ser tan rápido).
BULK INSERT
está optimizado para la inserción de grandes cantidades de datos y está destinado a ser utilizado cuando el rendimiento de una declaración simple INSERT
simplemente no funcionará.
Si BULK INSERT
no es lo que buscas, entonces es posible que desee echar un vistazo al siguiente artículo de una técnica más sencilla:
vinculado en el artículo es una procedimiento almacenado uftReadFileAsTable
que parece que debe ser lo suficientemente versátil para lograr lo que busca.
Si no es así, entonces al menos puede utilizar el procedimiento almacenado como un ejemplo de cómo leer archivos en SQL (que utiliza OLE/la Scripting.FileSystemObject)
Probablemente valga la pena agregar que los proxies OLE (sp_OA *) están deshabilitados de manera predeterminada, ya que pueden abrir muchas funcionalidades adicionales, algunas de las cuales pueden no ser deseables, y como tales deben tratarse como un problema de seguridad. –
- 1. Abrir y leer un archivo con askopenfilename
- 2. Código SQL para abrir un procedimiento almacenado y leerlo en SQL Server
- 3. hibernar y procedimiento almacenado
- 4. Ejecutar un procedimiento almacenado dentro de un procedimiento almacenado
- 5. Crear, guardar y leer archivo de texto
- 6. Procedimiento almacenado al ejecutar otro procedimiento almacenado
- 7. Cómo llamar a un procedimiento almacenado desde otro procedimiento almacenado?
- 8. jquery - ¿Leer un archivo de texto?
- 9. Seleccionar y actualizar en un procedimiento almacenado
- 10. ¿Crear procedimiento almacenado y SQLite?
- 11. Cómo escribir asignaciones para un procedimiento almacenado
- 12. Ejecutar un procedimiento almacenado de SQL y procesar los resultados
- 13. Abrir archivo para leer y escribir (no anexar) en perl
- 14. Transacción de procedimiento almacenado
- 15. Java: abrir y leer un archivo sin bloquearlo
- 16. Cómo abrir un archivo txt y leer números en Java
- 17. Cómo guardar un procedimiento almacenado?
- 18. ¿Cómo programar un procedimiento almacenado?
- 19. TSQL: llame a un procedimiento almacenado desde otro procedimiento almacenado y lea el resultado
- 20. ¿Cómo abrir un archivo para leer en C?
- 21. Configuración de classpath para un procedimiento almacenado Java en Oracle
- 22. ¿Cómo suprimo los resultados de un procedimiento almacenado dentro de un procedimiento almacenado?
- 23. Abrir un archivo de texto con WPF
- 24. ¿Cómo desactivo los resultados de la consulta al ejecutar un procedimiento almacenado desde un procedimiento almacenado?
- 25. Llamar a un procedimiento almacenado con asp.net
- 26. Procedimiento almacenado roto guardado
- 27. Magento: Crear procedimiento almacenado
- 28. Cómo editar el procedimiento almacenado de PostgreSQL?
- 29. Consultar resultados de un procedimiento almacenado
- 30. Procedimiento almacenado y permisos: ¿es suficiente EJECUTAR?
Ok, eso es muy útil. La primera fila tendría los nombres de los campos? ¿Hay alguna manera de guardar datos utilizando el comando de copia masiva? He intentado utilizar sqlcmd y bcp dentro de un procedimiento almacenado sin mucho éxito para escribir un archivo. Parece demasiado complicado en comparación con una solución .net clr. Pero las empresas en la naturaleza parecen confiar más en SPROCS y BCP que .net CLR y las funciones de FileStream. Tal vez debido a problemas de implementación. Gracias por la información con respecto al servidor Sql. –
La utilidad bcp es para la línea de comandos (no para consultas). Sin embargo, puede usar xp_cmdshell para ejecutar bcp desde T-SQL. Vea aquí: http: //www.sqlteam.com/article/exporting-data-programatically-with-bcp-and-xp_cmdshell – brian
Además, recuerde que los scripts CLR son compatibles en 2005/2008, por lo que tiene esa opción StreamWriter. Solo requiere habilitar CLR y confiar en el conjunto (ajustes de seguridad ligeramente relajantes). – brian