Импорт Excel CSV в реляционную базу данных MySQL?

У меня есть две таблицы baskets и fruits; basket имеет много разных fruits, так что это отношение один ко многим.

Таблицы следующие:

baskets 
id NOT NULL PRIMARY KEY AUTO_INCREMENT,
basket_name varchar(20)

fruits 
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
fruit_name varchar(20),
basket_id INT FOREIGN KEY REFERENCES baskets(id)

У меня есть лист Excel с именами столбцов и данными, организованными следующим образом:

Basket Fruits 

Basket_1 Apple, Mango, Banana, Pear

Basket_2 Mango, Strawberry, Plums, Banana, Grapes

Baskt_3 Raspberry, Apple, Pear

Как лучше всего хранить все эти фрукты в одной корзине в реляционной архитектуре, смоделированной выше?

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

Мой вопрос примерно такой: Импорт данных Excel в реляционные таблицы в MySQL

Но не то же самое в данных.

Все предложения приветствуются!


person A1aks    schedule 08.10.2013    source источник
comment
Вы уже создали несколько моделей? Пожалуйста, покажите нам работу, которую вы сделали до сих пор.   -  person jewilmeer    schedule 08.10.2013


Ответы (1)


Кажется, что такие проблемы всегда требуют достаточного количества шагов.

Если фрукты находятся в отдельных ячейках, используйте инструмент вставки — транспонирования в Excel, чтобы превратить строки в столбцы, скопировав все ячейки на один лист, а затем с помощью специальной вставки — транспонирования, чтобы вставить их на новый лист.

На третьем листе я бы сделал формулу, которая объединяет значение каждой ячейки, начиная со второй строки, со значением в первой строке. Если лист A имеет недавно перенесенные значения, а лист B является новым листом, формула будет =sheetA!a$1 & "," & sheetA!a2, и скопируйте эту формулу из a2: zz999 или сколько угодно дальше.

Затем столбцы необходимо объединить, что можно сделать вручную или с помощью операторов UNION в Mysql после импорта листа:

SELECT COLUMN1 FROM SHEETB
UNION
SELECT COLUMN2 FROM SHEETB
UNION
...

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

person Steve Duncan    schedule 08.10.2013