Вставка данных MATLAB в таблицу базы данных PostgreSQL
sqlwrite( вставляет данные из таблицы MATLAB ® в таблицу базы данных. Если таблица существует в базе данных, эта функция добавляет данные из таблицы MATLAB в виде строк в существующей таблице базы данных. Если таблица не существует в базе данных, эта функция создает таблицу с указанным именем и затем вставляет данные в новую таблицу в виде строк. Этот синтаксис эквивалентен выполнению инструкций SQL, содержащих conn,tablename,data)CREATE TABLE и INSERT INTO Синтаксы SQL ANSI.
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)
conn - Подключение базы данных собственного интерфейса PostgreSQLconnection объектПодключение базы данных собственного интерфейса PostgreSQL, указанное как connection объект.
tablename - Имя таблицы базы данныхИмя таблицы базы данных, указанное как вектор символов или скаляр строки, обозначающий имя таблицы в базе данных.
Пример: 'employees'
Типы данных: char | string
data - Данные для вставкиДанные для вставки в таблицу базы данных, указанные как таблица.
Допустимые типы данных в таблице 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 | Тип данных существующего столбца базы данных |
|---|---|
| Числовой массив или массив ячеек числовых массивов |
|
| Массив ячеек векторов символов, строковый массив, массив datetime или массив duration |
|
| Массив длительности календаря | interval |
| Логический массив или массив ячеек логических массивов | bit |
| Массив ячеек символьных векторов или строкового массива |
|
Указанное имя новой таблицы базы данных должно быть уникальным для всех таблиц базы данных.
Допустимые типы данных в таблице MATLAB:
Числовой массив
Массив ячеек символьных векторов
Строковый массив
Массив Datetime
Массив длительности
Массив длительности календаря
Логический массив
sqlwrite функция игнорирует любые недопустимые типы данных и вставляет только допустимые переменные из MATLAB в качестве столбцов в новую таблицу базы данных.
sqlwrite функция преобразует тип данных переменной в тип данных по умолчанию столбца в таблице базы данных. Следующая таблица сопоставляет допустимые типы данных переменной таблицы MATLAB с типами данных по умолчанию столбца базы данных.
| Тип данных переменной таблицы MATLAB | Тип данных по умолчанию для столбца базы данных |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
массив ячеек символьных векторов или строковый массив |
Примечание Размер этого столбца равен сумме максимальной длины строки в строковом массиве и 100. |
Чтобы указать типы данных столбцов базы данных вместо значений по умолчанию, используйте 'ColumnType' аргумент пары имя-значение. Например, можно указать 'ColumnType',"bigint" для создания bigint в новой таблице базы данных.
Также, используя 'ColumnType' аргумент пары имя-значение, можно указать другие типы данных, которые отсутствуют в списке по умолчанию. Например, для вставки валюты укажите 'ColumnType',"money".
Принятые отсутствующие данные для вставки данных в базу данных зависят от типа данных переменной таблицы MATLAB и типа данных столбца в базе данных. Следующая таблица сопоставляет тип данных переменной таблицы MATLAB с типом данных столбца базы данных и указывает принятые отсутствующие данные для использования в каждом случае.
| Тип данных переменной таблицы MATLAB | Тип данных столбца базы данных | Принятые отсутствующие данные |
|---|---|---|
datetime множество | date или timestamp | NaT |
duration множество | time | NaN |
calendarDuration множество | interval | NaN |
double или single массив или массив ячеек double или single множества |
| 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' и вектор символов или строковый скаляр. Каталог служит контейнером для схем в базе данных и содержит связанные метаданные. База данных может иметь множество каталогов.
Пример: 'Catalog','toy_store'
Типы данных: char | string
'Schema' - Имя схемы базы данныхИмя схемы базы данных, указанное как разделенная запятыми пара, состоящая из 'Schema' и вектор символов или строковый скаляр. Схема определяет таблицы базы данных, представления, связи между таблицами и другие элементы. Каталог базы данных может иметь множество схем.
Пример: 'Schema','dbo'
Типы данных: char | string
'ColumnType' - Типы столбцов базы данныхТипы столбцов базы данных, указанные как разделенная запятыми пара, состоящая из 'ColumnType' и символьный вектор, строковый скаляр, клеточный массив символьных векторов или строковый массив. Этот аргумент пары имя-значение используется для определения пользовательских типов данных для столбцов в таблице базы данных. Укажите тип столбца для каждого столбца в таблице.
Пример: 'ColumnType',["numeric" "varchar(400)"]
Типы данных: char | string | cell
array2table | cell2table | close | postgresql | sqlread | struct2table
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.