2012-09-17 2 views
2

먼저 답변 드리겠습니다. 나는 많은 비슷한 질문을 보았지만 내 대답에 대해서는 답을 찾지 못했습니다.SQL 데이터베이스의 필드를 CSV 파일의 데이터로 업데이트하십시오.

우선 SQL 기자입니다. 온라인 상점을 개설 한 이래로 나는 많은 것을 배웠지 만, 그 중 많은 부분을 여전히 잘 알고 있습니다.

오케이, 온라인 상점을위한 웹 서버에 데이터베이스가 있습니다. 나는 또한 떨어 뜨릴 수있는 것들을 판다. 몇 분마다 배포자로부터 업데이트 된 인벤토리 파일을 CSV 형식으로 다운로드 할 수 있습니다. 이 파일에는 첫 번째 행에 필드 이름이없는 두 개의 열이 있습니다. 업데이트하려는 테이블은 zen_products입니다. CSV 파일의 첫 번째 열은 products_model 열에 해당하며 고유합니다. CSV 파일의 두 번째 열은 products_quantity 열에 해당합니다. CSV 파일에 SQL 테이블에없는 레코드가 있습니다. 나는 새로운 기록을 만들고 싶지 않다. products_quantity 열을 CSV 파일의 값으로 만 업데이트하려고합니다.

좋아, 이제는 쇼핑 카트 소프트웨어의 관리 섹션을 통해 추가 기능을 사용할 수 있지만 특정 필드 이름을 입력하려면 CSV 파일을 편집해야합니다. 이것은 매우 쉽기 때문에 문제는 아니지만 파일을 편집하고 로그인하고 업로드하고 처리하는 데 몇 분이 걸립니다. 사실 아주 간단합니다. 그러나 나는이 과정을 완전히 자동화 할 수있는 방법을 찾고 싶다. 가능한 한 매 15-30 분마다 독자적으로이 작업을 수행 할 수있다. 당신이 이미징 할 수있는 것처럼, 5 분이 걸리지 만, 15 분마다 5 분이 걸리면 하루 종일 많은 시간을 보내 게됩니다. 바쁘거나 멀리있는 동안에도 일어나는 것을 허용하는 것이 좋을 것입니다.

필요한 경우 작업중인 완전 자동화 된 솔루션에 대해 적절한 금액을 지불 할 의향이 있습니다. 또한 CSV 파일은 FTP를 통해서만 액세스 할 수 있습니다. 그리고 나는 장바구니를 장바구니로 사용합니다.

도움을 주시면 감사하겠습니다. 감사.

업데이트 : 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); 

지금 내 질문은

, 이것을 내가 어떻게 극히 적은 정보로 쉽게 할 수있는 무언가로 바꿀 수 있을까요? 일정을 잡거나 어디서나 쉽게 실행할 수있는 방법이 있습니까? 다시 한번 감사드립니다.

+0

어떤 DBMS를 사용하고 있습니까? PostgreSQL? 신탁? DB2? –

+0

그게 무슨 뜻인지 모르겠지만 귀하의 질문에 대한 대답은 phpmyadmin입니다 – user1678042

+0

phpmyadmin은 DBMS가 아닌 프론트 엔드 도구입니다. 그리고 그것은 MySQL을 위해 사용되는 도구입니다 –

답변

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해야 할 것, 다음 원하는을 (REPLACE 반대) INSERTUPDATE에 저장 프로 시저 또는 쿼리를 사용하여 표

+0

아, 이제 다른 테이블 로딩에 대해 알게되었습니다. 내가 그것을 삭제하기 전에 당신이 내 의견을 본 것 같아요 (여전히 여기에 새로운, 미안). 그래서이 모든 것이 한 번에 끝날 수 있습니까? csv 파일이 자동 ftp 프로그램을 통해 항상 최신 상태인지 확인할 수 있습니다.새로운 테이블을 만든 다음 이전 테이블을 업데이트 한 다음 "새"테이블에서 레코드를 삭제할 수있는 방법이 있습니까? 다음 업데이트를 진행하는 것이 좋습니다. – user1678042

+0

도움을 주셔서 대단히 감사합니다. 나는 그것을 작동 시켰고, 이제 나는 그것을 자동화하는 방법이 필요하다. – user1678042