Wstawienie 300 rekordów do bazy danych

0

Jak można szybko wstawić 300 rekordów do bazy zamiast każdy rekord wstawiać za pomocą insert into i wpisywać values do każdego rekordu? W ten sposób to z 30min to zajmie. Czy nie ma innego sposobu? Sporo w tych rekordów stringów, więc do sporej ilości danych trzeba dodać jeszcze apostrofy.

0

Ale masz gdzieś te dane spisane w sensie pliku, czy wklepujesz z głowy/kartki?

0

Jeżeli jest jakieś podobieństwo w wartościach i chcesz je wklepać z 'głowy', to najprościej będzie wykorzystać kursor.

0

Mam w pliku excelowym

0

Ew. Mając dane w formie zserializowanej (xml, jason lub inny freddy), mapować je na zmienne/obiekt, który je będzie reprezentować, potem zbindować i przelecieć pętlą albo po ludzku zrobić transakcję. Ale ciężko doradzić konkretny sposób nie znając Twoich możliwości i faktycznej sytuacji.

Pod SQL Management studio możesz po chamsku zaimportować z Excela rekordy, o ile dobrze pamiętam.
Ew. Przetworzyć ten arkusz w skrypcie, ale w Twoim przypadku, jeśli to jednorazowy przypadek, to najprościej to zrobić zewnętrznym narzędziem, jak SSME właśnie.

0

Do MSSQL Servera jest takie narzędzie SQL Server 2014 Import and Export Data. Przy pomocy tego narzędzia można zaimportować dane z zewnętrznych źródeł danych do bazy.

0

Już tego próbowałem i to od razu tworzy nową tabelkę przy importowaniu, więc niektóre dane dodaje nie poprawne i np potem nie mogę dodać klucza głównego.

0

A nie zapominasz ustawić w jednym z kroków mapowania na istniejącą tabelę?
Bo jeśli ustawiasz prawidłowo, to on Ci wrzuci te dane do odpowiedniej tabeli i nie będzie żadnych baletów wyczyniał. Sprawdź czy na pewno czegoś sobie nie kaszanisz :P

0

Wybrałem tabelkę na która chcę przemapować ale wyskakują same błędy np. przy typie decimal.

0

Sprawdź sobie czy na pewno typy Ci się zgadzają na tyle, że ma to sens.
Drugim rozwiązaniem, które jest ryzykowne, jest ustawienie warningów i błędów na "ignore". Jeśli jest to aplikacja, przy której nie możesz sobie pozwolić na utratę istniejących danych, niespójność lub inne problemy jak utrata precyzji itp., czyli w zasadzie jakąkolwiek aplikacja poza prywatnym projektem na studia/do szuflady, to pomysł jest niebezpieczny, chyba, że będziesz miał możliwość gruntownego przetestowania później wszystkich wartości w bazie pod kątem wymagań.

Zanim machniesz to z ignorem na błędach, podrzuć tutaj choćby cześć komunikatów, żebyśmy wiedzieli co i dlaczego się sypie.
To może być nieporadność importera przy konwertowaniu, ale może też być jakaś większa niespójność, która da Ci malowniczy fuckup.

0

Dałem wszystkie kolumny w tabelce na carchar(255) i nadal sypie błędami np. the value violated the integrity constraints for the column

0

Chodzi o to, że mi w excelu dane kolumny zapisuje jako typ VarChar (z dużych liter), a w bazie mam varchar i mam ustawione niby konwertowanie, ale widocznie jest coś nie tak z nim.

0

Dobra jak dodałem kolukmnę Id do excela to skopiowało, ale w niektórych kolumnach w bazie są teraz nulle mimo, że w excelu są podane wartości.

0

Narzędzie, które podałem trzeba wykorzystywać z głową tzn, wiedzieć jakie dane masz i gdzie mają trafić. Z Excela zrób sobie export do csv. Zobacz w pliku *.csv czy dane zgadzają się (np. poprawnie użyty znak kropki i przecinka w liczbach, apostrofy w tekstach itd.). Jeśli to będzie ok to import do bazy powinien się udać, zawsze możesz wypełnić nową tabelę w bazie bawić się w SELECT INTO.

1

Jeśli to ma być szybka i jednorazowa operacja to zastanowiłby mi się nad wygenerowaniem tych insertów za pomocą formuły i przeciągnięciu. I mówię serio. Czasem warto automatyzować z umiarem bo zajmuje to więcej czasu niż samo zadanie 😉

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