Mam mały problem. Mój przyjaciel ma bazę danych zawierającą ponad 10 tabel, a każda tabela ma ponad 90-100 rekordów.

Nie mogę znaleźć obejścia, aby wyeksportować rekordy (umieścić w pliku SQL coś takiego: INSERT INTO .... VALUES ... dla każdego istniejącego rekordu) z jego tabel w celu zaimportowania do mojej bazy danych.

Jak to zrobić ?

Próbowałem: kliknij prawym przyciskiem myszy na stole -> Script Table as -> INSERT TO -> File ...

Ale generuje tylko instrukcję INSERT.

Jest rozwiązanie ? czy ta funkcja jest dostępna tylko w wersji komercyjnej ?

AKTUALIZACJA

Możesz użyć polecenia BCP z wierszem poleceń w ten sposób

Do eksportu: bcp ADatabase.dbo.OneTable out d:\test\OneTable.bcp -c -Usa -Ppassword Do importu: bcp ADatabase.dbo.OneTable in d:\test\OneTable.bcp -c -Usa -Ppassword

Te polecenia utworzą plik BCP, który zawiera rekordy dla określonej tabeli. Możesz importować przy użyciu istniejącego pliku BCP do innej bazy danych

Jeśli korzystasz ze zdalnej bazy danych, to:

bcp ADatabaseRemote.dbo.OneTableRemote out d:\test\OneTableRemote.bcp -Slocalhost/SQLExpress -Usa -Ppassword

Zamiast localhost/SQLExpress możesz użyć localhost lub innej nazwy serwera...

0
Snake Eyes 14 luty 2012, 18:22

2 odpowiedzi

Najlepsza odpowiedź

Prawdopodobnie najprostszym sposobem, aby to zrobić, byłoby uruchomienie instrukcji SELECT, która wyprowadza do pliku. Następnie możesz zaimportować te dane do swojej bazy danych.

W przypadku prostych ruchów wykonałem również ręczne kopiowanie/wklejanie. Czasami lepiej jest użyć programu Excel jako platformy tymczasowej przed wklejeniem go do nowej bazy danych. Może być konieczne utworzenie tabeli tymczasowej w nowej bazie danych, która będzie dokładnie odpowiadać wklejanym danym. Na przykład, zwykle nie umieszczam na początku PK w tabeli tymczasowej i ustawiam pole PK tylko na INT. W ten sposób kopia będzie płynniejsza.

W świecie korporacyjnym do przenoszenia tych danych używa się usług SSIS.

1
IAmTimCorey 14 luty 2012, 18:28

Możesz to zrobić na kilka sposobów. Po pierwsze, wybierz wszystko z każdej tabeli i zapisz wyniki jako plik csv lub rozdzielany (możesz to zrobić ze studia zarządzania sql). Możesz także skryptować tabele, tworząc i kopiując skrypty do nowej bazy danych, zakładając, że jest to również serwer sql. Następnie do importu użyj instrukcji load infile. Być może będziesz musiał wygooglować składnię serwera sql, ale wiem, że to działa w mysql i oracle. jeszcze nie próbowałem tego na serwerze sql.

LOAD DATA INFILE 'myfile' 
INTO TABLE stuff 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n'
SET id = NULL;

Lub jeśli zamierzasz przejść do innego serwera sql, użyj kreatora importu eksportu sql.

http://msdn.microsoft.com/en-us/library/ms141209.aspx

0
Brian 14 luty 2012, 19:09