Jak napisać procedurę składowaną, która importuje dane z pliku CSV i zapełnia tabelę?
postgresql
csv
postgresql-copy
vardhan
źródło
źródło
Odpowiedzi:
Spójrz na ten krótki artykuł .
Rozwiązanie sparafrazowane tutaj:
Stwórz swój stół:
Skopiuj dane z pliku CSV do tabeli:
źródło
COPY zip_codes FROM '/path/to/csv/ZIP_CODES.txt' DELIMITER ',' CSV HEADER;
postgresql.org/docs/9.1/static/sql-copy.htmlJeśli nie masz uprawnień do używania
COPY
(które działają na serwerze db), możesz użyć\copy
zamiast tego (co działa w kliencie db). Korzystając z tego samego przykładu co Bozhidar Batsov:Stwórz swój stół:
Skopiuj dane z pliku CSV do tabeli:
Możesz także określić kolumny do odczytania:
Zobacz dokumentację dotyczącą KOPIOWANIA :
i zauważ:
źródło
COPY
i\copy
to znacznie więcej niż tylko uprawnienia, a nie można po prostu dodać ``, aby magicznie działało. Zobacz opis (w kontekście eksportu) tutaj: stackoverflow.com/a/1517692/157957Jednym z szybkich sposobów jest skorzystanie z biblioteki pand Pythona (najlepiej działa wersja 0.15 lub wyższa). To poradzi sobie z tworzeniem kolumn dla Ciebie - chociaż oczywiście wybory dokonywane dla typów danych mogą nie być tym, czego potrzebujesz. Jeśli nie działa tak, jak chcesz, zawsze możesz użyć kodu „Utwórz tabelę” wygenerowanego jako szablon.
Oto prosty przykład:
A oto kod, który pokazuje, jak ustawić różne opcje:
źródło
if_exists
parametr można ustawić, aby zastąpić lub dołączyć do istniejącej tabeli, np.df.to_sql("fhrs", engine, if_exists='replace')
df.to_sql()
jest naprawdę wolny, możesz użyćd6tstack.utils.pd_to_psql()
z d6tstack zobacz porównanie wydajnościMożesz także użyć pgAdmin, który oferuje GUI do wykonania importu. Jest to pokazane w tym wątku SO . Zaletą korzystania z pgAdmin jest to, że działa również w przypadku zdalnych baz danych.
Jednak podobnie jak poprzednie rozwiązania, musisz mieć już tabelę w bazie danych. Każda osoba ma własne rozwiązanie, ale zwykle robię to, otwierając plik CSV w Excelu, kopiując nagłówki, wklejając specjalnie z transpozycją do innego arkusza roboczego, umieszczając odpowiedni typ danych w następnej kolumnie, a następnie po prostu skopiuj i wklej to do edytora tekstowego wraz z odpowiednim zapytaniem do tworzenia tabeli SQL, takim jak:
źródło
Większość innych rozwiązań wymaga utworzenia tabeli wcześniej / ręcznie. W niektórych przypadkach może to nie być praktyczne (np. Jeśli masz dużo kolumn w tabeli docelowej). Dlatego poniższe podejście może się przydać.
Podając ścieżkę i liczbę kolumn pliku csv, możesz użyć następującej funkcji, aby załadować tabelę do tabeli tymczasowej, która zostanie nazwana jako
target_table
:Zakłada się, że górny wiersz ma nazwy kolumn.
źródło
public
)Jak wspomniał Paul, import działa w pgAdmin:
kliknij prawym przyciskiem myszy tabelę -> importuj
wybierz plik lokalny, format i kodowanie
Oto zrzut ekranu GUI z niemieckiego programu pgAdmin:
podobna rzecz, którą możesz zrobić z DbVisualizer (mam licencję, nie jestem pewien co do darmowej wersji)
kliknij tabelę prawym przyciskiem myszy -> Importuj dane tabeli ...
źródło
źródło
najpierw stwórz tabelę
Następnie użyj polecenia kopiuj, aby skopiować szczegóły tabeli:
skopiuj nazwę_tabeli (C1, C2, C3 ....)
ze „ścieżki do pliku csv„ separator ”,„ nagłówek csv;
Dzięki
źródło
Użyj tego kodu SQL
słowo kluczowe nagłówek informuje DBMS, że plik csv ma nagłówek z atrybutami
więcej informacji na stronie http://www.postgresqltutorial.com/import-csv-file-into-posgresql-table/
źródło
Osobiste wrażenia z PostgreSQL, wciąż czekają na szybszy sposób.
1. Najpierw utwórz szkielet tabeli, jeśli plik jest przechowywany lokalnie:
2. Gdy \ ścieżka \ xxx.csv znajduje się na serwerze, postgreSQL nie ma uprawnień dostępu do serwera, będziesz musiał zaimportować plik .csv przez wbudowaną funkcjonalność pgAdmin.
Kliknij prawym przyciskiem myszy nazwę tabeli i wybierz import.
Jeśli nadal masz problem, zapoznaj się z tym samouczkiem. http://www.postgresqltutorial.com/import-csv-file-into-posgresql-table/
źródło
Jak zaimportować dane pliku CSV do tabeli PostgreSQL?
kroki:
Musisz podłączyć bazę danych postgresql w terminalu
Musisz utworzyć bazę danych
Musisz utworzyć użytkownika
Połącz z bazą danych
Musisz utworzyć schemat
Musisz utworzyć tabelę
Zaimportuj dane pliku csv do postgresql
Znajdź podane dane tabeli
źródło
IMHO, najwygodniejszym sposobem jest wykonanie polecenia „ Importuj dane CSV do postgresql, wygodny sposób ;-) ”, używając csvsql z csvkit , który jest pakietem Pythona instalowanym przez pip.
źródło
W Pythonie możesz użyć tego kodu do automatycznego tworzenia tabeli PostgreSQL z nazwami kolumn:
Jest również stosunkowo szybki, mogę zaimportować ponad 3,3 miliona wierszy w około 4 minuty.
źródło
Możesz także użyć pgfutter , a nawet lepiej pgcsv .
pgfutter jest dość wadliwy, polecam pgcsv.
Oto jak to zrobić za pomocą pgcsv:
źródło
Jeśli potrzebujesz prostego mechanizmu do importowania z wielowierszowego pliku CSV z tekstem / parsowaniem, możesz użyć:
DBFiddle Demo
źródło
DBeaver Community Edition (dbeaver.io) sprawia, że łączenie się z bazą danych jest banalne, a następnie import pliku CSV w celu przesłania do bazy danych PostgreSQL. Ułatwia także wysyłanie zapytań, pobieranie danych i pobieranie zestawów wyników do CSV, JSON, SQL lub innych popularnych formatów danych.
Jest to wieloplatformowe narzędzie FOSS dla programistów SQL, DBA i analityków, które obsługuje wszystkie popularne bazy danych: MySQL, PostgreSQL, SQLite, Oracle, DB2, SQL Server, Sybase, MS Access, Teradata, Firebird, Hive, Presto itp. Jest realnym konkurentem FOSS dla TOAD dla Postgres, TOAD dla SQL Server lub Toad dla Oracle.
Nie mam powiązań z DBeaver. Uwielbiam cenę (ZA DARMO!) I pełną funkcjonalność, ale chciałbym, aby bardziej otworzyli tę aplikację DBeaver / Eclipse i ułatwili dodawanie widgetów analitycznych do DBeaver / Eclipse, zamiast wymagać od użytkowników płacenia za roczną subskrypcję w wysokości 199 USD do tworzenia wykresów i wykresów bezpośrednio w aplikacji. Moje umiejętności kodowania Java są zardzewiałe i nie mam ochoty poświęcać tygodni na ponowne nauczenie się, jak budować widżety Eclipse (tylko po to, by stwierdzić, że DBeaver prawdopodobnie wyłączył możliwość dodawania widgetów innych firm do DBeaver Community Edition)
Czy zaawansowani użytkownicy DBeaver, którzy są programistami Java, mogą zapewnić wgląd w etapy tworzenia widgetów analitycznych, które należy dodać do Community Edition DBeaver?
źródło
Utwórz tabelę i posiadaj wymagane kolumny, które są używane do tworzenia tabeli w pliku csv.
Otwórz postgres i kliknij prawym przyciskiem myszy tabelę docelową, którą chcesz załadować, wybierz import i zaktualizuj następujące kroki w sekcji opcji plików
Teraz przejrzyj plik pod nazwą pliku
Wybierz format csv
Kodowanie jako ISO_8859_5
Teraz mam inne . opcje i sprawdź nagłówek, a następnie kliknij przycisk importuj.
źródło
Stworzyłem małe narzędzie, które importuje
csv
plik do PostgreSQL bardzo łatwo, po prostu polecenie, które utworzy i zapełni tabele, niestety w tej chwili wszystkie automatycznie tworzone pola używają typu TEKSTNarzędzie można znaleźć na https://github.com/eduardonunesp/csv2pg
źródło
psql -h 192.168.99.100 -U postgres mydatabase -c "COPY users FROM 'users.csv' DELIMITER ';' CSV"
? Myślę, że część, w której tworzy tabelę, jest fajna, ale ponieważ każde pole jest tekstem, nie jest to bardzo przydatne