fastinsert

(Чтобы быть удаленным), Добавляют данные MATLAB к таблицам базы данных

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

Синтаксис

fastinsert(conn,tablename,colnames,data)

Описание

пример

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

Вы не задаете тип данных, которые вы экспортируете. Данные экспортированы в его текущем формате MATLAB.

Примеры

свернуть все

Во-первых, соединитесь с базой данных Microsoft® SQL Server®. Затем экспортируйте данные из MATLAB® в базу данных и закройте соединение с базой данных.

Создайте соединение с базой данных к базе данных Microsoft® SQL Server® с аутентификацией Windows®. Задайте пустое имя пользователя и пароль.

datasource = 'MS SQL Server Auth';
conn = database(datasource,'','');

Проверяйте соединение с базой данных. Если свойство Message пусто, связь успешна.

conn.Message
ans =

     []

Выберите и отобразите все строки в таблице, отсортированной по номеру продуктов с помощью функции select.

selectquery = 'SELECT * FROM productTable ORDER BY productNumber';

data = select(conn,selectquery)
data = 

    productNumber    stockNumber    supplierNumber    unitCost    productDescription
    _____________    ___________    ______________    ________    __________________

    1                4.0035e+05     1001              14          'Building Blocks' 
    2                4.0031e+05     1002               9          'Painting Set'    
    3                  4.01e+05     1009              17          'Slinky'          

Сохраните имена столбцов productTable в массиве ячеек.

tablename = 'productTable';
colnames = {'productNumber','stockNumber','supplierNumber', ...
    'unitCost','productDescription'};

Храните данные для вставки в массиве ячеек, который содержит эти значения:

  • productNumber, равный 4

  • stockNumber, равный 500 565

  • supplierNumber, равный 1 010

  • unitCost, равный 20$

  • productDescription, равный 'Cooking Set'

Затем преобразуйте массив ячеек в таблицу.

insertdata = {4,500565,1010,20,'Cooking Set'};
insertdata = cell2table(insertdata,'VariableNames',colnames)
insertdata = 

    productNumber    stockNumber    supplierNumber    unitCost    productDescription
    _____________    ___________    ______________    ________    __________________

    4                5.0057e+05     1010              20          'Cooking Set'     

Вставьте данные в таблицу.

fastinsert(conn,tablename,colnames,insertdata)

Выберите и отобразите все строки в таблице снова.

data = select(conn,selectquery)
data = 

    productNumber    stockNumber    supplierNumber    unitCost    productDescription
    _____________    ___________    ______________    ________    __________________

    1                4.0035e+05     1001              14          'Building Blocks' 
    2                4.0031e+05     1002               9          'Painting Set'    
    3                  4.01e+05     1009              17          'Slinky'          
    4                5.0057e+05     1010              20          'Cooking Set'     

Новая строка появляется в productTable с данными из insertdata.

Закройте соединение с базой данных.

close(conn)

Во-первых, соединитесь с базой данных Microsoft® SQL Server®. Затем экспортируйте несколько строк данных из MATLAB® в базу данных и закройте соединение с базой данных.

Создайте соединение с базой данных ODBC к базе данных Microsoft® SQL Server® с аутентификацией Windows®. Задайте пустое имя пользователя и пароль.

datasource = 'MS SQL Server Auth';
conn = database(datasource,'','');

Проверяйте соединение с базой данных. Если свойство Message пусто, связь успешна.

conn.Message
ans =

     []

Выберите и отобразите данные в таблице inventoryTable. Импортируйте данные с помощью функции select.

selectquery = 'SELECT * FROM inventoryTable';
data = select(conn,selectquery)
data = 

    productNumber    Quantity    Price    inventoryDate
    _____________    ________    _____    _____________

     1               1700        15       '2014-09-23' 
     2               1200         9       '2014-07-08' 
     3                356        17       '2014-05-14' 
     4               2580        21       '2013-06-08' 
     5               9000         3       '2012-09-14' 
     6               4540         8       '2013-12-25' 
     7               6034        16       '2014-08-06' 
     8               8350         5       '2011-06-18' 
     9               2339        13       '2011-02-09' 
    10                723        24       '2012-03-14' 

Присвойте несколько строк данных к массиву ячеек insertdata. Каждая строка содержит данные для столбцов в inventoryTable. Первая строка данных содержит:

  • Номер продуктов равняется 11

  • Количество равняется 125

  • Цена составляет 23,00$

  • Дата материально-технических ресурсов является текущей датой

insertdata = {11,125,23.00,datestr(now,'yyyy-mm-dd'); ...
    12,1160,14.7,datestr(now,'yyyy-mm-dd'); ...
    13,150,54.5,datestr(now,'yyyy-mm-dd')};

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

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

Вставьте данные в таблицу.

fastinsert(conn,tablename,colnames,insertdata)

Выберите и отобразите данные в таблице inventoryTable снова.

data = select(conn,selectquery)
data = 

    productNumber    Quantity    Price    inventoryDate
    _____________    ________    _____    _____________

     1               1700        15       '2014-09-23' 
     2               1200         9       '2014-07-08' 
     3                356        17       '2014-05-14' 
     4               2580        21       '2013-06-08' 
     5               9000         3       '2012-09-14' 
     6               4540         8       '2013-12-25' 
     7               6034        16       '2014-08-06' 
     8               8350         5       '2011-06-18' 
     9               2339        13       '2011-02-09' 
    10                723        24       '2012-03-14' 
    11                125        23       '2016-11-02' 
    12               1160        15       '2016-11-02' 
    13                150        55       '2016-11-02' 

Три новых строки появляются в inventoryTable с данными из insertdata.

Закройте соединение с базой данных.

close(conn)

Во-первых, соединитесь с базой данных Microsoft® SQL Server®. Затем экспортируйте числовые данные из MATLAB® в базу данных и закройте соединение с базой данных.

Создайте соединение с базой данных ODBC к базе данных Microsoft® SQL Server® с аутентификацией Windows®. Задайте пустое имя пользователя и пароль.

datasource = 'MS SQL Server Auth';
conn = database(datasource,'','');

Проверяйте соединение с базой данных. Если свойство Message пусто, связь успешна.

conn.Message
ans =

     []

Задайте числовой матричный numdata, который содержит данные об объеме продаж.

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

Выберите и отобразите данные в таблице salesVolume перед вставкой. Импортируйте данные с помощью функции select.

selectquery = 'SELECT * FROM salesVolume';
data = select(conn,selectquery)
data = 

    StockNumber    January    February    March    April    May     June    July    August    September    October    November    December
    ___________    _______    ________    _____    _____    ____    ____    ____    ______    _________    _______    ________    ________

    1.2597e+05     1400       1100         981      882      794     752     654    773        809          980        3045       19000   
    2.1257e+05     2400       1721        1414     1191      983     825     731    653        723          790        1400        5000   
    3.8912e+05     1800       1200         890      670      550     450     400    410        402          450        1200       16000   
    4.0031e+05     3000       2400        1800     1500     1200     900     700    650       1670         2500        6000       15000   
    4.0034e+05     4300          0        2600     1800     1600    1550     895    700        750          900        8000       24000   
    4.0035e+05     5000       3500        2800     2300     1700    1400    1000    900       1600         3300       12000       20000   
    4.0046e+05     1200        900         800      500      399     345     300    175        760         1500        5500       17000   
    4.0088e+05     3000       2400        1500     1500     1300    1100     900    867        923         1100        4000       32000   
      4.01e+05     3000       1500        1000      900      750     700     400    350        500         1100        3000       12000   
    8.8865e+05        0        900         821      701      689     621     545    421        495          550        4200       12000   
    4.0814e+05     6000       3100        8800     2300     1700    1400    1000    900       1600         3300       12000       25000   
    2.1046e+05     1800       9700         800      500     3997     349     300    175        760         1500        5500       27000   
    4.7082e+05     3100       9400        1540     1500     1350    1190     900    867        923         1400        3000       35000   
     5.101e+05      235       1800        1040      900      750     700     400    350        500          100        3000       18000   
    8.9975e+05      123       1700         823      701      689     621     545    421        495          650        4200       11000   

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

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

Вставьте данные в таблицу.

fastinsert(conn,tablename,colnames,numdata)

Выберите и отобразите данные в таблице salesVolume снова.

data = select(conn,selectquery)
data = 

    StockNumber    January    February    March    April    May     June    July    August    September    October    November    December
    ___________    _______    ________    _____    _____    ____    ____    ____    ______    _________    _______    ________    ________

    1.2597e+05     1400       1100         981      882      794     752     654    773        809          980        3045       19000   
    2.1257e+05     2400       1721        1414     1191      983     825     731    653        723          790        1400        5000   
    3.8912e+05     1800       1200         890      670      550     450     400    410        402          450        1200       16000   
    4.0031e+05     3000       2400        1800     1500     1200     900     700    650       1670         2500        6000       15000   
    4.0034e+05     4300          0        2600     1800     1600    1550     895    700        750          900        8000       24000   
    4.0035e+05     5000       3500        2800     2300     1700    1400    1000    900       1600         3300       12000       20000   
    4.0046e+05     1200        900         800      500      399     345     300    175        760         1500        5500       17000   
    4.0088e+05     3000       2400        1500     1500     1300    1100     900    867        923         1100        4000       32000   
      4.01e+05     3000       1500        1000      900      750     700     400    350        500         1100        3000       12000   
    8.8865e+05        0        900         821      701      689     621     545    421        495          550        4200       12000   
    4.0814e+05     6000       3100        8800     2300     1700    1400    1000    900       1600         3300       12000       25000   
    2.1046e+05     1800       9700         800      500     3997     349     300    175        760         1500        5500       27000   
    4.7082e+05     3100       9400        1540     1500     1350    1190     900    867        923         1400        3000       35000   
     5.101e+05      235       1800        1040      900      750     700     400    350        500          100        3000       18000   
    8.9975e+05      123       1700         823      701      689     621     545    421        495          650        4200       11000   
    7.7767e+05        0        350         400      450      250     450     500    515        235          100         300         600   

Новая строка появляется в salesVolume с данными из numdata.

Закройте соединение с базой данных.

close(conn)

Во-первых, соединитесь с базой данных Microsoft® SQL Server®. Затем экспортируйте данные из MATLAB® в базу данных и фиксируйте транзакцию вставки. Закройте соединение с базой данных.

Создайте соединение с базой данных ODBC к базе данных Microsoft® SQL Server® с аутентификацией Windows®. Задайте пустое имя пользователя и пароль. Используйте аргумент пары "имя-значение" AutoCommit, чтобы задать вручную передающие транзакции к базе данных.

datasource = 'MS SQL Server Auth';
conn = database(datasource,'','','AutoCommit','off');

Проверяйте соединение с базой данных. Если свойство Message пусто, связь успешна.

conn.Message
ans =

     []

Вставьте массив ячеек data в таблицу inventoryTable с именами столбцов colnames.

data = {157,358,740.00,datestr(now,'yyyy-mm-dd HH:MM:SS')};
colnames = {'productNumber','Quantity','Price','inventoryDate'};
tablename = 'inventoryTable';

fastinsert(conn,tablename,colnames,data)

Фиксируйте транзакцию вставки.

commit(conn)

Закройте соединение с базой данных.

close(conn)

Во-первых, соединитесь с базой данных Microsoft® SQL Server®. Затем экспортируйте булевы данные из MATLAB® в базу данных. Закройте соединение с базой данных.

Создайте соединение с базой данных ODBC к базе данных Microsoft® SQL Server® с аутентификацией Windows®. Задайте пустое имя пользователя и пароль.

datasource = 'MS SQL Server Auth';
conn = database(datasource,'','');

Эта база данных содержит таблицу Invoice с этими столбцами:

  • InvoiceNumber

  • InvoiceDate

  • productNumber

  • Paid

  • Receipt

Проверяйте соединение с базой данных. Если свойство Message пусто, то связь успешна.

conn.Message
ans =

     []

Отобразите данные в таблице Invoice перед вставкой.

selectquery = 'SELECT * FROM Invoice';
data = select(conn,selectquery)
data =

  10×5 table

    InvoiceNumber           InvoiceDate           ProductNumber    Paid        Receipt    
    _____________    _________________________    _____________    _____    ______________

     2101            '2010-08-01 00:00:00.000'     1               false    [8000×1 uint8]
     3546            '2010-03-01 00:00:00.000'     2               true     [8000×1 uint8]
    33116            '2011-05-15 00:00:00.000'     3               true     [8000×1 uint8]
    34155            '2011-07-12 00:00:00.000'     4               false    [8000×1 uint8]
    34267            '2011-07-22 00:00:00.000'     5               true     [8000×1 uint8]
    37197            '2011-09-03 00:00:00.000'     6               true     [8000×1 uint8]
    37281            '2011-09-21 00:00:00.000'     7               false    [8000×1 uint8]
    41011            '2011-12-12 00:00:00.000'     8               true     [8000×1 uint8]
    61178            '2012-01-15 00:00:00.000'     9               false    [8000×1 uint8]
    62145            '2012-01-23 00:00:00.000'    10               true     [8000×1 uint8]

Создайте переменную insertdata как структуру, содержащую номер счета-фактуры 2105, номер продуктов 11 и булевы данные false, чтобы иметь значение неоплаченный. Булевы данные представлены как тип данных MATLAB® logical. Этот код принимает, что изображение получения отсутствует.

insertdata.InvoiceNumber{1} = 2105;
insertdata.InvoiceDate{1} = datestr(now,'yyyy-mm-dd HH:MM:SS');
insertdata.productNumber{1} = 11;
insertdata.Paid{1} = false;

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

colnames = {'InvoiceNumber';'InvoiceDate';'productNumber';'Paid'};
tablename = 'Invoice';

fastinsert(conn,tablename,colnames,insertdata)

Просмотрите новую запись в базе данных, чтобы проверить, что значение столбца Paid является булевской переменной. В некоторых базах данных логическое значение MATLAB® false показывает булевым false, No или снятым флажком.

data = select(conn,selectquery)
data =

  11×5 table

    InvoiceNumber           InvoiceDate           ProductNumber    Paid        Receipt    
    _____________    _________________________    _____________    _____    ______________

     2101            '2010-08-01 00:00:00.000'     1               false    [8000×1 uint8]
     3546            '2010-03-01 00:00:00.000'     2               true     [8000×1 uint8]
    33116            '2011-05-15 00:00:00.000'     3               true     [8000×1 uint8]
    34155            '2011-07-12 00:00:00.000'     4               false    [8000×1 uint8]
    34267            '2011-07-22 00:00:00.000'     5               true     [8000×1 uint8]
    37197            '2011-09-03 00:00:00.000'     6               true     [8000×1 uint8]
    37281            '2011-09-21 00:00:00.000'     7               false    [8000×1 uint8]
    41011            '2011-12-12 00:00:00.000'     8               true     [8000×1 uint8]
    61178            '2012-01-15 00:00:00.000'     9               false    [8000×1 uint8]
    62145            '2012-01-23 00:00:00.000'    10               true     [8000×1 uint8]
     2105            '2017-01-04 10:19:42.000'    11               false    ''            

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

Закройте соединение с базой данных.

close(conn)

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

свернуть все

Соединение с базой данных, заданное как объект connection, создается с функцией database.

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

Пример: 'employees'

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

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

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

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

Данные, чтобы вставить, заданный как числовая матрица, массив ячеек, таблица, массив набора данных или структура, которая содержит все данные для вставки в существующую таблицу базы данных tablename. Если data является структурой, то имена полей в структуре должны совпадать с colnames. Если data является таблицей или массивом набора данных, то имена переменных в таблице или массиве набора данных должны совпадать с colnames.

Чтобы вставить данные в структуру, таблица или массив набора данных, использует это специальное форматирование. Каждое поле или переменная в структуре, таблице или массиве набора данных должны быть массивом ячеек или двойным вектором. Двойной вектор должен иметь размер n-by-1, где n является количеством строк, которые будут вставлены.

Чтобы уменьшать время преобразования, преобразуйте даты в последовательные числа даты с помощью datenum прежде, чем вызвать fastinsert.

Советы

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

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

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

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

    • Чтобы откатывать данные, используйте rollback или введите выражение SQL ROLLBACK с помощью функции exec.

  • Если сообщение об ошибке как следующее появляется, когда вы запускаете fastinsert, таблица может быть открыта в режиме редактирования.

    [Vendor][ODBC Product Driver] The database engine could 
    not lock table 'TableName' because it is already in use 
    by another person or process.
    

    В этом случае закройте таблицу в базе данных и повторно выполните функцию fastinsert.

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

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

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

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

Не рекомендуемый запуск в R2018a

Представлено до R2006a

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