Обновить поля в базе данных SQL данными из файла CSV
Во-первых, я прошу прощения, если на это был ответ. Я видел много похожих вопросов, но не тот, который ответил на мой полностью.
Прежде всего, я новичок в SQL в лучшем случае. Я многому научился с тех пор, как открыл свой интернет-магазин, но я до сих пор далеко не разбираюсь во многих из них.
Хорошо, у меня есть база данных на моем веб-сервере для моего интернет-магазина. Я продаю вещи, которые также могут быть отправлены. Я могу загружать обновленный файл инвентаризации в формате CSV от моего дистрибьютора каждые несколько минут. Этот файл содержит два столбца, которые не имеют имен полей в первой строке. Таблица, которую я хочу обновить - это zen_products. Первый столбец в CSV-файле соответствует столбцу products_model и является уникальным. Второй столбец в CSV-файле соответствует столбцу products_quantity. В CSV-файле будут записи, которых нет в таблице SQL. Я не хочу создавать новые записи; Я хочу обновить столбец products_quantity только значением из файла CSV.
Хорошо, так как сейчас все в порядке, я могу сделать это с помощью надстройки через раздел администрирования программного обеспечения моей корзины покупок, но мне нужно отредактировать файл CSV для ввода определенных имен полей. Это не проблема, поскольку это очень просто, но для редактирования файла, входа в систему, загрузки и обработки требуется несколько минут. Это на самом деле довольно просто; однако я хотел бы найти способ полностью автоматизировать этот процесс, чтобы я мог делать это самостоятельно каждые 15-30 минут, если это возможно. Как вы можете визуализировать, то, что занимает 5 минут, это хорошо, но если это занимает 5 минут каждые 15 минут, это много времени в течение дня. И было бы неплохо иметь возможность позволить этому случиться, даже когда я занят или отсутствует.
При необходимости я также готов заплатить разумную сумму за работающее, полностью автоматизированное решение. Кроме того, файл CSV доступен только через FTP. И, к вашему сведению, я использую Zen Cart как свою корзину.
Любая помощь будет принята с благодарностью. Благодарю.
Обновление: на основе помощи от JKirchartz (кстати, спасибо вам и вам), у меня есть это, которое работает каждый раз, когда я запускаю его:
DELETE FROM zen_temp;
load data local infile '/home/somedude/public_html/somefolder/somefile.csv' into table zen_temp
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
(products_model, products_quantity);
UPDATE zen_products SET `products_quantity` = ( SELECT products_quantity FROM zen_temp WHERE zen_products.products_model = zen_temp.products_model )
WHERE EXISTS ( SELECT products_model FROM zen_temp WHERE zen_products.products_model = zen_temp.products_model );
Теперь мой вопрос: как я могу превратить это во что-то, что я могу легко сделать с очень небольшим вкладом? Есть ли способ, которым я могу запланировать или запустить его из любого места легко? Еще раз спасибо.
1 ответ
Вы можете импортировать CSV напрямую с:
load data local infile 'uniq.csv' into table tblUniq fields terminated by ','
enclosed by '"'
lines terminated by '\n'
(uniqName, uniqCity, uniqComments)
чтобы обновить, вам придется LOAD DATA LOCAL INFILE
в другую таблицу, затем используйте хранимую процедуру или запрос INSERT
а также UPDATE
(в отличие от REPLACE
) ваш желаемый стол