Загрузчик SQL: Загрузка в 2 Таблицы от 1 controlfile и 1 CSV

Вы объявили тип документа, html, заголовок и тело в текущем файле. Ваш импортированный файл (MenuAdminstrador.php) также содержит эти элементы. Html-страница должна содержать только один тип документа, html, заголовок и текст.

Удалите элементы doctype, html, head и body и сохраните только содержимое элемента body вашего файла MenuAdminstrador.php.

Но в этом случае вы должны включить ссылки на шрифты Google, CSS и JavaScript в элементе head текущего файла.

Если вы не предпочитаете этот метод, вы можете выполнить следующие действия:

  1. Создать MenuHead.php, который содержит содержимое элемента заголовка внешнего файла.
  2. Создайте MenuBody.php, который содержит содержимое элемента body внешнего файла.
  3. Импортируйте MenuHead.php в заголовок текущего файла.
  4. Импортируйте MenuBody.php в тело текущего файла.
7
задан OMG Ponies 28 January 2010 в 03:05
поделиться

2 ответа

Это работает, но мне не нравится это решение. Я предпочитаю использовать внешние таблицы в этих ситуациях. Короткий ответ: у вас возникли проблемы, потому что SQLLDR не выполняет автоматическое повторное сканирование данных при импорте нескольких строк. Ниже следует фрагмент из документации.

Из документации SQLLDR

Использование POSITION с несколькими загрузками таблиц

При загрузке нескольких таблиц вы указываете несколько предложений INTO TABLE. Когда вы указываете POSITION () для первого столбца первой таблицы, позиция вычисляется относительно начала логической записи. Когда вы указываете POSITION () для первого столбца последующих таблиц, позиция вычисляется относительно последнего столбца последней загруженной таблицы.

Таким образом, когда начинается последующее предложение INTO TABLE, позиция не устанавливается на начало логической записи автоматически. Это позволяет нескольким предложениям INTO TABLE обрабатывать разные части одной и той же физической записи. Например, см. Извлечение нескольких логических записей.

Логическая запись может содержать данные для одной из двух таблиц, но не для обеих. В этом случае вы бы сбросили ПОЛОЖЕНИЕ. Вместо того чтобы опускать спецификацию позиции или использовать POSITION (* + n) для первого поля в предложении INTO TABLE, используйте POSITION (1) или POSITION (n).

    load data
    infile * 
    truncate
    into table T1 
    fields terminated by ',' trailing nullcols
    ( col1  
    , fill1 filler
    , col2  )
    into table T2 
    fields terminated by ','  trailing nullcols
    ( col1 position(1) 
    , filler filler
    , col2    
    , filler2 filler
    , col3 )   

BEGINDATA
1,2,3,4,5,6
1,2,3,4,5,6

SQL> select * From t1;

      COL1       COL2
---------- ----------
         1          3
         1          3

SQL> select* From t2;

      COL1       COL2       COL3
---------- ---------- ----------
         1          3          5
         1          3          5
2
ответ дан 7 December 2019 в 14:38
поделиться

Попробуйте это:

LOAD DATA
INFILE *
INSERT INTO TABLE T1 FIELDS TERMINATED BY ',' TRAILING NULLCOLS 
(COL1, FILL2 FILLER, COL2, FILL4 FILLER, FILL5 FILLER, FILL6 FILLER)
INSERT INTO TABLE T2 FIELDS TERMINATED BY ',' TRAILING NULLCOLS
(COL1, FILL2 FILLER, COL2, FILL3 FILLER, COL3, FILL6 FILLER)
BEGINDATA
1,2,3,4,5,6
1,2,3,4,5,6
0
ответ дан 7 December 2019 в 14:38
поделиться
Другие вопросы по тегам:

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