Рубрики
Без рубрики

Как импортировать данные CSV в PostgreSQL

Автор оригинала: Vlad Mihalcea.

Многие серверы баз данных поддерживают CSV передачу данных, и в этом посте будет показан один из способов импорта файлов CSV в PostgreSQL .

Мой предыдущий пост продемонстрированные Возможности Flexipool метрики и вся статистика, связанная с подключением, были экспортированы в формате CSV.

Когда дело доходит до агрегирования табличных данных, SQL работает в лучшем виде. Если ваш компонент database engine поддерживает функции SQL:2003 windows, вам определенно следует воспользоваться этой замечательной функцией.

Для написания сценариев я в основном полагаюсь на сценарии Python или Bash. Python является мощным и выразительным, в то время как сценарии Bash не нуждаются в слишком большом количестве зависимостей, даже в Windows .

Это файлы CSV, которые необходимо импортировать:

$ ls -1 *.csv
concurrentConnectionRequestsHistogram.csv
concurrentConnectionsHistogram.csv
connectionAcquireMillis.csv
connectionLeaseMillis.csv
maxPoolSizeHistogram.csv
overallConnectionAcquireMillis.csv
overflowPoolSizeHistogram.csv
retryAttemptsHistogram.csv

Все эти файлы являются Метриками Dropwizard метриками гистограммы и таймера, и вот как выглядит скрипт импорта:

#!/bin/bash
 
function import_histogram(){
    echo "Importing Histogram file: $2 to $1 table"
    psql metrics postgres <

Поскольку PostgreSQL требует путей Windows, нам нужно использовать команду $(cygpath-w pwd ) для перевода путей Cygwin, подобных путям, в их эквивалент Windows.

Давайте запустим этот сценарий прямо сейчас:

vlad@HOME /cygdrive/d/metrics
$ dos2unix codahale_metrics_csv_to_postgres.sh
dos2unix: converting file codahale_metrics_csv_to_postgres.sh to Unix format ...

vlad@HOME /cygdrive/d/metrics
$ ./codahale_metrics_csv_to_postgres.sh
Importing Histogram file: D:\metrics/concurrentConnectionRequestsHistogram.csv to concurrent_connection_requests_histogram table
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "concurrent_connection_requests_histogram_pkey" for table "concurrent_connection_requests_histogram"

CREATE TABLE
COPY 1537

Importing Histogram file: D:\metrics/concurrentConnectionsHistogram.csv to concurrent_connections_histogram table
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "concurrent_connections_histogram_pkey" for table "concurrent_connections_histogram"

CREATE TABLE
COPY 1537

Importing Timer file: D:\metrics/connectionAcquireMillis.csv to connection_acquire_millis table
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "connection_acquire_millis_pkey" for table "connection_acquire_millis"

CREATE TABLE
COPY 1537

Importing Timer file: D:\metrics/connectionLeaseMillis.csv to connection_lease_millis table
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "connection_lease_millis_pkey" for table "connection_lease_millis"

CREATE TABLE
COPY 1537

Importing Histogram file: D:\metrics/maxPoolSizeHistogram.csv to max_pool_size_histogram table
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "max_pool_size_histogram_pkey" for table "max_pool_size_histogram"
CREATE TABLE
COPY 1537

Importing Timer file: D:\metrics/overallConnectionAcquireMillis.csv to overall_connection_acquire_millis table
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "overall_connection_acquire_millis_pkey" for table "overall_connection_acquire_millis"

CREATE TABLE
COPY 1537

Importing Histogram file: D:\metrics/overflowPoolSizeHistogram.csv to overflow_pool_size_histogram table
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "overflow_pool_size_histogram_pkey" for table "overflow_pool_size_histogram"

CREATE TABLE
COPY 1537

Importing Histogram file: D:\metrics/retryAttemptsHistogram.csv to retry_attempts_histogram table
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "retry_attempts_histogram_pkey" for table "retry_attempts_histogram"

CREATE TABLE
COPY 1537

После запуска этого скрипта мы получили следующие полностью загруженные таблицы PostgreSQL:

Мой следующий пост заставит оконные функции работать, так как я хочу сравнить Flexipool эмпирические показатели с вероятностями теории массового обслуживания.