Загрузка файла CSV в таблицу Oracle - PullRequest
1 голос
/ 22 ноября 2010

Я использую Oracle ApEx, и мне было интересно, как лучше всего загрузить CSV-файл с одним столбцом в таблицу Oracle для использования в ApEx?

Спасибо.

Ответы [ 4 ]

2 голосов
/ 13 апреля 2011

У меня были те же проблемы, что и у вас. Вы, вероятно, уже нашли решение, но я следую методу, указанному в этой ссылке http://forums.oracle.com/forums/thread.jspa?threadID=545565 и это работает для меня. Они использовали внешние таблицы. Максимальное количество столбцов - 50.

Другой вариант: http://avdeo.com/2008/05/21/uploading-excel-sheet-using-oracle-application-express-apex/ Однако я обнаружил, что если ваш CSV содержит какой-то специальный символ, он не работает должным образом.

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

0 голосов
/ 16 июня 2014

Вы можете сделать это с помощью awk.

Вот пример того, как заполнить таблицу из данных .csv.

SQL> create table MY_TABLE(a varchar2(100), b varchar2(100));

[oracle@myora ~]$ tail Some_Input_CSV_file
Some Data A 1,Some Data B 1
Some Data A 2,Some Data B 2
Some Data A 3,Some Data B 3
Some Data A 4,Some Data B 4
Some Data A 5,Some Data B 5
Some Data A 6,Some Data B 6
Some Data A 7,Some Data B 7
Some Data A 8,Some Data B 8
Some Data A 9,Some Data B 9
Some Data A 10,Some Data B 10
[oracle@myora ~]$

[oracle@myora ~]$ cat Some_Input_CSV_file | awk -F, ‘ { printf(“insert into MY_TABLE values(trim(\x27%s\x27), trim(\x27%s\x27));\n”, $1, $2); } ‘ > RunMe.sql

[oracle@myora ~]$ tail RunMe.sql
insert into MY_TABLE values(trim(‘Some Data A 1′), trim(‘Some Data B 1′));
insert into MY_TABLE values(trim(‘Some Data A 2′), trim(‘Some Data B 2′));
insert into MY_TABLE values(trim(‘Some Data A 3′), trim(‘Some Data B 3′));
insert into MY_TABLE values(trim(‘Some Data A 4′), trim(‘Some Data B 4′));
insert into MY_TABLE values(trim(‘Some Data A 5′), trim(‘Some Data B 5′));
insert into MY_TABLE values(trim(‘Some Data A 6′), trim(‘Some Data B 6′));
insert into MY_TABLE values(trim(‘Some Data A 7′), trim(‘Some Data B 7′));
insert into MY_TABLE values(trim(‘Some Data A 8′), trim(‘Some Data B 8′));
insert into MY_TABLE values(trim(‘Some Data A 9′), trim(‘Some Data B 9′));
insert into MY_TABLE values(trim(‘Some Data A 10′), trim(‘Some Data B 10′));
[oracle@myora ~]$

[oracle@myora ~]$ sqlplus myuser/mypwd@myinst

SQL> @RunMe.sql

…

1 row created.

1 row created.

1 row created.

1 row created.

1 row created.

SQL> commit;

Commit complete.

SQL> exit
0 голосов
/ 22 ноября 2010

Большие файлы:

  • sqlloader
  • внешние столы

Маленькие файлы:

  • собственный анализ
0 голосов
/ 22 ноября 2010

Чтобы загрузить файл CSV с помощью SQLLOADER, вам необходимо сделать следующее:

(a) Файл CSV (b) Управляющий файл SQLLOADER (также известный как файл CTL) (c) Используемая команда SQLLOADERфайл CTL в (b) для загрузки файла CSV в (a).

файл CSV, у вас уже есть это.В этом примере имя файла temp.csv содержит два столбца

A,100
B,200
C,300
D,400

Теперь вам нужно создать элемент управления для описания файла и таблицы, в которую он будет загружен, и того, как его загрузить.В этом примере имя файла управления с именем temp.ctl и таблица, в которую вы хотите загрузить, - это TEMP_TABLE, которая содержит два столбца, COLUMN_1 - это VARCHAR2 (2), COLUMN_2 - это NUMBER.Temp.ctl выглядит следующим образом

LOAD DATA
APPEND
INTO TEMP_TABLE
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
  COLUMN_1 CHAR,
  COLUMN_2 Integer EXTERNAL
)
...