exponenta event banner

datainsert

(Подлежит удалению) Экспорт данных MATLAB в таблицу базы данных

datainsert функция будет удалена в следующей версии. Используйте sqlwrite вместо этого функция. Дополнительные сведения см. в разделе Вопросы совместимости.

Описание

пример

datainsert(conn,tablename,colnames,data) экспортирует данные из рабочей области MATLAB ® и вставляет их в существующие столбцы таблицы базы данных с помощью подключения к базе данныхconn.

Примеры

свернуть все

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

Создание подключения к базе данных conn в базу данных MySQL с использованием собственного интерфейса ODBC. Здесь этот код предполагает, что вы подключаетесь к источнику данных ODBC с именем MySQL с именем пользователя и паролем. Эта база данных содержит таблицу inventoryTable с этими столбцами:

  • productNumber

  • Quantity

  • Price

  • inventoryDate

conn = database('MySQL','username','pwd');

Отображение последних строк в inventoryTable перед вставкой данных.

curs = exec(conn,'SELECT * FROM inventoryTable');
curs = fetch(curs);
curs.Data
ans = 

    ...    
    [14]    [2000]    [19.1000]    '2014-10-22 10:52...'
    [15]    [1200]    [20.3000]    '2014-10-22 10:52...'
    [16]    [1400]    [34.3000]    '1999-12-31 00:00...'

Создание массива ячеек имен столбцов для таблицы базы данных inventoryTable.

colnames = {'productNumber','Quantity','Price','inventoryDate'};

Определите массив ячеек входных данных для вставки.

data = {50 100 15.50 datestr(now,'yyyy-mm-dd HH:MM:SS')};

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

tablename = 'inventoryTable';

datainsert(conn,tablename,colnames,data) 

Отображение вставленных данных в inventoryTable.

curs = exec(conn,'SELECT * FROM inventoryTable');
curs = fetch(curs);
curs.Data
ans = 

    ...
    [15]    [1200]    [20.3000]    '2014-10-22 10:52...'
    [16]    [1400]    [34.3000]    '1999-12-31 00:00...'
    [50]    [ 100]    [15.5000]    '2014-10-22 11:29...'

Последняя строка содержит вставленные данные.

После завершения работы с cursor объект, закройте его.

close(curs)

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

close(conn)

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

Создание подключения к базе данных conn в базу данных MySQL с использованием драйвера JDBC. Используйте Vendor аргумент пары имя-значение database для указания соединения с базой данных MySQL. Здесь этот код предполагает, что вы подключаетесь к базе данных с именем dbname на сервере базы данных с именем sname с именем пользователя и паролем. Эта база данных содержит таблицу inventoryTable с этими столбцами:

  • productNumber

  • Quantity

  • Price

  • inventoryDate

conn = database('dbname','username','pwd', ...
    'Vendor','MySQL', ...
    'Server','sname');

Отображение последних строк в inventoryTable перед вставкой данных.

curs = exec(conn,'SELECT * FROM inventoryTable');
curs = fetch(curs);
curs.Data
ans = 

    ...    
    [14]    [2000]    [19.1000]    '2014-10-22 10:52...'
    [15]    [1200]    [20.3000]    '2014-10-22 10:52...'
    [16]    [1400]    [34.3000]    '1999-12-31 00:00...'

Создание массива ячеек имен столбцов для таблицы базы данных inventoryTable.

colnames = {'productNumber','Quantity','Price','inventoryDate'};

Определите входные данные как таблицу.

data = table(50,100,15.50,{datestr(now,'yyyy-mm-dd HH:MM:SS')}, ...
    'VariableNames',colnames);

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

tablename = 'inventoryTable';

datainsert(conn,tablename,colnames,data) 

Отображение вставленных данных в inventoryTable.

curs = exec(conn,'SELECT * FROM inventoryTable');
curs = fetch(curs);
curs.Data
ans = 

    ...
    [15]    [1200]    [20.3000]    '2014-10-22 10:52...'
    [16]    [1400]    [34.3000]    '1999-12-31 00:00...'
    [50]    [ 100]    [15.5000]    '2014-10-22 11:29...'

Последняя строка содержит вставленные данные.

После завершения работы с cursor объект, закройте его.

close(curs)

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

close(conn)

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

Создание подключения к базе данных conn в базу данных MySQL с помощью собственного интерфейса ODBC. Здесь этот код предполагает, что вы подключаетесь к источнику данных ODBC с именем MySQL с именем пользователя и паролем. Эта база данных содержит таблицу inventoryTable с этими столбцами:

  • productNumber

  • Quantity

  • Price

  • inventoryDate

conn = database('MySQL','username','pwd');

Отображение последних строк в inventoryTable перед вставкой данных.

curs = exec(conn,'SELECT * FROM inventoryTable');
curs = fetch(curs);
curs.Data
ans = 

    ...    
    [14]    [2000]    [19.1000]    '2014-10-22 10:52...'
    [15]    [1200]    [20.3000]    '2014-10-22 10:52...'
    [16]    [1400]    [34.3000]    '1999-12-31 00:00...'

Создание массива ячеек имен столбцов для таблицы базы данных inventoryTable.

colnames = {'productNumber','Quantity','Price','inventoryDate'};

Определите входные данные как структуру.

data = struct('productNumber',50,'Quantity',100,'Price',15.50, ...
    'inventoryDate',datestr(now,'yyyy-mm-dd HH:MM:SS'));

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

tablename = 'inventoryTable';

datainsert(conn,tablename,colnames,data) 

Отображение вставленных данных в inventoryTable.

curs = exec(conn,'SELECT * FROM inventoryTable');
curs = fetch(curs);
curs.Data
ans = 

    ...
    [15]    [1200]    [20.3000]    '2014-10-22 10:52...'
    [16]    [1400]    [34.3000]    '1999-12-31 00:00...'
    [50]    [ 100]    [15.5000]    '2014-10-22 11:29...'

Последняя строка содержит вставленные данные.

После завершения работы с cursor объект, закройте его.

close(curs)

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

close(conn)

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

Создание подключения к базе данных conn в базу данных MySQL с использованием драйвера JDBC. Используйте Vendor аргумент пары имя-значение database для указания соединения с базой данных MySQL. Здесь этот код предполагает, что вы подключаетесь к базе данных с именем dbname на сервере базы данных с именем sname с именем пользователя и паролем. Эта база данных содержит таблицу salesVolume со столбцом stockNumber и колонки для каждого месяца года.

conn = database('dbname','username','pwd', ...
    'Vendor','MySQL', ...
    'Server','sname');

Отображение последних строк в salesVolume перед вставкой данных.

curs = exec(conn,'SELECT * FROM salesVolume');
curs = fetch(curs);
curs.Data
ans = 

  Columns 1 through 8

    ...
    [470816]    [3100]    [9400]    [1540]    [1500]    [1350]    [1190]    [ 900]
    [510099]    [ 235]    [1800]    [1040]    [ 900]    [ 750]    [ 700]    [ 400]
    [899752]    [ 123]    [1700]    [ 823]    [ 701]    [ 689]    [ 621]    [ 545]

  Columns 9 through 13

    ...
    [867]    [ 923]    [1400]    [ 3000]    [35000]
    [350]    [ 500]    [ 100]    [ 3000]    [18000]
    [421]    [ 495]    [ 650]    [ 4200]    [11000]

Создание массива ячеек имен столбцов для таблицы базы данных salesVolume.

colnames = {'stockNumber','January','February' ...
    'March','April','May', ...
    'June','July','August', ...
    'September','October','November', ...
    'December'};

Определение числовой матрицы data содержит данные оборота.

data = [777666,0,350,400,450,250,450,500,515, ...
    235,100,300,600];

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

tablename = 'salesVolume';

datainsert(conn,tablename,colnames,data) 

Отображение вставленных данных в salesVolume.

curs = exec(conn,'SELECT * FROM salesVolume');
curs = fetch(curs);
curs.Data
ans = 

  Columns 1 through 8

    ...
    [510099]    [ 235]    [1800]    [1040]    [ 900]    [ 750]    [ 700]    [ 400]
    [899752]    [ 123]    [1700]    [ 823]    [ 701]    [ 689]    [ 621]    [ 545]
    [777666]    [   0]    [ 350]    [ 400]    [ 450]    [ 250]    [ 450]    [ 500]

Columns 9 through 13

    ...
    [350]    [ 500]    [ 100]    [ 3000]    [18000]
    [421]    [ 495]    [ 650]    [ 4200]    [11000]
    [515]    [ 235]    [ 100]    [  300]    [  600]

Последняя строка содержит вставленные данные.

После завершения работы с cursor объект, закройте его.

close(curs)

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

close(conn)

Входные аргументы

свернуть все

Подключение к базе данных, указанное как ODBC connection объект или JDBC connection объект, созданный с помощью database функция.

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

Пример: 'employees'

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

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

Пример: {'col1','col2','col3'}

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

Вставка данных, указанных как массив ячеек, числовая матрица, таблица, структура или массив наборов данных.

При подключении к базе данных с использованием драйвера JDBC перед запуском преобразуйте данные вставки в поддерживаемый формат datainsert. Если data содержит даты, время или метки времени MATLAB, используйте следующее форматирование:

  • Даты должны быть символьными векторами формы yyyy-mm-dd.

  • Времена должны быть символьными векторами формы HH:MM:SS.

  • Метки времени должны быть векторами символов формы yyyy-mm-dd HH:MM:SS.FFF.

Параметры настройки базы данных NullNumberWrite и NullStringWrite не применяются к этой функции. Если data содержит null записей и NaNs, преобразовать эти записи в пустое значение ''.

datainsert функция поддерживает вставку номеров дат MATLAB и NaNs когда data - числовая матрица. Номера дат, вставленные в столбцы даты и времени базы данных, преобразуются в java.sql.Date. При вставке в целевую базу данных все преобразованные данные даты и времени точно возвращаются в собственный формат базы данных.

Если data является структурой, то имена полей в структуре должны совпадать colnames.

Если data является таблицей или массивом наборов данных, то имена переменных в таблице или массиве наборов данных должны совпадать colnames.

Совет

  • При установке подключения к базе данных с использованием драйвера JDBC datainsert работает быстрее, чем fastinsert.

  • datainsert использует SQL TRANSACTION оператор для вставки записей с более высокой производительностью для этих баз данных:

    • Microsoft ® SQL Server ®

    • MySQL

    • Oracle ®

    • PostgreSQL

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

  • Значение AutoCommit свойство в connection объект определяет, datainsert автоматически фиксирует данные в базе данных.

    • Для просмотра AutoCommit значение, доступ к нему с помощью connection объект; например, conn.AutoCommit.

    • Для установки AutoCommit значение, используйте соответствующий аргумент пары имя-значение в database функция.

    • Чтобы зафиксировать данные в базе данных, используйте commit функция или выпуск SQL COMMIT оператор с использованием exec функция.

    • Для отката данных используйте rollback или выдать SQL ROLLBACK оператор с использованием exec функция.

Альтернативная функциональность

Для экспорта данных MATLAB в базу данных можно использовать fastinsert и insert функции. Для максимальной производительности используйте datainsert.

Вопросы совместимости

развернуть все

Не рекомендуется начинать с R2018a

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