2009-11-13 2 views
1

У меня есть файл CSV с отображением от идентификаторов проекта до некоторых новых кодов категорий.Mysql Импорт новых кодов из excel

например.

Project Id, New Code 
1, 035 
2, 029 
3, 023 
4, 035 
5, 029 
.... 

выше в файле CSV/Excel файл

У меня есть таблица проектов с этими идентификаторами проекта, и я хочу, чтобы добавить новый столбец с releavan нового кода.

Есть ли способ, что я могу сделать это с MySQL?

ответ

1

Вот быстрый и грязный раствор, используя функциональные возможности СЦЕПИТЬ из Excel:

Предполагая, что у вас есть идентификатор проекта в столбце А и Новый код в столбце B, введите следующую команду для столбца C:

=CONCATENATE("update projects set new_code = ",B1, " where project_id = ", A1, ";") 

Затем скопируйте и вставьте, что для всех строк в вашей таблице Excel. Это генерирует операторы SQL, которые затем можно использовать для массового обновления вашей таблицы. Скопируйте текст в скрипт, а затем запустите mysql.

Вы закончите со скриптом, который выглядит примерно так:

update projects set new_code = 35 where project_id = 1; 
update projects set new_code = 39 where project_id = 2; 
update projects set new_code = 23 where project_id = 3; 

Это, конечно, предполагает, что вы уже новый столбец в таблице. Если нет, то используйте альтер заявление таблицы, чтобы добавить его:

alter table projects add column new_code int; 

Примечание: Я не рекомендую этот метод, если вы хотите сделать это несколько раз - но если его просто одноразовое вещь, то быстрое решение как это работает отлично.

+0

это один раз с поэтому .. очень интересно подход. хорошая идея –

1

Первой проблемой является доставка вашего csv в базу данных. Есть som решения для mysql, см., Например, http://dev.mysql.com/doc/refman/5.1/en/mysqlimport.html

Есть также сторонние инструменты, которые делают такие вещи.

Если у вас есть CSV-данные в новой таблице в базе данных, и вы создали новый столбец в вашей таблице проектов, просто сделать это заявление:

UPDATE projects p 
SET new_code = 
    (select distinct new_code from temp_table where project_id = p.project_id) 
+0

да, это именно то, что я думал после того, как я разместил вопрос. имеет смысл. –

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