sqlwrite

Вставьте данные MATLAB в таблицу базы данных PostgreSQL

Описание

пример

sqlwrite(conn,tablename,data) вставляет данные из MATLAB® таблица в таблицу базы данных. Если таблица существует в базе данных, эта функция добавляет данные из таблицы MATLAB в виде строк в существующей таблице базы данных. Если таблица не существует в базе данных, эта функция создает таблицу с заданным именем таблицы, а затем вставляет данные как строки в новую таблицу. Этот синтаксис эквивалентен выполнению SQL- операторов, которые содержат CREATE TABLE и INSERT INTO Синтаксис ANSI SQL.

пример

sqlwrite(conn,tablename,data,Name,Value) использует дополнительные опции, заданные одним или несколькими аргументами пары "имя-значение". Для примера, 'Catalog',"toystore_doc" вставляет данные в таблицу базы данных, расположенную в каталоге базы данных с именем toystore_doc.

Примеры

свернуть все

Используйте подключение базы данных собственного интерфейса PostgreSQL для добавления данных о продукте из таблицы MATLAB ® в существующую таблицу в базе данных PostgreSQL.

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

datasource = "PostgreSQLDataSource";
username = "dbdev";
password = "matlab";
conn = postgresql(datasource,username,password);

Просмотр существующей таблицы базы данных productTable перед добавлением данных импортируйте его содержимое в MATLAB и отобразите последние несколько строк.

tablename = "productTable";
rows = sqlread(conn,tablename);
tail(rows,3)
ans=3×5 table
    productnumber    stocknumber    suppliernumber    unitcost    productdescription
    _____________    ___________    ______________    ________    __________________

          6          4.0088e+05          1004             8          "Sail Boat"    
          3            4.01e+05          1009            17          "Slinky"       
         10          8.8865e+05          1006            24          "Teddy Bear"   

Создайте таблицу MATLAB, которая содержит данные для одного продукта.

data = table(30,500000,1000,25,"Rubik's Cube", ...
    'VariableNames',["productnumber" "stocknumber" ...
    "suppliernumber" "unitcost" "productdescription"]);

Добавьте данные о продукте в таблицу базы данных productTable.

sqlwrite(conn,tablename,data)

Снова импортируйте содержимое таблицы базы данных в MATLAB и отобразите последние несколько строк. Результаты содержат новую строку для вставленного продукта.

rows = sqlread(conn,tablename);
tail(rows,4)
ans=4×5 table
    productnumber    stocknumber    suppliernumber    unitcost    productdescription
    _____________    ___________    ______________    ________    __________________

          6          4.0088e+05          1004             8         "Sail Boat"     
          3            4.01e+05          1009            17         "Slinky"        
         10          8.8865e+05          1006            24         "Teddy Bear"    
         30               5e+05          1000            25         "Rubik's Cube"  

Закройте подключение к базе данных.

close(conn)

Используйте подключение базы данных собственного интерфейса PostgreSQL для вставки данных о продукте из MATLAB ® в новую таблицу в базе данных PostgreSQL.

Создайте подключение базы данных собственного интерфейса PostgreSQL к базе данных PostgreSQL с помощью имени источника данных, имени пользователя и пароля.

datasource = "PostgreSQLDataSource";
username = "dbdev";
password = "matlab";
conn = postgresql(datasource,username,password);

Создайте таблицу MATLAB, которая содержит данные для двух продуктов.

data = table([30;40],[500000;600000],[1000;2000],[25;30], ...
    ["Rubik's Cube";"Doll House"],'VariableNames',["productnumber" ...
    "stocknumber" "suppliernumber" "unitcost" "productdescription"]);

Вставьте данные продукта в новую таблицу базы данных с именем toytable.

tablename = "toytable";
sqlwrite(conn,tablename,data)

Импортируйте содержимое таблицы базы данных в MATLAB и отобразите строки. Результаты содержат две строки для вставленных продуктов.

rows = sqlread(conn,tablename)
rows=2×5 table
    productnumber    stocknumber    suppliernumber    unitcost    productdescription
    _____________    ___________    ______________    ________    __________________

         30             5e+05            1000            25         "Rubik's Cube"  
         40             6e+05            2000            30         "Doll House"    

Закройте подключение к базе данных.

close(conn)

Используйте подключение базы данных собственного интерфейса PostgreSQL для вставки данных о продукте из MATLAB ® в новую таблицу в базе данных PostgreSQL. Задайте типы данных столбцов в новой таблице базы данных.

Создайте подключение базы данных собственного интерфейса PostgreSQL к базе данных PostgreSQL с помощью имени источника данных, имени пользователя и пароля.

datasource = "PostgreSQLDataSource";
username = "dbdev";
password = "matlab";
conn = postgresql(datasource,username,password);

Создайте таблицу MATLAB, которая содержит данные для двух продуктов.

data = table([30;40],[500000;600000],[1000;2000],[25;30], ...
    ["Rubik's Cube";"Doll House"],'VariableNames',["productnumber" ...
    "stocknumber" "suppliernumber" "unitcost" "productdescription"]);

Вставьте данные продукта в новую таблицу базы данных с именем toytable. Используйте 'ColumnType'аргумент в виде пары имя-значение и строковые массивы для определения типов данных всех столбцов в таблице базы данных.

tablename = "toytable";
coltypes = ["numeric" "numeric" "numeric" "numeric" "varchar(255)"];
sqlwrite(conn,tablename,data,'ColumnType',coltypes)

Импортируйте содержимое таблицы базы данных в MATLAB и отобразите строки. Результаты содержат две строки для вставленных продуктов.

rows = sqlread(conn,tablename)
rows=2×5 table
    productnumber    stocknumber    suppliernumber    unitcost    productdescription
    _____________    ___________    ______________    ________    __________________

         30             5e+05            1000            25         "Rubik's Cube"  
         40             6e+05            2000            30         "Doll House"    

Закройте подключение к базе данных.

close(conn)

Входные параметры

свернуть все

Подключение к базе данных собственного интерфейса PostgreSQL, заданное как connection объект.

Имя таблицы базы данных, заданное как вектор символов или строковый скаляр, обозначающий имя таблицы в базе данных.

Пример: 'employees'

Типы данных: char | string

Данные для вставки в таблицу базы данных, заданные как таблица.

Допустимые типы данных в таблице MATLAB:

  • Числовой массив

  • Массив ячеек из числовых массивов

  • Массив ячеек из символьных векторов

  • Строковые массивы

  • Массив Datetime

  • Массив длительности

  • Массив календарной длительности

  • Логический массив

  • Массив ячеек из логических массивов

Числовой массив может содержать следующие типы данных:

  • int8

  • uint8

  • int16

  • uint16

  • int32

  • uint32

  • int64

  • uint64

  • single

  • double

Для данных о дате и времени поддерживаемые форматы:

  • Дата - 'yyyy-MM-dd'

  • Время - 'hh:mm:ss'

  • Временная метка - 'yyyy-MM-dd HH:mm:ss'

Если данные о дате и времени заданы в недопустимом формате, sqlwrite функция автоматически преобразует данные в поддерживаемый формат.

Если массив ячеек из векторов символов или строковых массивов задан в недопустимом формате, то sqlwrite функция позволяет драйверу базы данных проверить формат. Если формат неожиданный, драйвер базы данных выдает ошибку.

Можно вставить данные в существующую таблицу базы данных или новую таблицу базы данных. Типы данных переменных в data варьируются в зависимости от того, существует ли таблица базы данных. Для допустимых типов данных см. Типы данных для существующей таблицы и Типы данных для новой таблицы.

Примечание

sqlwrite функция поддерживает только table тип данных для data входной параметр. Чтобы вставить данные, хранящиеся в структуре, массиве ячеек или числовой матрице, преобразуйте данные в table при помощи struct2table, cell2table, и array2table функций, соответственно.

Для вставки отсутствующих данных смотрите Принятые отсутствующие данные.

Пример: table([10;20],{'M';'F'})

Типы данных для существующей таблицы

Имена переменных таблицы MATLAB должны совпадать с именами столбцов в таблице базы данных. sqlwrite функция чувствительна к регистру.

При вставке данных в таблицу базы данных используйте типы данных, показанные в следующей таблице, чтобы убедиться, что данные имеют правильный тип данных. Эта таблица соответствует допустимым типам данных табличной переменной MATLAB типам данных столбца базы данных. Для примера, когда вы вставляете данные в столбец базы данных, который имеет BIT тип данных, убедитесь, что соответствующая переменная в таблице MATLAB является логическим массивом или массивом ячеек логических массивов.

Тип данных табличной переменной MATLABТип данных существующего столбца базы данных
Численный массив или массив ячеек из числовых массивов
  • smallint

  • integer

  • bigint

  • decimal

  • numeric

  • real

  • double precision

  • smallserial

  • serial

  • bigserial

Массив ячеек из символьных векторов, строковых массивов, массива datetime или массива длительности
  • date

  • time

  • timestamp

Массив календарной длительностиinterval
Логический массив или массив ячеек логических массивовbit
Массив ячеек из символьных векторов или строковых массивов
  • char

  • varchar

Типы данных для новой таблицы

Указанное имя таблицы для новой базы данных должно быть уникальным для всех таблиц в базе данных.

Допустимые типы данных в таблице MATLAB:

  • Числовой массив

  • Массив ячеек из символьных векторов

  • Строковые массивы

  • Массив Datetime

  • Массив длительности

  • Массив календарной длительности

  • Логический массив

sqlwrite функция игнорирует все недопустимые типы данных и вставляет только допустимые переменные из MATLAB как столбцы в новую таблицу базы данных.

sqlwrite функция преобразует тип данных переменной в тип данных по умолчанию столбца в таблице базы данных. Следующая таблица соответствует допустимым типам данных табличной переменной MATLAB типам данных по умолчанию столбца базы данных.

Тип данных табличной переменной MATLABТип данных по умолчанию столбца базы данных

int8 массив

smallint

int16 массив

smallint

int32 массив

integer

int64 массив

bigint

logical массив

boolean

single или double массив

numeric

datetime массив

timestamp

duration массив

time

calendarDuration массив

interval

массив ячеек из векторов символов или строковых массивов

varchar

Примечание

Размер этого столбца равен сумме максимальной длины строки в строковых массивах и 100.

Чтобы задать типы данных столбцов для базы данных вместо значений по умолчанию, используйте 'ColumnType' аргумент пары "имя-значение". Для примера можно задать 'ColumnType',"bigint" для создания bigint столбец в новой таблице базы данных.

Кроме того, использование 'ColumnType' аргумент пары "имя-значение", можно задать другие типы данных, которые не находятся в списке по умолчанию. Для примера, чтобы вставить валюту, задайте 'ColumnType',"money".

Принятые отсутствующие данные

Принятые отсутствующие данные для вставки данных в базу данных зависят от типа данных табличной переменной MATLAB и типа данных столбца в базе данных. Следующая таблица соответствует типу данных табличной переменной MATLAB типу данных столбца базы данных и задает принятые отсутствующие данные для использования в каждом случае.

Тип данных табличной переменной MATLABТип данных столбца базы данныхПринятые отсутствующие данные
datetime массивdate или timestampNaT
duration массивtimeNaN
calendarDuration массивintervalNaN
double или single массив или массив ячеек double или single массивы

numeric

NaN, [], или ''
массив ячеек из векторов символовdate или timestamp'NaT' или ''
массив ячеек из векторов символовtime'NaN' или ''
массив ячеек из векторов символовchar, varchar, или другого типа текстовых данных''
Строковые массивыdate или timestamp"", "NaT", или missing
Строковые массивыtime"", "NaN", или missing
Строковые массивыchar, varchar, или другого типа текстовых данныхmissing

Типы данных: table

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: sqlwrite(conn,"tablename",data,'ColumnType',["numeric" "timestamp" "money"]) вставляет данные в новую таблицу базы данных с именем tablename путем определения типов данных для всех столбцов в новой таблице базы данных.

Имя каталога базы данных, заданное как разделенная разделенными запятой парами, состоящая из 'Catalog' и вектор символов или строковый скаляр. Каталог служит контейнером для схем в базе данных и содержит связанную информацию о метаданных. База данных может иметь множество каталогов.

Пример: 'Catalog','toy_store'

Типы данных: char | string

Имя схемы базы данных, заданное как разделенная разделенными запятой парами, состоящая из 'Schema' и вектор символов или строковый скаляр. Схема определяет таблицы базы данных, представления, связи между таблицами и другими элементами. Каталог базы данных может иметь множество схем.

Пример: 'Schema','dbo'

Типы данных: char | string

Типы столбцов базы данных, заданные как разделенная разделенными запятой парами, состоящая из 'ColumnType' и вектор символов, строковый скаляр, массив ячеек векторов символов или строковых массивов. Используйте этот аргумент пары "имя-значение" для определения пользовательских типов данных для столбцов в таблице базы данных. Укажите тип столбца для каждого столбца таблицы.

Пример: 'ColumnType',["numeric" "varchar(400)"]

Типы данных: char | string | cell

Введенный в R2020b
Для просмотра документации необходимо авторизоваться на сайте