OPENROWSET - import danych z excela do bazy danych

0

Witajcie.

Mam problem z pobraniem danych z excela do bazy. Plik xlsx zawiera 4 kolumny i dosłownie 200 rekordów, jednakże po wywołaniu zapytania:

SELECT * 
FROM OPENROWSET('Microsoft.ACE.OLEDB.16.0',
    'Excel 16.0; Database=C:\Users\XXX\Documents\Folder\NazwaPliku.xlsx', SELECT * FROM [Arkusz1$]);

otrzymuję następujący komunikat:

A transport-level error has occurred when receiving results from the server. (provider: Shared Memory Provider, error: 0 - Potok został zakończony.)

Bardzo proszę o pomoc.

1

Dlaczego nie robisz przez SSMS? I jak masz na to wpływ to lepiej z CVS niż z Excel. A jesteś pewny, że żaden proces nie trzyma pliku?

1
S4t napisał(a):

Dlaczego nie robisz przez SSMS? I jak masz na to wpływ to lepiej z CVS niż z Excel. A jesteś pewny, że żaden proces nie trzyma pliku?

Tu masz napisane jak to zrobić z GUI: https://skyvia.com/blog/3-easy-ways-to-import-csv-file-to-sql-server
A tak jeszcze zapytam ten plik to masz w tej ścieżce u siebie na komputerze czy na serwerze?

0

A co sądzisz o tym rozwiązaniu?

  SELECT 
      *
  FROM 
      OPENROWSET(
                  BULK ''C:\Users\XXXX\Documents\Folder\NazwaPliku.xlsx'',
                  FORMATFILE = ''C:\Users\XXXX\Documents\FormatPlikow.fmt'',
                  FIRSTROW = 2
                ) AS b1;'

Z tym, że tu nie ma błędu, ale nie czyta mi żadnego rekordu. Plik FormatPlikow.fmt mam ustawiony tak, że "\t" jest znakiem następnej kolumny. Może ten znak mam zły i znak następnej kolumny w excelu jest inny?

0

Nie wiem jaki problem chcesz rozwiązać: co to za pliki, skąd się biorą. Jak często bedą importowane.

0

pliki xlsx chcę zaimportować do bazy danych do odpowiedniej tabeli, format kolumn w pliku i tabeli jest taki sam. Ale na razie chcę odczytać excela SELECTem

1

plik musi być fizycznie na serwerze bo ścieżkę - Database=C:\Users\XXX\Documents\Folder\NazwaPliku.xlsx - podajesz względem MSSQLa a nie swojego komputera

1 użytkowników online, w tym zalogowanych: 0, gości: 1