2012-02-06 2 views
4

У меня есть файл с большим количеством столбцов, и я хочу ввести этот файл в таблицу mysql.Создать таблицу автоматически в соответствии с входным файлом в mysql

Дело в том, если у нас есть файл, скажем, 8 колонок, то мы будем сначала создать таблицу -

CREATE TABLE `input` (
    `idInput` varchar(45) DEFAULT NULL, 
    `row2` varchar(45) DEFAULT NULL, 
    `col3` varchar(45) DEFAULT NULL, 
    `col4` varchar(45) DEFAULT NULL, 
    `col5` varchar(45) DEFAULT NULL, 
    `col6` varchar(45) DEFAULT NULL, 
    `col7` varchar(45) DEFAULT NULL, 
    `col8` varchar(45) DEFAULT NULL 
); 

тогда мы будем вводить файл по -

LOAD DATA INFILE "FILE" INTO TABLE input; 

Но дело в есть, у меня есть файл с 150 столбцами, и я хочу автоматически вставить этот файл в таблицу mysql (чтобы мне не пришлось сначала создавать таблицу). Первая строка моего файла - это заголовок, и он должен быть как имена столбцов в таблице, так и каждый столбец, а каждая строка имеет разные типы данных.

Итак, есть ли простой способ сделать это, чтобы после этого я мог делать разные вещи с этой таблицей?

Я использую клиентскую версию mysql версии 5.5.20 (окна 7).

ответ

0

Я не думаю, что это возможно с использованием прямого MySQL. Каким-то образом должно быть угадано определение столбцов. Вам, вероятно, придется перейти со вторым языком, чтобы прочитать первую строку, сделать таблицу, а затем импортировать.

Вы можете сделать это, используя mysqldump.

+0

Спасибо за ваш ответ. Но я новичок в MySQL, не могли бы вы рассказать о своем ответе. – Vikas

+0

MySQL не может угадать тип данных для произвольного столбца в файле. Вы можете использовать язык Perl для чтения файла, захватить первую строку и построить таблицу для вас. Или вы можете сбросить исходные данные с помощью mysqldump, и он добавит вам инструкцию «create table». – ethrbunny

1

использование phpmyadmin. Он имеет возможность создавать таблицу базы в первой строке файла и угадать структуру таблицы. Нажмите ссылку «Импорт» и выберите файл. Не забудьте выбрать формат, соответствующий вашему файловому формату, в основном CSV.

Если файл слишком большой, чтобы вписаться в phpmyadmin, иногда я «головаю» файл и использую файл head в phpmyadmin для создания таблицы, а затем импортирую файл с помощью команды LOAD DATA.

Это облегчает мою жизнь.

1

Вы можете попробовать использовать клиент mysql SequelPro.

С помощью этого инструмента вы можете использовать опцию «Файл-> Импорт», а в окне «Отображение полей импорта CSV» вместо выбора для импорта в существующую таблицу вы можете выбрать кнопку «Создать».

Лучше, если ваш CSV имеет строку заголовка, описывающую имена столбцов, поэтому он дает правильные имена столбцов. Инструмент также хорошо угадывает типы столбцов в соответствии с содержимым.

Возможно, вы столкнетесь с проблемами, если VARCHAR (255) задан как тип по умолчанию для полей типа текста. Если это так, измените тип этих полей на тип TEXT.

0

Как я понимаю, у вас есть сгенерированный текстовый файл с разными типами данных, готовыми для загрузки из командной строки. Вот инструкции от MySQL.

создать: https://dev.mysql.com/doc/refman/5.7/en/mysql-batch-commands.html

изменить: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html

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

Смежные вопросы