Я уже давно искал, но, похоже, не нашел ответов, так что вот ...
У меня есть файл CSV, Я хочу импортировать в таблицу в Oracle (9i / 10i).
Позже я планирую использовать эту таблицу в качестве поиска для другого использования.
На самом деле это обходной путь, над которым я работаю, поскольку запросы с использованием предложения IN с более чем 1000 значений невозможны.
Как это делается с помощью SQLPLUS?
Спасибо за ваше время! :)
Другим решением, которое вы можете использовать, является SQL Developer.
С его помощью вы можете импортировать из файла CSV (доступны другие файлы с разделителями).
Просто откройте представление таблицы, затем:
У вас есть возможность сделать так, чтобы SQL Developer делал вставки для вас, создавал сценарий вставки SQL или создавал данные для скрипта SQL Loader (я сам не пробовал эту опцию).
Конечно, это спорный вопрос, если вы можете использовать только командную строку, но если вы можете проверить ее локально с помощью SQL Developer, вы всегда можете развернуть сгенерированные сценарии вставки (например).
Просто добавив еще один вариант к двум и без того очень хорошим ответам.
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
Надеюсь, это поможет.
Из 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;