2015-03-03 6 views
0

Я новичок в базах данных, поэтому я действительно не знаю, как это правильно называется.Импорт из CSV (из Excel) в MySQL

Предположим, у меня есть список людей, которые путешествовали по некоторым МЕСТАМ. У меня есть таблица в Excel (которую я сохранил как файл CSV) - она ​​структурирована как изображение в приложении.

Я хочу перенести это в свою базу данных.

Я установил сервер Apache, MySQL и PHP через XAMPP.

В базе данных, которую я создал, у меня есть две таблицы: LOCATIONS (id, location_name) и PEOPLE (id, person_name). Поэтому я полагаю, что мне нужна третья таблица (отношение), которая свяжет эти два: ПОСЕТИТЬ (locations.id, people.id).

Мои вопросы:

  1. Есть ли имя/что-то в этой ситуации я описал?
  2. Есть ли способ импортировать этот файл CSV в таблицу VISITED?
  3. Или есть другой (лучший) способ сделать это?

Как я уже говорил выше, я не знаю, как называется эта «ситуация», поэтому извините (возможно), не называя вопрос соответствующим образом.

1) Изображение соотношения таблицы Excel «люди-места»: link

2) Изображение таблиц «людей» и «Места»: link

+0

Я не вижу «привязанность». Ваше решение из трех таблиц (Locations, People, and Посещенные) звучит правдоподобно. В идеале у вас будет три файла CSV, по одному для каждой таблицы. Если вы этого не сделаете, вам нужно показать данные, которые у вас есть, и тогда мы, возможно, дадим вам советы. –

+0

Извините, Джонатан, я действительно забыл загрузить картинку. Поскольку я недавно зарегистрирован здесь, я могу просто дать вам ссылку (до достижения рейтинга 10). Я отредактировал OP и поместил ссылку в конец. Надеюсь, вы можете понять, о чем я говорю из приведенных выше изображений. – 0v3rl0rd

ответ

1

«ситуация» вы имеете в виду, называется от многих до многих отношений. Если возможно, что любой человек мог посетить более одного места, тогда у вас есть отношения «многие ко многим».

Чтобы создать отношения «многие ко многим» между любыми двумя таблицами - в вашем случае люди и местоположения - вам нужна третья таблица для поддержания этих отношений. Вы правильно поняли, что вам понадобится третий стол, который вы назвали «Посещением».

С точки зрения импорта существует несколько способов, которыми вы можете это сделать, и это действительно имеет отношение к значениям people.id и location.id.

Версия 1:

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

create table People (
    id int, 
    name varchar(50) 
); 

Version 2: "последовательности" Вы поручаете MySQL для создания значения идентификаторов на основе

create table People (
    id int not null auto_increment primary_key, 
    name varchar(50) 
); 

Некоторые другие примеры здесь: http://sql-info.de/mysql/examples/CREATE-TABLE-examples.html

Проблема с версии 2 является то, что вы не знаете значения People.id или Location.id, пока оператор вставки в базу данных имеет произошло.Это затрудняет вам импорт в таблицу посещений, потому что вы не будете знать значения id до тех пор, пока не выполните импорт в две другие таблицы.

Вы можете сделать импорт для создания значений id, а затем вернуть эти значения в excel и использовать функцию vlookup, чтобы связать существующие имена/местоположения с их новыми значениями идентификаторов mysql. Вы должны быть осторожны, нет дубликатов имен в списке.

Приведя идентификаторы обратно в excel, используйте vlookup для привязки к новым идентификаторам, вы можете создать файл csv с правильными идентификаторами для импорта в качестве таблицы «многие-ко-многим».

Вы также должны смотреть на некоторых примерах импорта CSV в MySQL: http://www.mysqltutorial.org/import-csv-file-mysql-table/

Надеется, что это помогает.

+0

Я знаю, что имя и логика позади этого довольно хорошие - не могли вспомнить имя, пока Вы это не сказали, спасибо. Я получил это: я создал две таблицы в базе данных: (1) PEOPLE, с идентификаторами полей (primary, unique) и NAME и (2) LOCATIONS, с начальным идентификатором поля, уникальным) и NAME. Я знаю все ID из обеих таблиц, и нет дубликатов. Все идентификаторы уже отсортированы (автоинкремент). Теперь я застрял в создании «отношения» (vlookup, excel) от этих уникальных идентификаторов. - – 0v3rl0rd

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