Экспорт данных с помощью массовой вставки

Функциональность массовой вставки

Один из способов экспорта данных из MATLAB® и вставьте его в свою базу данных, чтобы использовать sqlwrite функцию в командной строке. Однако, если вы столкнулись с проблемами эффективности в этом процессе, можно вместо этого создать файл данных, содержащий каждую запись в наборе данных. Затем можно использовать этот файл данных как вход в функциональность массовой вставки базы данных для обработки большого набора данных. Кроме того, с помощью этого файла можно вставлять данные со специальными символами, такими как двойные кавычки. Массовая вставка обеспечивает увеличение эффективности при помощи утилит массовой вставки, которые являются собственными для различных систем баз данных. Для получения дополнительной информации смотрите Работа с большими наборами данных.

В следующих примерах используются предварительно сконфигурированные источники данных JDBC. Дополнительные сведения о конфигурировании источника данных JDBC см. в разделе databaseConnectionOptions функция.

Массовая вставка в Oracle

Этот пример использует файл данных, содержащий спортивные данные на локальной машине с Oracle® устанавливает и экспортирует данные в файл на сервер Oracle с помощью функций массовой вставки.

  1. Подключитесь к сконфигурированному источнику данных JDBC для базы данных Oracle.

    datasource = "ORA_JDBC";
    username = "user";
    password = "password";
    conn = database(datasource,username,password);
    
  2. Составьте таблицу с именем BULKTEST использование execute функция.

    execute(conn,['CREATE TABLE BULKTEST (salary number, ' ...
        'player varchar2(25), signed varchar2(25), ' ...
        'team varchar2(25))'])
    
  3. Создайте запись данных.

    A = {100000.00,'KGreen','06/22/2011','Challengers'};
    
  4. Разверните A к набору данных, содержащему 10 000 записей.

    A = A(ones(10000,1),:);
    
  5. Запись данных в файл для функциональности массовой вставки.

    Совет

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

    fid = fopen('c:\temp\tmp.txt','wt');
    for i = 1:size(A,1)
        fprintf(fid,'%10.2f \t %s \t %s \t %s \n',A{i,1}, ...
        A{i,2},A{i,3},A{i,4});
    end
    fclose(fid);
    
  6. Установите расположение папки с помощью execute функция.

    execute(conn, ...
        'CREATE OR REPLACE DIRECTORY ext AS ''C:\\Temp''')
    
  7. Удалите временную таблицу, если она существует, используя execute функция.

    execute(conn,'DROP TABLE testinsert')
    
  8. Создайте временную таблицу и используйте функциональность массовой вставки, чтобы вставить ее в таблицу BULKTEST.

    execute(conn,['CREATE TABLE testinsert (salary number, ' ...
        'player varchar2(25), signed varchar2(25), ' ...
        'team varchar2(25)) ORGANIZATION EXTERNAL ' ...
        '( TYPE ORACLE_LOADER DEFAULT DIRECTORY ext ACCESS ' ...
        'PARAMETERS ( RECORDS DELIMITED BY NEWLINE FIELDS ' ...
        'TERMINATED BY ''\t'') LOCATION (''tmp.txt'')) ' ...
        'REJECT LIMIT 10000'])
    
    execute(conn,'INSERT INTO BULKTEST SELECT * FROM testinsert')
    
  9. Подтвердите количество переменных в BULKTEST.

    results = fetch(conn,'SELECT * FROM BULKTEST');
    results.Properties.VariableNames
    ans =
    
      1×4 cell array
    
        {'SALARY'}    {'PLAYER'}    {'SIGNED'}    {'TEAM'}
    
  10. Закройте подключение к базе данных.

    close(conn)

Массовая вставка в Microsoft SQL Server 2005

Этот пример использует файл данных, содержащий спортивные данные на локальном компьютере с Microsoft® SQL Server® устанавливает и экспортирует данные в файл в Microsoft SQL Server с помощью функций массовой вставки.

  1. Подключитесь к настроенному источнику данных JDBC для базы данных Microsoft SQL Server.

    datasource = "MSSQLServer_JDBC";
    username = "user";
    password = "password";
    conn = database(datasource,username,password);
    
  2. Составьте таблицу с именем BULKTEST использование execute функция.

    execute(conn,['CREATE TABLE BULKTEST (salary ' ...
        'decimal(10,2), player varchar(25), signed_date ' ...
        'datetime, team varchar(25))'])
    
  3. Создайте запись данных.

    A = {100000.00,'KGreen','06/22/2011','Challengers'};
    
  4. Разверните A к набору данных, содержащему 10 000 записей.

    A = A(ones(10000,1),:);
    
  5. Запись данных в файл для функциональности массовой вставки.

    Совет

    При подключении к базе данных на удаленном компьютере необходимо записать этот файл на удаленный компьютер. Microsoft SQL Server испытывает трудности с чтением файлов, находящихся не на том же компьютере, что и база данных.

    fid = fopen('c:\temp\tmp.txt','wt'); 
    for i = 1:size(A,1)
       fprintf(fid,'%10.2f \t %s \t %s \t %s \n',A{i,1}, ...
       A{i,2},A{i,3},A{i,4});
    end
    fclose(fid);
  6. Запустите функциональность массовой вставки, используя execute функция.

    execute(conn,['BULK INSERT BULKTEST FROM ' ...
        '''c:\temp\tmp.txt'' WITH (FIELDTERMINATOR = ''\t'', ' ...
        'ROWTERMINATOR = ''\n'')'])
    
  7. Подтвердите количество переменных в BULKTEST.

    results = fetch(conn,'SELECT * FROM BULKTEST');
    results.Properties.VariableNames
    ans =
    
      1×4 cell array
    
        {'SALARY'}    {'PLAYER'}    {'SIGNED_DATE'}    {'TEAM'}
    
  8. Закройте подключение к базе данных.

    close(conn)

Массовая вставка в MySQL

Этот пример использует файл данных, содержащий спортивные данные на локальной машине с MySQL® устанавливает и экспортирует данные в файл в базу данных MySQL с помощью функций массовой вставки.

  1. Подключитесь к настроенному источнику данных JDBC для базы данных MySQL.

    datasource = "MySQL_JDBC";
    username = "user";
    password = "password";
    conn = database(datasource,username,password);
    
  2. Составьте таблицу с именем BULKTEST использование execute функция.

    execute(conn,['CREATE TABLE BULKTEST (salary decimal, ' ...
        'player varchar(25), signed_date varchar(25), ' ...
        'team varchar(25))'])
    
  3. Создайте запись данных.

    A = {100000.00,'KGreen','06/22/2011','Challengers'};
    
  4. Разверните A к набору данных, содержащему 10 000 записей.

    A = A(ones(10000,1),:);
    
  5. Запись данных в файл для функциональности массовой вставки.

    Примечание

    MySQL считывает файлы, сохраненные локально, даже если вы подключаетесь к удаленной машине. Поэтому можно записать файл на локальную или удаленную машину.

    fid = fopen('c:\temp\tmp.txt','wt');
    for i = 1:size(A,1)
       fprintf(fid,'%10.2f \t %s \t %s \t %s \n', ...
       A{i,1},A{i,2},A{i,3},A{i,4});
    end
    fclose(fid);
    
  6. Запустите функцию массовой вставки. Оператор SQL использует оператор LOCAL INFILE для обработки ошибок. Для получения дополнительной информации об этом операторе см. документацию по базе данных MySQL.

    execute(conn,['LOAD DATA LOCAL INFILE ' ...
        ' ''C:\\temp\\tmp.txt'' INTO TABLE BULKTEST ' ...
        'FIELDS TERMINATED BY ''\t'' LINES TERMINATED ' ...
        'BY ''\n'''])
    
  7. Подтвердите количество переменных в BULKTEST.

    results = fetch(conn,'SELECT * FROM BULKTEST');
    results.Properties.VariableNames
    ans =
    
      1×4 cell array
    
        {'SALARY'}    {'PLAYER'}    {'SIGNED_DATE'}    {'TEAM'}
    
  8. Закройте подключение к базе данных.

    close(conn)

См. также

| | |

Похожие темы

Внешние веб-сайты