exponenta event banner

sqlwrite

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

Описание

пример

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

пример

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 или массив duration
  • 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, или другой тип текстовых данных''
строковый массив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" "image"]) вставляет данные в новую таблицу базы данных с именем tablename путем указания типов данных для всех столбцов в новой таблице базы данных.

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

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

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

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

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

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

Представлен в R2020b