Oracle: Импорт файла CSV

Я уже давно искал, но, похоже, не нашел ответов, так что вот ...

У меня есть файл CSV, Я хочу импортировать в таблицу в Oracle (9i / 10i).

Позже я планирую использовать эту таблицу в качестве поиска для другого использования.

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

Как это делается с помощью SQLPLUS?

Спасибо за ваше время! :)

26
задан Vadzim 23 October 2014 в 17:08
поделиться

3 ответа

Другим решением, которое вы можете использовать, является SQL Developer.

С его помощью вы можете импортировать из файла CSV (доступны другие файлы с разделителями).

Просто откройте представление таблицы, затем:

  • выберите действия
  • импортируйте данные
  • найдите ваш файл
  • выберите ваши параметры.

У вас есть возможность сделать так, чтобы SQL Developer делал вставки для вас, создавал сценарий вставки SQL или создавал данные для скрипта SQL Loader (я сам не пробовал эту опцию).

Конечно, это спорный вопрос, если вы можете использовать только командную строку, но если вы можете проверить ее локально с помощью SQL Developer, вы всегда можете развернуть сгенерированные сценарии вставки (например).

Просто добавив еще один вариант к двум и без того очень хорошим ответам.

22
ответ дан 28 November 2019 в 06:47
поделиться

SQL Loader - это то, что нужно. Я недавно загрузил свою таблицу из CSV-файла, нового для этой концепции, хотел бы поделиться примером.

LOAD DATA
    infile '/ipoapplication/utl_file/LBR_HE_Mar16.csv'
    REPLACE
    INTO TABLE LOAN_BALANCE_MASTER_INT
    fields terminated by ',' optionally enclosed by '"'
    (
    ACCOUNT_NO,
    CUSTOMER_NAME,
    LIMIT,
    REGION

    )

Поместите файл управления и CSV в одном месте на сервере. Найдите файл sqlldr exe и активируйте его.

sqlldr userid / passwd @ DBname control = Например: sqlldr abc / xyz @ ora control = load.ctl

Надеюсь, это поможет.

4
ответ дан 28 November 2019 в 06:47
поделиться

Из Oracle 18c вы можете использовать Встроенные внешние таблицы :

Встроенные внешние таблицы обеспечивают определение внешней таблицы во время выполнения как часть оператора SQL, без создания внешней таблицы в качестве постоянного объекта в словаре данных.

В случае встроенных внешних таблиц тот же синтаксис, который используется для создания внешней таблицы с оператором CREATE TABLE, может использоваться в операторе SELECT во время выполнения. Укажите встроенные внешние таблицы в предложении FROM блока запроса. Запросы, содержащие встроенные внешние таблицы, также могут включать обычные таблицы для объединений, агрегирования и т. Д.

INSERT INTO target_table(time_id, prod_id, quantity_sold, amount_sold)
SELECT time_id, prod_id, quantity_sold, amount_sold
FROM   EXTERNAL (   
    (time_id        DATE NOT NULL,     
     prod_id        INTEGER NOT NULL,
     quantity_sold  NUMBER(10,2),
     amount_sold    NUMBER(10,2))     
    TYPE ORACLE_LOADER     
    DEFAULT DIRECTORY data_dir1
    ACCESS PARAMETERS (
      RECORDS DELIMITED BY NEWLINE
      FIELDS TERMINATED BY '|')     
   LOCATION ('sales_9.csv') REJECT LIMIT UNLIMITED) sales_external;
2
ответ дан 28 November 2019 в 06:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: