2012-05-14 2 views
0

I хава текстового файла, полных значений, как это:Импорт CSV-файла в mysql. (В частности о создании команды таблицы)

Первая строка представляет собой список имен столбцов, как это:

col_name_1, col_name_2, col_name_3 ......(600 columns) 

и все последующие столбцы имеют значение, как это:

1101,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1101,1,3.86,65,0.46418,65,0.57151... 

Каков наилучший способ импорта этого в mysql?

В частности, как создать соответствующую команду CREATE TABLE, чтобы данные загрузились надлежащим образом? Каков наилучший общий тип данных, который будет принимать во всех вышеперечисленных значениях, таких как 1101 или 3.86 или 0.57151. Я не беспокоюсь о том, что таблица неэффективна с точки зрения хранения, поскольку мне это нужно для одноразового использования.

Я пробовал некоторые из предложений в других связанных с этим вопросов, как с помощью PhpMyAdmin (он выходит из строя я предполагаю, что из-за большого количества данных)

Пожалуйста, помогите!

+0

вы можете увеличить max_execution, max_input время от php.ini. Снимите флажок «Разрешить прерывание импорта в случае, если скрипт обнаруживает, что он близок к пределу времени ожидания PHP». в phpmyadmin под вкладкой импорта. Надеюсь, это заставит вас загрузить файл csv в db через phpmyadmin. – swapnesh

ответ

0

Данные в CSV-файлах не нормированы; эти 600 столбцов могут быть распределены по нескольким связанным таблицам. Это рекомендуемый способ лечения этих данных. Затем вы можете использовать fgetcsv() для чтения CSV-файлов по строкам в PHP.

Чтобы заставить MySQL обрабатывать CSV, вы можете создать таблицу столбцов 600 (я думаю) и выпустить инструкцию LOAD DATA LOCAL INFILE (или, возможно, использовать mysqlimport, не уверен в этом).

Наиболее общий тип данных должен быть VARCHAR или TEXT для больших значений, но, конечно, вы потеряете семантику при использовании на номера, даты и т.д.

+0

Каков наиболее общий тип числовых данных, есть ли у нас один такой? Напр. в C, double может содержать что угодно (int или float или double). У нас есть что-то подобное для mysql. – jason

+0

Возможно «FLOAT» или «DOUBLE». См. Здесь: http://dev.mysql.com/doc/refman/5.5/en/numeric-types.html –

0

Я заметил, что вы включили PHPMYADMIN тег.

PHPMyAdmin может справиться с этим из коробки. Он решит «волшебным образом», который будет создавать каждый столбец, и будет CREATE таблица для вас, а также INSERT все данные. Не стоит беспокоиться о LOAD DATA FROM INFILE, хотя этот метод может быть более безопасным, если вы хотите точно знать, что происходит, не полагаясь на волшебную инструментарию PHPMyAdmin.

+0

phpmyadmin сбой, даже сообщение об ошибке. Поэтому я хочу сделать это самостоятельно. – jason

0

Попробуйте convertcsvtomysql, просто загрузите файл csv, а затем вы можете загрузить и/или скопировать инструкцию mysql для создания таблицы и вставки строк.