この手順を機能させようとしていますが、困惑しています。この手順で、CSV 値のテーブルから分離された値を一時テーブルに入力したいだけです。
DELIMITER $$
DROP PROCEDURE IF EXISTS String_Split $$
CREATE PROCEDURE String_Split
(
vString VARCHAR(255),
vSeparator VARCHAR(5)
)
BEGIN
DECLARE vDone tinyint(1) DEFAULT 1;
DECLARE vIndex INT DEFAULT 1;
DECLARE vSubString VARCHAR(15);
DROP TABLE IF EXISTS tmpValues;
CREATE TEMPORARY TABLE tmpValues (tmpVal VARCHAR(255));
WHILE vDone > 0 DO
SET vSubString = SUBSTRING(vString, vIndex,
IF(LOCATE(vSeparator, vString, vIndex) > 0,
LOCATE(vSeparator, vString, vIndex) - vIndex,
LENGTH(vString)
));
IF LENGTH(vSubString) > 0 THEN
SET vIndex = vIndex + LENGTH(vSubString) + 1;
INSERT INTO tmpValues VALUES (vSubString);
ELSE
SET vDone = 0;
END IF;
END WHILE;
END; $$
私はそれを呼びます:
CALL String_Split(my_csv.keywords, ',');
エラー コード: 1109。フィールド リストに不明なテーブル 'my_csv' があります。
テーブルがそこにあり、適切なデータベースが選択されているため、これを取得できません。
CREATE TABLE `my_csv` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`keywords` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 $$
INSERT INTO `my_csv` () VALUES
(1, 'featured, 3/8, Diamond, Engagement Ring, 14K, White Gold, Gold'),
(2, '1/3, Diamond, Engagement Ring, 14K, White Gold, Gold'),
(3, 'featured') $$