Нет; нет способа сообщить стандартному Informix оператор LOAD, чтобы пропустить строку заголовка. Также обратите внимание, что он не будет удалять кавычки из полей в формате CSV и иным образом обрабатывать вещи так, как официально ожидает формат CSV (хотя, поскольку у вас есть значения, разделенные точкой с запятой, а не значения, разделенные запятыми, трудно понять какие правила соблюдаются — будьте осторожны и с обратной косой чертой).
Вы можете использовать утилиту Informix DB-Load (dbload
); это зависит от того, используют ли ваши данные просто ;
вместо разделителя Informix по умолчанию |
, или у вас есть больше семантики CSV, например кавычки вокруг полей, которые необходимо удалить. Если вы хотите получить экзотику, Informix Высокопроизводительный загрузчик (HPL) может либо обрабатывать его изначально, либо его можно обучить.
В качестве альтернативы вы можете использовать мой* SQLCMD (она называлась sqlcmd
намного дольше, чем программа Microsoft johnny-come-lately с таким же именем), которая позволяет указать:
LOAD FROM "file.csv" DELIMITER ";" SKIP 1 INSERT INTO table_name(col1, col2, col3);
SQLCMD также имеет параметр FORMAT CSV (среди других форматов), который может быть или не быть релевантным. Он обрабатывает такие вещи, как удаление кавычек из полей, которые поддерживает полный стандарт CSV.
Вам потребуется установить Informix ClientSDK и компилятор C (и остальную часть системы разработки C) для сборки SQLCMD.
* Поскольку SQLCMD — это моя программа, потому что я написал ее, любые рекомендации по ее использованию по своей сути предвзяты; вас предупредили.
Вы также можете использовать «внешнюю таблицу» (CREATE EXTERNAL TABLE), но я не уверен, что он лучше, чем оператор LOAD, ни с поддерживаемыми форматами, ни с возможностью пропустить первую строку данных.
person
Jonathan Leffler
schedule
12.02.2015