Ćwiczenia > Budowa bazy danych w MS SQL Server 2000 > Import i eksport danych

3.10 Import i eksport danych



W tej lekcji poznasz metodę szybkiego importu i eksportu danych między bazą danych serwera MS SQL i plikami tekstowymi.

Krok 1 - Skopiuj pliki tekstowe z danymi na twardy dysk

1. Z katalogu labs na płycie podręcznika skopiuj na dysk C (jeśli nie chcesz później zmieniać ręcznie ścieżek w skrypcie, koniecznie kopiuj pliki na dysk C, nie do katalogów) pliki:
- autorstwo.txt,
- autorzy.txt,
- ksiazki.txt,
- wydawnictwo.txt.

Pliki te zawierają dane w postaci wierszy z wartościami oddzielonymi przecinkami.

2. Obejrzyj zawartość plików, które skopiowałeś.

Krok 2 - Zaimportuj dane z plików tekstowych do tabel bazy danych Biblioteka

1. Uruchom program Query Analyzer.
2. Zaloguj się używając uwierzytelnienia systemu Windows.
3. W menu głównym programu wybierz File - Open.
4. W oknie Open Query File wybierz plik demo_3_10_1.sql. Nie uruchamiaj skryptu, a jedynie obejrzyj jego kod.
5. Zaznacz i uruchom (klawisz F5) fragmenty kodu oznaczone w komentarzach jako (1), (2) oraz (3).

Fragment (1) ustawia bazę danych Biblioteka jako bazę roboczą.

Fragment (2) usuwa aktualną zawartość tabel bazy danych Biblioteka.

Fragment (3) zeruje autonumerację kluczy głównych w tabelach (bez tej operacji serwer nadaje kolejne numery, tzn. jeśli dodamy rekord o wartości klucza równej 1, to po usunięciu go następny rekord otrzyma wartość klucza 2, a nie ponownie 1).


-- (1) ustawmy Biblioteke jako baze robocza 
USE Biblioteka
GO

-- (2) skasujmy ewentualna zawartosc tabel
DELETE Autorstwo
DELETE Ksiazki
DELETE Autorzy
DELETE Wydawnictwa
GO

-- (3) wyzerujmy liczniki kluczy glownych
DBCC CHECKIDENT (Ksiazki,RESEED,0)
GO
DBCC CHECKIDENT (Autorzy,RESEED,0)
GO
DBCC CHECKIDENT (Wydawnictwa,RESEED,0)
GO


Nie wykonuj polecenia DBCC CHECKIDENT bez powodu i przy istniejących danych w tabeli.


6. Zakładając, że skopiowałeś pliki tekstowe na dysk C, zaznacz i uruchom (F5) fragment kodu oznaczony w komentarzu jako (4). Kod ten importuje dane z plików tekstowych do odpowiednich tabel bazy danych.


-- (4) zaimportujmy dane z pliow tekstowych do tabel
-- podajac separatory pojedynczych pol i wierszy
BULK INSERT Biblioteka.dbo.Wydawnictwa
   FROM 'C:\wydawnictwa.txt'
   WITH
     (
        FIELDTERMINATOR = ',',
        ROWTERMINATOR = '\n',
	CODEPAGE = 'ACP'
      )
GO

BULK INSERT Biblioteka.dbo.Ksiazki
   FROM 'C:\ksiazki.txt'
   WITH
     (
        FIELDTERMINATOR = ',',
        ROWTERMINATOR = '\n',
	CODEPAGE = 'ACP'
      )
GO

BULK INSERT Biblioteka.dbo.Autorzy
   FROM 'C:\autorzy.txt'
   WITH
     (
        FIELDTERMINATOR = ',',
        ROWTERMINATOR = '\n',
	CODEPAGE = 'ACP'
      )
GO

BULK INSERT Biblioteka.dbo.Autorstwo
   FROM 'C:\autorstwo.txt'
   WITH
     (
        FIELDTERMINATOR = ',',
        ROWTERMINATOR = '\n',
	CODEPAGE = 'ACP'
      )
GO


W powyższym kodzie pod argumentem FIELDTERMINATOR kryje się separator kolumn (oddziela wartości wstawiane w kolejne pola rekordów - tu jest to przecinek). Pod argumentem ROWTERMINATOR kryje się separator wierszy (oddziela kolejne wiersze - tu jest to przejście do nowego wiersza w pliku tekstowym). Argument CODEPAGE jest istotny z punktu widzenia obsługi polskich znaków (typu ą,ć,ę itd.) przy importowaniu danych. Wartość ACP oznacza, że strona kodowa pliku tekstowego będzie zamieniana na stronę kodową serwera MS SQL, a co za tym idzie, dane będą dobrze formatowane w serwerze (z polskimi znakami).

7. Sprawdźmy, czy dane zostały poprawnie zaimportowane (jeśli w poprzednim punkcie został wyświetlony komunikat o błędzie, to musisz najwyraźniej zmienić ścieżki do plików tekstowych w kodzie). Zaznacz i uruchom (F5) fragment kodu oznaczony w komentarzu jako (5). Kod ten spowoduje wyświetlenie zawartości wszystkich tabel bazy danych, dzięki czemu będziesz mógł zweryfikować, czy dane zostały poprawnie zaimportowane.


-- (5) zobaczmy zawartosc tabel
SELECT * FROM Wydawnictwa
SELECT * FROM Ksiazki
SELECT * FROM Autorzy
SELECT * FROM Autorstwo
GO


Oczywiście użycie polecenia BULK INSERT nie jest jedynym możliwym sposobem importu danych. Możesz też użyć narzędzia bcp dostępnego w linii poleceń (pisaliśmy o nim w lekcji 1.7 Narzędzia dostępne w linii poleceń).


Krok 3 - Wyeksportuj dane z tabeli Ksiazki do pliku tekstowego

1. Uruchom konsolę linii poleceń (jeśli nie wiesz, jak to zrobić, zajrzyj do lekcji 1.7 Narzędzia dostępne w linii poleceń).
2. W linii poleceń wpisz:

bcp "Biblioteka.dbo.Ksiazki" out "C:\ksiazki_1.txt" -U sa -P haslo_uzytkownika_sa -C ACP -t "," -r "\n" -c

wstawiając hasło użytkownika sa w odpowiednie miejsce.

Wykonane przed chwilą polecenie wyeksportowało zawartość tabeli Ksiazki z bazy danych Biblioteka do pliku tekstowego ksiazki_1.txt na dysku C. Polecenie do łączenia z serwerem MS SQL użyło konta użytkownika sa i jego hasła. Ponadto w poleceniu określiliśmy, że: dane będą kopiowane w postaci tekstowej (argument -c), dane będą przeformatowane do strony kodowej dokumentów tekstowych Widnows (-C ACP), separatorem pól będzie przecinek (-t ","), separatorem wierszy będzie znak nowego wiersza (-r "\n").

3. Otwórz plik tekstowy ksiazki_1.txt z dysku C i sprawdź, czy zawiera dobrze sformatowane dane zgodne z danymi w bazie danych.

Do importu i eksportu danych świetnie nadają się też pakiety DTS (ang. Data Transformation Services). O nich jednak nie będziemy pisać, ponieważ na ich temat możnaby napisać osobny podręcznik. Możesz się z nimi zapoznać zaglądając do Books Online oraz fachowej literatury na temat serwera MS SQL.


Przygotuj pliki tekstowe (dołącz je do projektu) z przykładowymi danymi do odpowiednich tabel bazy danych Prace dyplomowe. Napisz skrypt T-SQL (zapisz go pod nazwą import.sql i dołącz do projektu), który będzie przy pomocy polecenia BULK INSERT importował dane z plików tekstowych do tabel.


Przejdź dalej



Ćwiczenia > Budowa bazy danych w MS SQL Server 2000 > Import i eksport danych