Как правильно использовать Sybase LOAD TABLE?

Я использовал ISQL (SQLAnywhere 12) для импорта данных из CSV в существующие таблицы с помощью INPUT INTO и никогда не сталкивался с проблемой. Однако сегодня мне нужно было импортировать данные в таблицу, содержащую столбец с автоинкрементом, и я подумал, что мне просто нужно оставить этот столбец пустым, поэтому я попробовал это с файлом, содержащим только 1 строку данных (на всякий случай). Оказывается, он импортируется с 0 в поле автоинкремента вместо следующего целочисленного значения.

Глядя на Sybase, кажется, что вместо этого мне следует использовать LOAD TABLE, но примеры выглядят немного сложными.

Мои вопросы следующие...

  • В документации говорится, что файл CSV должен находиться на сервере базы данных, а не на клиенте. У меня нет доступа к самому серверу базы данных. Могу ли я удаленно загрузить файл из ISQL?
  • Как определить столбцы таблицы, в которую я загружаюсь? Что, если я загружаю данные только в несколько столбцов, а остальные оставляю NULL?
  • Чтобы подтвердить, это оставит существующие данные в таблице как есть и просто добавит к ним то, что есть в CSV?

Спасибо заранее.


person sqlandrew    schedule 11.07.2016    source источник


Ответы (1)


  1. да. Ознакомьтесь с онлайн-документацией. для LOAD TABLE вы можете использовать предложение USING CLIENT FILE.

  2. Вы можете указать имена столбцов в скобках после имени таблицы, например LOAD TABLE mytable (col1, col2, col3) USING CLIENT FILE 'mylocalfile.txt'. Для любых столбцов, не перечисленных здесь, будет установлено значение NULL, если столбец допускает значение NULL, или эквивалент пустой строки, если это не так. Вот почему для вашего столбца автоинкремента установлено значение 0. Вы можете использовать предложение DEFAULTS ON, чтобы получить то, что вы хотите.

  3. Да, существующие данные в таблице не затрагиваются.

person Graeme Perrow    schedule 12.07.2016
comment
Большое спасибо. Один дополнительный вопрос - в документе некоторые примеры используют filler() в списке столбцов. Что это делает? - person sqlandrew; 13.07.2016
comment
Он используется, когда у вас есть CSV-файл с большим количеством столбцов данных, чем вы хотите импортировать. Скажем, у вас есть файл с 4 столбцами, но вам не нужен третий. Вы бы использовали LOAD TABLE mytable (col1, col2, filler(), col4) ..., чтобы пропустить третий столбец. - person Graeme Perrow; 13.07.2016
comment
Понятно. Спасибо еще раз! - person sqlandrew; 14.07.2016