2010-05-05 4 views
3

J'ai environ 50 fichiers T-SQL, certains d'entre eux sont 30MB mais certains d'entre eux sont 700MB. J'ai pensé à les exécuter manuellement, mais si le fichier dépasse 10 Mo, il génère une exception d'insuffisance de mémoire sur SQL Server Management Studio.Comment faire pour exécuter de gros fichiers SQL sur SQL Server?

Des idées?

+2

par curiosité, ce _is_ dans ces 700MB grands fichiers SQL? – edosoft

+0

Je suis curieux à ce sujet aussi, bien que j'ai vu une collection de valeurs INSERT (col1, col2) VALUES ('col1 data', 'col2 data'); lignes qui grand. Comme, convertir à partir d'un système de DB différent ou quelque chose. –

+0

50 fichiers sql = Etats U.S, et chaque ligne est une ligne 'INSERT' d'une entreprise. –

Répondre

5

Si vous avez que beaucoup de données - ne serait-il beaucoup plus facile et plus intelligent d'avoir ces données dans par exemple un fichier CSV, puis l'importation en bloc de ceux dans SQL Server ??

Consultez la commande BULK INSERT - vous permet de charger rapidement et efficacement des volumes de données volumineux dans SQL Server - bien mieux qu'un fichier SQL aussi volumineux!

La commande ressemble à:

BULK INSERT dbo.YourTableName 
    FROM 'yourfilename.csv' 
    WITH (FIELDTERMINATOR =';', 
      ROWTERMINATOR =' |\n') 

ou quel que soit le format que vous pourriez avoir à importer.

+1

Bien sûr, c'est plus efficace et une meilleure stratégie, mais parfois on vous donne un fichier d'instructions SQL. Si vous transmettez des données entre des SGBD, c'est probablement le plus portable. Donc, vous pouvez soit montrer une impressionante regex-fu et la transformer en un fichier csv, ou faire face à ce que vous avez déjà. –

3

Peut-être que c'est trop évident, mais ... avez-vous envisagé d'écrire un programme pour parcourir les fichiers et appeler SqlCommand.ExecuteNonQuery() pour chaque ligne? C'est presque trivial.

avantages moins évidents:

  • Vous pouvez suivre les progrès de l'alimentation (qui va prendre un certain temps)
  • Vous pouvez papillon des gaz (dans le cas où vous ne voulez pas inonder le serveur)
  • Vous pouvez ajouter une petite erreur traitement en cas il y a des problèmes dans les fichiers d'entrée
+0

+1, cela peut prendre beaucoup de temps, mais à moins que le PO ne puisse éditer ces gros fichiers pour que le chargement en masse fonctionne, alors c'est probablement la seule solution. –

Questions connexes