2010-05-17 8 views
17

Je rencontre un problème lors de la lecture des données d'un fichier texte dans ms sql. J'ai créé un fichier texte dans mon fichier c: \ called data.txt, mais pour une raison quelconque, le serveur ms sql ne trouve pas le fichier. Je reçois l'erreur "Impossible de charger en bloc Le fichier" c: \ data.txt "n'existe pas." Des idées?Impossible de charger en bloc. Le fichier "c: data.txt" n'existe pas

Le fichier de données (oui je sais les données semble merdique, mais dans le monde réel est comment il vient de clients):

01-04 10.338,18 0,00 597.877,06- 5 0,7500 62,278- 
06-04 91.773,00 9.949,83 679.700,23- 1 0,7500 14,160- 
07-04 60.648,40 149.239,36 591.109,27- 1 0,7500 12,314- 
08-04 220.173,70 213.804,37 597.478,60- 1 0,7500 12,447- 
09-04 986.071,39 0,00 1.583.549,99- 3 0,7500 98,971- 
12-04 836.049,00 1.325.234,79 1.094.364,20- 1 0,7500 22,799- 
13-04 38.000,00 503.010,49 629.353,71- 1 0,7500 13,111- 
14-04 286.400,00 840.126,50 75.627,21- 1 0,7500 1,575- 

Le Sql:

CREATE TABLE #temp 
(
    vchCol1 VARCHAR (50), 
    vchCol2 VARCHAR (50), 
    vchCol3 VARCHAR (50), 
    vchCol4 VARCHAR (50), 
    vchCol5 VARCHAR (50), 
    vchCol6 VARCHAR (50), 
    vchCol7 VARCHAR (50) 
) 

BULK insert #temp 
FROM 'c:\data.txt' 
WITH 
(
FIELDTERMINATOR = ' ', 
ROWTERMINATOR = '\n' 
) 

select * from #temp 
drop table #temp 
+2

En remarque, l'insertion BULK n'est pas SQL, c'est une extension MS SQL Server. – extraneon

Répondre

35

qui est géré sur la serveur, de sorte qu'il recherche C:\data.txt sur le lecteur C: du serveur.

Assurez-vous également que votre connexion dispose d'autorisations de lecture sur C :.

+1

Donc, pour certains, nous avons déjà cela, mais alors ... qu'est-ce qui est changé pour le faire fonctionner? Pour tirer le fichier de votre lecteur local à travers le réseau? Ou y a-t-il une affirmation manquant qu'il est impossible que le serveur tire le fichier vai de quelque ip ou quelque chose? Salutations -Jeremy –

+0

Vous auriez besoin de le tirer sur un partage unc –

+0

oh, oui cela a du sens. : D ne pensait pas là lol ... –

8

Ce fichier se trouve-t-il sur le lecteur C: \ de SQL Server? SQL BULK INSERT etc fonctionne toujours seulement avec le lecteur local sur la machine SQL Server. Votre serveur SQL ne peut pas accéder à votre propre lecteur local.

Vous devez placer le fichier sur le lecteur C: \ de SQL Server et réessayer.

Mise à jour: @bp_, ok, correct - le fichier peut également être sur une part que vous pouvez accéder à partir de la machine SQL Server à l'aide d'un chemin UNC. Mais encore une fois: ce partage doit d'abord être créé, et l'utilisateur sur lequel le processus SQL Server s'exécute doit avoir des autorisations d'accès à ce partage. Vous ne pouvez pas simplement prendre un fichier à partir d'un lecteur local sur votre PC sans avoir à configurer un peu d'infrastructure en premier

0

Ceci est principalement un problème d'autorisation. Vous n'êtes peut-être pas autorisé sur ce disque. Assurez-vous que la connexion que vous utilisez a lu ou si possible l'autorisation de contrôle total. Cela a fonctionné pour moi sur la machine locale.