mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-22 13:40:56 +08:00
59 lines
2.5 KiB
Bash
Executable File
59 lines
2.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# To avoid pw writing, add localhost:5432:*:postgres:test to ~/.pgpass
|
|
set -u
|
|
set -e
|
|
|
|
PWD=`pwd`
|
|
DIR=`dirname $0`
|
|
|
|
POSTGRES_HOST=${POSTGRES_HOST:-localhost}
|
|
POSTGRES_USER=${POSTGRES_USER:-postgres}
|
|
INSTALL_DB_META=${INSTALL_DB_META:-meta}
|
|
INSTALL_DB_MAIN=${INSTALL_DB_MAIN:-Test1}
|
|
|
|
echo "Connecting to $POSTGRES_HOST as user $POSTGRES_USER and with meta db $INSTALL_DB_META and main db $INSTALL_DB_MAIN"
|
|
|
|
cd $DIR
|
|
|
|
# Todo - read the ns and fields from the csv/tsv file
|
|
NAMESPACE="33_testNs"
|
|
psql -U $POSTGRES_USER -h $POSTGRES_HOST -d $INSTALL_DB_META -v ON_ERROR_STOP=1 <<EOF
|
|
SELECT add_namespace('$NAMESPACE' :: NAME);
|
|
SELECT add_field('$NAMESPACE' :: NAME, 'device_id', 'text', TRUE, TRUE, ARRAY ['VALUE-TIME'] :: field_index_type []);
|
|
SELECT add_field('$NAMESPACE' :: NAME, 'num_1', 'double precision', FALSE, FALSE, ARRAY ['VALUE-TIME'] :: field_index_type []);
|
|
SELECT add_field('$NAMESPACE' :: NAME, 'num_2', 'double precision', FALSE, FALSE, ARRAY ['VALUE-TIME'] :: field_index_type []);
|
|
SELECT add_field('$NAMESPACE' :: NAME, 'bool_1', 'boolean', FALSE, FALSE, ARRAY ['VALUE-TIME'] :: field_index_type []);
|
|
SELECT add_field('$NAMESPACE' :: NAME, 'string_1', 'text', FALSE, FALSE, ARRAY ['VALUE-TIME'] :: field_index_type []);
|
|
SELECT add_field('$NAMESPACE' :: NAME, 'string_2', 'text', FALSE, FALSE, ARRAY ['VALUE-TIME'] :: field_index_type []);
|
|
SELECT add_field('$NAMESPACE' :: NAME, 'field_only_ref2', 'text', FALSE, FALSE, ARRAY ['VALUE-TIME'] :: field_index_type []);
|
|
SELECT add_field('$NAMESPACE' :: NAME, 'field_only_dev2', 'double precision', FALSE, FALSE, ARRAY ['VALUE-TIME'] :: field_index_type []);
|
|
EOF
|
|
|
|
INPUT_DATA_DIR="input_data"
|
|
FILE_SUFFIX=".tsv"
|
|
DATASETS=`ls $INPUT_DATA_DIR/*$FILE_SUFFIX`
|
|
TEMPTABLENAME="copy_t"
|
|
|
|
for DS_PATH in $DATASETS; do
|
|
DATASET=`basename $DS_PATH $FILE_SUFFIX`
|
|
PARTITION_KEY=`echo $DATASET | cut -f2 -d_ `
|
|
echo "Setting up $DATASET with partitionkey $PARTITION_KEY"
|
|
|
|
psql -U $POSTGRES_USER -h $POSTGRES_HOST -d $INSTALL_DB_MAIN -v ON_ERROR_STOP=1 <<EOF
|
|
BEGIN;
|
|
DROP TABLE IF EXISTS $TEMPTABLENAME;
|
|
SELECT *
|
|
FROM create_temp_copy_table_one_partition('copy_t'::text, get_partition_for_key('$PARTITION_KEY'::text, 10 :: SMALLINT), 10 :: SMALLINT);
|
|
\COPY $TEMPTABLENAME FROM '$DS_PATH';
|
|
DROP TABLE IF EXISTS $DATASET;
|
|
CREATE SCHEMA IF NOT EXISTS test_input_data;
|
|
CREATE TABLE test_input_data.$DATASET AS SELECT * FROM $TEMPTABLENAME;
|
|
COMMIT;
|
|
EOF
|
|
|
|
done
|
|
|
|
cd $PWD
|
|
|
|
|