iT邦幫忙

0

mysql 問題 語法 匯入

BB 2021-05-18 18:34:44738 瀏覽

哈囉我剛接觸mysql的語法 遇到了下面兩個問題
1
想請問為什麼在匯入csv之後欄位名稱會同時變成資料
https://imgur.com/a/h05AVnX

2
要藉由此資料表列出 洲別 國家 該國第三年人數 洲別第三年平均人數 該國第三年平均人數
我使用圖片的這種寫法會出現錯誤
想知道這樣的問題是什麼
以及想請問該如何寫
https://imgur.com/a/PbdeGFk

檔案:
https://drive.google.com/file/d/1sdhoTv6NH8zea4fYoP5aOd5-HXESeNGp/view?usp=sharing

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
rogeryao
iT邦超人 8 級 ‧ 2021-05-21 05:40:39
最佳解答

依版主語意 SQL 調整如下:

DROP TABLE IF EXISTS `TB`;
CREATE TABLE `TB` (
  `A` varchar(20) DEFAULT NULL, -- 洲別
  `B` varchar(20) DEFAULT NULL, -- 國家
  `Y1` int(11) DEFAULT NULL,    -- 第一年
  `Y2` int(11) DEFAULT NULL,    -- 第二年
  `Y3` int(11) DEFAULT NULL     -- 第三年
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `TB` VALUES ('亞洲', '港澳', '110716', '164894', '114431');
INSERT INTO `TB` VALUES ('亞洲', '大陸', '375567', '363878', '405307');
INSERT INTO `TB` VALUES ('亞洲', '日本', '129469', '198744', '132982');
INSERT INTO `TB` VALUES ('亞洲', '韓國', '62668', '56442', '76407');
INSERT INTO `TB` VALUES ('亞洲', '印度', '2794', '3069', '2543');
INSERT INTO `TB` VALUES ('亞洲', '中東', '1940', '1948', '1233');
INSERT INTO `TB` VALUES ('亞洲', '馬來西亞', '40557', '47488', '39395');
INSERT INTO `TB` VALUES ('亞洲', '新加坡', '31510', '38377', '21304');
INSERT INTO `TB` VALUES ('亞洲', '印尼', '13808', '14226', '13766');
INSERT INTO `TB` VALUES ('亞洲', '菲律賓', '14676', '13910', '10527');
INSERT INTO `TB` VALUES ('亞洲', '泰國', '18327', '15922', '11137');
INSERT INTO `TB` VALUES ('亞洲', '越南', '15197', '14437', '15370');
INSERT INTO `TB` VALUES ('亞洲', '亞洲其它', '691', '1061', '803');
INSERT INTO `TB` VALUES ('美洲', '加拿大', '9283', '10254', '7552');
INSERT INTO `TB` VALUES ('美洲', '美國', '42681', '45683', '34505');
INSERT INTO `TB` VALUES ('美洲', '墨西哥', '309', '313', '190');
INSERT INTO `TB` VALUES ('美洲', '巴西', '379', '385', '245');
INSERT INTO `TB` VALUES ('美洲', '阿根廷', '90', '120', '105');
INSERT INTO `TB` VALUES ('美洲', '美洲其他', '866', '728', '1064');
INSERT INTO `TB` VALUES ('歐洲', '比利時', '469', '682', '423');
INSERT INTO `TB` VALUES ('歐洲', '法國', '3954', '3513', '3555');
INSERT INTO `TB` VALUES ('歐洲', '德國', '4938', '7466', '4301');
INSERT INTO `TB` VALUES ('歐洲', '義大利', '1474', '1671', '1188');
INSERT INTO `TB` VALUES ('歐洲', '荷蘭', '1963', '1946', '1515');
INSERT INTO `TB` VALUES ('歐洲', '瑞士', '986', '993', '711');
INSERT INTO `TB` VALUES ('歐洲', '西班牙', '875', '980', '726');
INSERT INTO `TB` VALUES ('歐洲', '英國', '5952', '6200', '4473');
INSERT INTO `TB` VALUES ('歐洲', '奧地利', '560', '728', '564');
INSERT INTO `TB` VALUES ('歐洲', '希臘', '157', '131', '118');
INSERT INTO `TB` VALUES ('歐洲', '瑞典', '879', '857', '613');
INSERT INTO `TB` VALUES ('歐洲', '俄羅斯', '625', '534', '497');
INSERT INTO `TB` VALUES ('歐洲', '歐洲其他', '3709', '3697', '3399');
INSERT INTO `TB` VALUES ('大洋洲', '澳大利亞', '7480', '7752', '5158');
INSERT INTO `TB` VALUES ('大洋洲', '紐西蘭', '1183', '1034', '928');
INSERT INTO `TB` VALUES ('大洋洲', '大洋洲其他', '145', '179', '188');
INSERT INTO `TB` VALUES ('非洲', '南非', '409', '311', '562');
INSERT INTO `TB` VALUES ('非洲', '非洲其他', '474', '512', '390');
INSERT INTO `TB` VALUES ('非洲', '未列明', '1005', '2315', '789');
SELECT K.A AS '洲別',K.B AS '國家',
K.Y1 AS '第一年',K.Y2 AS '第二年',
K.Y3 AS '第三年',
(K.Y1+K.Y2+K.Y3)/3 AS '國別三年平均人數',
(SELECT AVG(M.Y3) AS 'Y3Temp'
FROM TB AS M
WHERE M.A=K.A
GROUP BY A) AS '洲別第三年平均人數'
FROM TB AS K;

Demo

0
希希寶
iT邦新手 4 級 ‧ 2021-05-19 10:25:29

第一點是不是在最後一行忘記加上"IGNORE 1 ROWS 或 IGNORE 1 LINES"了?

LOAD DATA INFILE 'xxx.csv' INTO TABLE table_name
IGNORE 1 LINES

LOAD DATA INFILE 'xxx.csv' INTO TABLE table_name
IGNORE 1 ROWS

BB iT邦新手 4 級 ‧ 2021-05-19 18:31:53 檢舉

感恩 謝謝

我要發表回答

立即登入回答