2010-05-17 15 views
17

Tengo un problema al leer los datos de un archivo de texto en ms sql. Creé un archivo de texto en mi c: \ called data.txt, pero por alguna razón el servidor ms sql no puede encontrar el archivo. Aparece el error "No se puede cargar en bloque. El archivo" c: \ data.txt "no existe." ¿Algunas ideas?No se puede cargar de forma masiva. El archivo "c: data.txt" no existe

El archivo de datos (sí, sé que los datos se ve horrible, pero en el mundo real, esa es la forma en que viene de clientes):

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- 

El 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

Como nota al margen, la inserción BULK no es SQL, es una extensión de MS SQL Server. – extraneon

Respuesta

35

que se ejecuta en el servidor, por lo que busca C:\data.txt en la unidad C: del servidor.

También asegúrese de que el inicio de sesión de su uso tenga permisos de lectura en C :.

+1

Entonces, para algunos, ya lo tenemos, pero entonces ... ¿qué ha cambiado para que funcione? Para extraer el archivo de su localdrive a través de la red? ¿O hay una declaración faltante de que es imposible que el servidor extraiga el archivo vai en una ip o algo así? Cheers -Jeremy –

+0

Tendría que tirar de él para compartir unc –

+0

oh, sí, tiene sentido. : D simplemente no estaba pensando allí jaja ... –

8

¿Es ese archivo en la unidad C: \ de SQL Server? SQL BULK INSERT etc. siempre funciona solo con unidad local en el equipo SQL Server. Su SQL Server no puede alcanzar su propia unidad local.

Debe colocar el archivo en la unidad C: \ de SQL Server y volver a intentarlo.

Actualización: @bp_, bien, correcto - el archivo pueden también estar en una parte que se puede acceder desde el equipo de SQL Server mediante una ruta UNC. Pero nuevamente: ese recurso compartido debe crearse primero, y el usuario con el que se ejecuta el proceso de SQL Server debe tener permisos de acceso a ese recurso compartido. No puede simplemente tomar un archivo de una unidad local en su PC sin configurar un poco de sobrecarga de infraestructura primero

0

Esto es principalmente un problema de permiso. es posible que no tenga permiso en esa unidad. Asegúrese de que el inicio de sesión que está utilizando se haya leído o, si es posible, con permiso de control total. Funcionó para mí en la máquina local.

Cuestiones relacionadas