2008-10-21 16 views
62

Tengo una tabla de base de datos en un servidor de desarrollo que ahora está poblada por completo después de lo fijo funcionando con una rutina de importación de un archivo CSV que contiene 1,4 millones de filas.SQL Server - Ejecución de grandes archivos de comandos

Me corrió el Asistente para la publicación de bases de datos sobre la mesa, y ahora tengo una secuencia de comandos SQL 286MB en mi máquina local. El problema es que no puedo entender cómo ejecutarlo. Si lo cargo en SQL Server Management Studio Express, aparece una ventana de alerta que dice "La operación no se pudo completar".

¿Alguna idea sobre cómo puedo hacer que se ejecute este script SQL?

+1

me hizo una pregunta similar sobre DBA y recibieron algunos bastante buena regeneración (http://dba.stackexchange.com/questions/16763/how-do-i-run-a-large-script-with-many-inserts -with-out-running-out-of-memory /) – spaghetticowboy

Respuesta

-5

Ejecución de algo tan grande dentro de una sola transacción no es una buena idea. Por lo tanto, recomendaría dividir el archivo en fragmentos más pequeños y manejables.

Otra opción es mirar a algunas de las otras formas de importar datos CSV directamente.

+7

La respuesta de Gulzar Nazim es la mejor respuesta. – Feryt

+9

@feryt que puede ser su opinión, pero eso no es lo que decidió el OP, y tampoco es culpa de Michael que le guste más la respuesta de otra persona (incluso si la otra respuesta no resolvió el problema del OP). –

160

utilice la herramienta sqlcmd para ejecutar el archivo ..

sqlcmd -S myServer\instanceName -i C:\myScript.sql 
+1

Al usar este método, aparece el error "Sqlcmd: Error: error de script". ¿Esto tiene que ver con el tamaño del archivo? – tags2k

+0

primero compruebe la conectividad. tal vez tenga que pasar nombre de usuario y contraseña (opciones -U -P). también puedes probar con un archivo más pequeño. He ejecutado enormes scripts sin ningún problema. –

+0

Si elimino todas las declaraciones salvo 15 INSERT, funciona. Si vuelvo a colocar las otras declaraciones 1,410,472, falla con ese mensaje de error. – tags2k

0

¿Por qué no usar DTS para importar el archivo CSV directamente?

+0

Primero hay que hacer un montón de procesamiento de los datos, que no quiero que se ejecuten en el servidor activo. Por lo tanto, debo ser capaz de procesar los datos en una secuencia de comandos SQL simple para minimizar el trabajo requerido por esa caja. – tags2k

7

Agregando a la respuesta de Gulzar Nazim: Si, a pesar de un fallo, intente especificar el codepage de su archivo SQL utilizando la opción -f:

sqlcmd -S myServer\instanceName -d databaseName -i C:\myScript.sql -f 65001

yo estaba tratando de importar un archivo .dump de SQLite (UTF-8 por defecto), y sqlcmd sigue lanzando un error después de encontrar el primer carácter especial. -f 65001 lo arregló para mí.

Cuestiones relacionadas