web-dev-qa-db-fra.com

Impossible de charger en masse. Le fichier "c:\data.txt" n'existe pas

J'ai un problème pour lire les données d'un fichier texte dans ms SQL. J'ai créé un fichier texte dans mon c:\appelé data.txt, mais pour une raison quelconque, le serveur SQL ne peut pas trouver le fichier. Je reçois le message d'erreur "Impossible de charger en bloc. Le fichier" c:\data.txt "n'existe pas." Des idées?

Le fichier de données (oui, je sais que les données ont l'air minable, mais dans le monde réel, c'est comme ça que ça vient des 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
18
Daniel Brink

C’est exécuté sur le serveur. Il recherche donc C:\data.txt sur le lecteur C: du serveur.

Assurez-vous également que la connexion que vous utilisez a des autorisations de lecture sur C :.

39
Alex K.

Ce fichier se trouve-t-il sur le lecteur C:\de SQL Server? SQL BULK INSERT etc. fonctionne toujours uniquement avec un 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 aussi se trouver sur un partage auquel vous pouvez accéder à partir de la machine SQL Server à l'aide d'un chemin UNC. Mais encore une fois: ce partage doit être créé d’abord, et l’utilisateur sous lequel le processus SQL Server est exécuté doit disposer des autorisations d’accès à ce partage. Vous ne pouvez pas simplement récupérer un fichier sur un lecteur local de votre PC sans configurer au préalable une charge d’infrastructure assez lourde.

10
marc_s

C'est principalement un problème de permission. vous ne pouvez pas avoir la permission sur ce lecteur. Assurez-vous que la connexion que vous utilisez a lu ou, si possible, une autorisation de contrôle total. Cela a fonctionné pour moi sur la machine locale. 

0
Abde