2

まず、これが回答されている場合はお詫び申し上げます。私は多くの同様の質問を見てきましたが、完全に答えたものはありません。

まず、私はせいぜい SQL 初心者です。オンライン ストアを立ち上げてからかなりのことを学びましたが、その多くについてはまだ知識が不足しています。

わかりました。オンライン ストア用に Web サーバーにデータベースがあります。直送も可能な物を出品しております。数分ごとにディストリビュータから更新されたインベントリ ファイルを CSV 形式でダウンロードできます。このファイルには、最初の行にフィールド名がない 2 つの列が含まれています。更新したいテーブルは zen_products です。CSV ファイルの最初の列は、products_model 列に対応し、一意です。CSV ファイルの 2 列目は、products_quantity 列に対応します。CSV ファイルには、SQL テーブルに存在しないレコードがあります。新しいレコードを作成したくありません。CSV ファイルの値で products_quantity 列を更新したいだけです。

わかりました。現時点では、ショッピング カート ソフトウェアの管理セクションからアドオンを使用してこれを行うことができますが、CSV ファイルを編集して特定のフィールド名を入力する必要があります。これは非常に簡単なので問題ありませんが、ファイルの編集、ログイン、アップロード、処理に数分かかります。実際には非常に簡単です。ただし、このプロセスを完全に自動化する方法を見つけて、可能であれば 15 ~ 30 分ごとに実行できるようにしたいと考えています。イメージできるように、5分かかるものは問題ありませんが、15分ごとに5分かかると、1日を通して多くの時間がかかります. そして、忙しいときや離れているときでも、それができるといいですね。

必要に応じて、機能する完全に自動化されたソリューションに対して妥当な金額を支払います。また、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 );

ここで私の質問は、これをほとんど入力せずに簡単に実行できるようにするにはどうすればよいかということです。どこからでも簡単にスケジュールまたは実行できる方法はありますか? 再度、感謝します。

4

1 に答える 1

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別のテーブルに移動する必要があります。次に、ストアド プロシージャまたはクエリを使用してINSERTUPDATE(とは対照的にREPLACE)目的のテーブルに

于 2012-09-17T16:31:17.670 に答える