sqlwrite

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

Описание

пример

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

пример

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

Примеры

свернуть все

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

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

datasource = "MySQLNative";
username = "root";
password = "matlab";
conn = mysql(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)

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

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

datasource = "MySQLNative";
username = "root";
password = "matlab";
conn = mysql(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)

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

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

datasource = "MySQLNative";
username = "root";
password = "matlab";
conn = mysql(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)

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

свернуть все

Собственный компонент MySQL соединяет интерфейсом с соединением с базой данных в виде 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Тип данных существующего столбца базы данных
Числовой массив или массив ячеек числовых массивов
  • INTEGER

  • SMALLINT

  • DECIMAL

  • NUMERIC

  • FLOAT

  • REAL

  • DOUBLE PRECISION

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

  • TIME

  • TIMESTAMP

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

  • VARCHAR

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

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

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

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

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

  • Массив строк

  • Массив datetime

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

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

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

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

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

int8 массив

TINYINT

int16 массив

SMALLINT

int32 массив

INTEGER

int64 массив

BIGINT

logical массив

BIT

single или double массив

NUMERIC

datetime массив

TIMESTAMP

duration массив

TIME

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

VARCHAR

Примечание

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

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

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

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

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

Тип данных табличной переменной MATLABТип данных столбца базы данныхПринятые Недостающие данные
datetime массивDate или TimestampNaT
duration массивTimeNaN
double или single массив или массив ячеек double или single массивы

Numeric

NaN, [], или ''
массив ячеек из символьных векторовDate или Timestamp'NaT' или ''
массив ячеек из символьных векторовTime'NaN' или ''
массив ячеек из символьных векторовChar, Varchar, или другой тип данных text''
массив строкDate или Timestamp""NAT, или missing
массив строкTime""NaN, или missing
массив строкChar, Varchar, или другой тип данных textmissing

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

Аргументы name-value

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

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

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

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

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

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

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

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

Введенный в R2020b