web-dev-qa-db-fra.com

SQL Server - Exécution de gros fichiers de script

J'ai une table de base de données sur un serveur de développement qui est maintenant entièrement remplie après l'avoir configurée avec une routine d'importation pour un fichier CSV contenant 1,4 million de lignes.

J'ai exécuté la publication de base de données Wizard sur la table, et maintenant j'ai un script SQL de 286 Mo sur ma machine locale. Le problème est que je ne peux pas comprendre comment l'exécuter. Si je charge dans SQL Server Management Studio Express, j'obtiens une fenêtre d'alerte qui dit "L'opération n'a pas pu être terminée".

Avez-vous des idées sur la façon d'exécuter ce script SQL?

65
tags2k

utilisez l'outil sqlcmd pour exécuter le fichier.

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

Si vous avez une "erreur de script" inexpliquée pour les gros fichiers SQL (> 100 Mo) qui comprend plusieurs INSERT, remplacez simplement "INSERT INTO" par "GO INSERT INTO" dans votre fichier, ce qui réduira la taille de la transaction.

167
Gulzar Nazim

Cet outil ( Big SQL Script File Runner ) sur CodePlex exécutera n'importe quel fichier de script de taille avec journal et interface graphique.

17
Alobidat

Ajout à la réponse de Gulzar Nazim: Si vous obtenez toujours un échec, essayez de spécifier page de code de votre fichier SQL en utilisant l'option -f:

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

J'essayais d'importer un fichier .dump à partir de SQLite (UTF-8 par défaut), et sqlcmd continuait de lancer une erreur après avoir rencontré le premier caractère spécial. -f 65001 l'a corrigé pour moi.

8
PaloDravecky

Pourquoi ne pas simplement utiliser DTS pour importer directement le fichier CSV?

1
Aheho

Oui, nous pourrions le faire, j'ai essayé avec [~ # ~] bcp [~ # ~] (Bulk Copy Program) pour éviter le problème OutOfMemory .

Remarque: essayé dans SQLServer 2014

Dans BCP, nous devons d'abord exporter les données de la base de données source vers le fichier bcp (dans le dossier du répertoire local), puis nous devons l'importer fichier bcp vers la base de données source

enter image description here

Voici les étapes de la marche du gâteau:

Remarque:

a) Assurez-vous que la table vide est présente dans la base de données de destination

b) Assurez-vous que le dossier Temp est présent dans le lecteur C

1) Créez un fichier bat nommé Export_Data.bat avec la commande ci-dessous

bcp.exe [Source_DataBase_Name].[dbo].[TableName] OUT "C:\Temp\TableName.bcp" -S "Computer Name" -U "SQL Server UserName" -P "SQL Server Password" -n -q 

pause

2) Exécutez ce fichier bat, à la suite de quoi un fichier bcp sera généré dans le dossier Temp

3) Créez ensuite un autre fichier bat nommé Import_Data.bat avec sous la commande

bcp.exe [Destination_DataBase_Name].[dbo].[TableName] IN "C:\Temp\TableName.bcp" -S "Computer Name" -U "SQL Server UserName" -P "SQL Server Password" -n -q 

Pause

Et c'est reparti!!

0
Kms