удалить первую строку из файла csv и создать таблицу в соответствии с ней

Привет, я пытаюсь быть в теме.

Я пытаюсь загрузить CSV в mysql сразу, используя php в Windows. поэтому я использую запрос

LOAD DATA INFILE 'c:/Data/mysql/transaction_upload.csv'
INTO TABLE transaction_upload
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\r\n';

он загружает весь мой CSV в таблицу.

Проблема в:

  1. Условие состоит в том, что таблица «transaction_upload» уже должна существовать.
  2. Он также загружает первую строку csv, содержащую заголовок.

Я хочу, чтобы первая строка была удалена из CSV, т.е. в заголовке не должно быть записи в БД, а таблица автоматически создавалась с именем CSV_file_name и столбцами в виде столбцов первой строки CSV.

Пожалуйста, не отвечайте, так как прочитайте первую строку CSV в php и создайте таблицу, потому что проблема удаления первой строки все еще существует.


person Code Breaker    schedule 03.05.2012    source источник
comment
Это как-то связано с php?   -  person benck    schedule 03.05.2012
comment
@взломщик кода... ты понял..! Я ищу что-то подобное .. Спасибо заранее   -  person AWA    schedule 31.12.2013


Ответы (1)


Добавьте IGNORE 1 LINES в конец команды LOAD DATA.

Как сказано в руководстве:

Параметр IGNOREnumberLINES может использоваться для игнорирования строк в начале файла. Например, вы можете использовать IGNORE 1 LINES, чтобы пропустить начальную строку заголовка, содержащую имена столбцов:

LOAD DATA INFILE '/tmp/test.txt' INTO TABLE test IGNORE 1 LINES;

Если таблица еще не существует, MySQL выдаст ошибку.

person eggyal    schedule 03.05.2012
comment
спасибо, это работает, таблица должна быть уже существует, можете ли вы сказать мне, как создать таблицу в соответствии с первой строкой, а не как читать столбцы csv в php и создавать таблицу. - person Code Breaker; 03.05.2012
comment
@CodeBreaker: проблема в том, что CSV не содержит достаточной информации (например, о типах данных столбцов) для MySQL, чтобы правильно создать таблицу — вам необходимо предоставить дополнительную информацию с помощью CREATE TABLE; если вы используете для этого другой язык (например, PHP), существует множество инструментов, которые могут вам помочь (например, PHP fgetcsv()). (Вы можете перейти через MySQL (небезопасный тип) механизм хранения CSV, но я не рекомендую его). - person eggyal; 03.05.2012