Как загрузить csv в oracle

Обновлено: 07.07.2024

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

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

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

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

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

Загрузчик SQL помогает загружать файлы CSV в таблицы: Загрузчик SQL *

Если вам нужен только sqlplus, это будет немного сложнее. Вам нужно найти сценарий sqlloader и файл csv, а затем запустить команду sqlldr.

Кто-то попросил меня разместить ссылку на структуру! который я представил на Open World 2012. Это полный пост в блоге, демонстрирующий, как проектировать решение с внешними таблицами.

Используйте это, когда вам нужно делать этот импорт очень часто и очень быстро.

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

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

Sqlldr userid / passwd @ DBname control = Пример: sqlldr abc / xyz @ ora control = load.ctl

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

Я хотел бы поделиться двумя советами: (совет 1) создать файл csv (совет 2) загрузить строки из файла csv в таблицу.

==== [(совет 1) SQLPLUS для создания файла CSV из таблицы Oracle] ====

Я использую SQLPLUS со следующими командами:

==== [совет 2 SQLLDR для загрузки CSV-файла в таблицу] ====

Я использую SQLLDR и файл csv (разделенный запятыми) для добавления (ПРИЛОЖЕНИЕ) строк из файла csv в таблицу. в файле между полями текстовые поля имеют "до и после текста" КРИТИЧНО: если последний столбец пуст, в конце строки стоит символ

Пример строк данных в файле csv:

Это контрольный файл:

Это команда для выполнения sqlldr в Linux. Если вы работаете в Windows, используйте \ вместо / c:

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

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

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

Я искал некоторое время, но не могу найти ответы, поэтому здесь идет.

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

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

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

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

спасибо твое время! :)

SQL Loader помогает загружать csv-файлы в таблицы:SQL * Loader

Если вы хотите только sqlplus, то это становится немного сложным. Вам нужно найти сценарий sqlloader и csv-файл, а затем запустить команду sqlldr.

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

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

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

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

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

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

просто добавив еще один вариант к 2 уже очень хорошим ответам.

используйте это, когда вам нужно делать этот импорт очень часто и очень быстро.

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

поместите файл управления и csv в одном месте на сервере. Найдите sqlldr exe и вызовите его.

sqlldr userid / passwd@DBname control= Пример: sqlldr abc/xyz@Ora control=нагрузка.ctl

надеюсь, что это помогает.

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

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

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

Во-первых, давайте сначала поговорим о среде (другие версии похожи):

  1. Операционная система: Windows 10
  2. База данных Oracle 11g r2
  3. PL/SQL Developer 12

Во-вторых, файл CSV

Csv, который называется значениями, разделенными запятыми, обычно переводится как значения, разделенные запятыми, а файлы csv хранят данные таблиц в виде простого текста. В системе Windows, если вы устанавливаете Excel, открытие csv по умолчанию, как правило, происходит в Excel, но, как упоминалось ранее, CSV хранит данные в виде простого текста, а затем мы пытаемся открыть его в текстовом редакторе. Вы найдете, о! Оказалось, что соус фиолетовый, посмотрите на картинку. Рисунок 1 открывается Office Excel, а Рисунок 2 - Блокнот.



3. Импорт через PL / SQL Developer

Ну, не бред. Мы будем использовать приведенные выше данные таблицы ученика, чтобы импортировать ее один раз.

1. Подготовка

(1) Сначала измените заголовочную часть файла csv, которая является первой строкой, и измените ее на соответствующее имя поля базы данных.

(2) Создайте таблицу, соответствующую данным таблицы в базе данных, код выглядит следующим образом:

(3) Затем мы открываем импортер текста PL / SQL Developer, я возьму здесь фотографию plsql 12 и поищу другие версии.


(4) После открытия средства импорта текста, мы нажимаем значок открытия в верхнем левом углу, находим файл CSV, который вы хотите импортировать, дважды щелкните, чтобы открыть


(5) После загрузки файла эффект будет следующим: в средней конфигурации, если мы проверим имя заголовка, первая строка будет автоматически использоваться в качестве заголовка таблицы, то есть имени поля. Затем мы нажимаем на вкладку: данные в Oracle, чтобы выбрать таблицу для импорта в базу данных.


(6) На вкладке данных в Oracle выберите пользователя и имя таблицы импортируемой таблицы, как показано на рисунке ниже LHY.TMP_STUDENT

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

После подтверждения, если после подтверждения проблем нет, нажмите кнопку импорта в левом нижнем углу, чтобы завершить импорт.

Эмм . Каждое количество представлений на картинке, импорт больших данных может быть соответственно увеличен.


(7) После нажатия кнопки «Импорт» (xxx записи импортируются, это занимает 0,00000001 секунды).

Возможности SQL*Loader

  • Загрузка данных из разных файлов в одной сессии
  • Загрузка данных в разные таблицы в одной сессии
  • Указание кодировки файла данных
  • Использование SQL функций перед загрузкой
  • Генерация уникальных ключей для колонок
  • Ограничение вставляемых данных по условию
  • Загрузка двоичных данных
  • Запись ошибочных данных в файл ошибок




На входе требуется два файла:

1) Файл данных

2) Управляющий файл (.CTL)

Файл описания структуры данных (loader control file), содержит описание типов данных столбцов, способ разделения столбцов, как обрабатывать данные и т.д. Именно в этом файле задаются настройки обработки файла данных. Часть настроек, можно переопределить через командную строку при запуске Oracle SQL*Loader.

Выходные данные:

1) Данные в таблице БД

2) Файл отчета (Log file)

Управляющий файл SQL*Loader (CTL)

INSERT Используется по умолчанию. Таблица перед загрузкой не должна содержать данные. Если в таблице есть строки данных, то выполнение загрузки SQL*Loader-ом не будет выполнено
APPEND Позволяет добавлять строки в таблицу таким образом, чтобы они не оказывали воздействия на уже существующие строки данных.
REPLACE Удаляются все имеющиеся в таблице строки, а затем загружаются новые. При удалении строк срабатывают триггеры существующие на таблице.
TRUNCATE Удаляются все имеющиеся в таблице строки. Триггеры не срабатывают.

Запуск импорта данныхSQL*Loader

Для запуска загрузки данных через SQL*Loader

Помните, что перед запуском скрипта загрузки, таблица уже должна быть создана.

Опции командной строки SQL*Loader

Список параметров можно получить запустив SQL*Loader без указания параметров:

Данные для загрузки непосредственно в управляющем файле

Пример данных содержащихся в управляющем файле. Начало данных определяет оператор BEGINDATA

Выполняем скрипт test.sh и смотрим результат:

Плюс создался файл лога XX_MYEXAMPLE.log

Данные с разными разделителями в данных + форматирование даты

Читайте также: