---
sidebar_position: 5
description: Create table and other functions to work with PostgreSQL in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, PostgreSQL]
---

import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

# Create table
 Creates an empty table in the database



`Function CreateTable(Val Table, Val ColoumnsStruct, Val Connection = "", Val Tls = "") Export`

  | Parameter | CLI option | Type | Required | Description |
  |-|-|-|-|-|
  | Table | --table | String | &#x2714; | Table name |
  | ColoumnsStruct | --cols | Structure Of KeyAndValue | &#x2714; | Column structure: Key > Name, Value > Data type |
  | Connection | --dbc | String, Arbitrary | &#x2716; | Connection or connection string |
  | Tls | --tls | Structure Of KeyAndValue | &#x2716; | TLS settings, if necessary. See GetTlsSettings |

  
  Returns:  Map Of KeyAndValue - Result of query execution

:::tip
The list of available types is described on the initial page of the PostgreSQL library documentation
:::
<br/>


```bsl title="1C:Enterprise/OneScript code example"
    Address  = "127.0.0.1";
    Login    = "bayselonarrend";
    Password = "12we...";
    Base     = "testbase1";

    TLS = True;
    Port = 5432;
    ConnectionString = OPI_PostgreSQL.GenerateConnectionString(Address, Base, Login, Password, Port);

    If TLS Then
        TLSSettings = OPI_PostgreSQL.GetTLSSettings(True);
    Else
        TLSSettings = Undefined;
    EndIf;

    Table = "testtable";

    ColoumnsStruct = New Structure;
    ColoumnsStruct.Insert("bool_field"       , "BOOL");
    ColoumnsStruct.Insert("oldchar_field"    , """char""");
    ColoumnsStruct.Insert("smallint_field"   , "SMALLINT");
    ColoumnsStruct.Insert("smallserial_field", "SMALLSERIAL");
    ColoumnsStruct.Insert("int_field"        , "INT");
    ColoumnsStruct.Insert("serial_field"     , "SERIAL");
    ColoumnsStruct.Insert("oid_field"        , "OID");
    ColoumnsStruct.Insert("bigint_field"     , "BIGINT");
    ColoumnsStruct.Insert("bigserial_field"  , "BIGSERIAL");
    ColoumnsStruct.Insert("real_field"       , "REAL");
    ColoumnsStruct.Insert("dp_field"         , "DOUBLE PRECISION");
    ColoumnsStruct.Insert("text_field"       , "TEXT");
    ColoumnsStruct.Insert("varchar_field"    , "VARCHAR");
    ColoumnsStruct.Insert("charn_field"      , "CHAR(3)");
    ColoumnsStruct.Insert("char_field"       , "CHAR");
    ColoumnsStruct.Insert("name_field"       , "NAME");
    ColoumnsStruct.Insert("bytea_field"      , "BYTEA");
    ColoumnsStruct.Insert("ts_field"         , "TIMESTAMP");
    ColoumnsStruct.Insert("tswtz_field"      , "TIMESTAMP WITH TIME ZONE");
    ColoumnsStruct.Insert("ip_field"         , "INET");
    ColoumnsStruct.Insert("json_field"       , "JSON");
    ColoumnsStruct.Insert("jsonb_field"      , "JSONB");
    ColoumnsStruct.Insert("date_field"       , "DATE");
    ColoumnsStruct.Insert("time_field"       , "TIME");
    ColoumnsStruct.Insert("uuid_field"       , "UUID");
    ColoumnsStruct.Insert("numeric_field"    , "NUMERIC(15, 2)");

    // When using the connection string, a new connection is initialised,
    // which will be closed after the function is executed.
    // If several operations are performed, it is desirable to use one connection,
    // previously created by the CreateConnection function()
    Result = OPI_PostgreSQL.CreateTable(Table, ColoumnsStruct, ConnectionString, TLSSettings);
```
 

 <Tabs>
  
    <TabItem value="bash" label="Bash" default>
        ```bash
            # JSON data can also be passed as a path to a .json file
            
            oint postgres CreateTable \
             --table "somename" \
             --cols "{'bool_field':'BOOL','oldchar_field':'\"char\"','smallint_field':'SMALLINT','smallserial_field':'SMALLSERIAL','int_field':'INT','serial_field':'SERIAL','oid_field':'OID','bigint_field':'BIGINT','bigserial_field':'BIGSERIAL','real_field':'REAL','dp_field':'DOUBLE PRECISION','text_field':'TEXT','varchar_field':'VARCHAR','charn_field':'CHAR(3)','char_field':'CHAR','name_field':'NAME','bytea_field':'BYTEA','ts_field':'TIMESTAMP','tswtz_field':'TIMESTAMP WITH TIME ZONE','ip_field':'INET','json_field':'JSON','jsonb_field':'JSONB','date_field':'DATE','time_field':'TIME','uuid_field':'UUID','numeric_field':'NUMERIC(15, 2)','wtf_field':'WTF'}" \
             --dbc "postgresql://bayselonarrend:***@127.0.0.1:5432/" \
             --tls "{'use_tls':true,'accept_invalid_certs':true}"
        ```
    </TabItem>
  
    <TabItem value="bat" label="CMD/Bat" default>
        ```batch
            :: JSON data can also be passed as a path to a .json file
            
            oint postgres CreateTable ^
             --table "somename" ^
             --cols "{'bool_field':'BOOL','oldchar_field':'\"char\"','smallint_field':'SMALLINT','smallserial_field':'SMALLSERIAL','int_field':'INT','serial_field':'SERIAL','oid_field':'OID','bigint_field':'BIGINT','bigserial_field':'BIGSERIAL','real_field':'REAL','dp_field':'DOUBLE PRECISION','text_field':'TEXT','varchar_field':'VARCHAR','charn_field':'CHAR(3)','char_field':'CHAR','name_field':'NAME','bytea_field':'BYTEA','ts_field':'TIMESTAMP','tswtz_field':'TIMESTAMP WITH TIME ZONE','ip_field':'INET','json_field':'JSON','jsonb_field':'JSONB','date_field':'DATE','time_field':'TIME','uuid_field':'UUID','numeric_field':'NUMERIC(15, 2)','wtf_field':'WTF'}" ^
             --dbc "postgresql://bayselonarrend:***@127.0.0.1:5432/" ^
             --tls "{'use_tls':true,'accept_invalid_certs':true}"
        ```
    </TabItem>
</Tabs>


```json title="Result"
{
 "result": true
}
```
