Автор оригинала: 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 эмпирические показатели с вероятностями теории массового обслуживания.