我需要插入以下逗號分隔的字符串從標準輸出(SPEEDTEST-CLI)進入一個MySQL分貝進口逗號分隔的字符串從管到MySQL數據庫
1746,Vodafone DE,Frankfurt,2017-04-24T16:00:13.708464,292.1655728839447,267.019,119047915.27025849,12007236.796291795
柱說明如下: SERVER_ID,SPONSOR,SERVER_NAME, TIMESTAMP,DISTANCE,PING,下載,上傳
什麼是最好的方式做到這一點,而不需要將數據保存到csv,然後將其導入到MySQL?
我能轉換逗號分隔的數據sqlable數據
SQL_RESULT_DATA=$(echo $RESULT_DATA | sed -e "s/,/','/g;s/^\(.*\)$/'\1'/")
但
mysql --host=10.8.0.18 --user speedtest --password=speedtest < echo "INSERT INTO `TEST_DATA` (`SERVER_ID`, `SPONSOR`, `SERVER_NAME`, `TIMESTAMP`, `DISTANCE`, `PING`, `DOWNLOAD`, `UPLOAD`) VALUES ($SQL_RESULT_DATA)"
失敗
-bash: TEST_DATA: command not found
-bash: SERVER_ID: command not found
-bash: SPONSOR: command not found
-bash: SERVER_NAME: command not found
-bash: TIMESTAMP: command not found
-bash: DISTANCE: command not found
-bash: PING: command not found
-bash: DOWNLOAD: command not found
-bash: UPLOAD: command not found
-bash: echo: No such file or directory
表說明:
MySQL [speedtest]> DESCRIBE TEST_DATA
+-------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------+------+-----+---------+----------------+
| TEST_ID | int(11) | NO | PRI | NULL | auto_increment |
| SERVER_ID | int(11) | NO | | NULL | |
| SPONSOR | text | NO | | NULL | |
| SERVER_NAME | text | NO | | NULL | |
| TIMESTAMP | text | NO | | NULL | |
| DISTANCE | int(11) | NO | | NULL | |
| PING | int(11) | NO | | NULL | |
| DOWNLOAD | int(11) | NO | | NULL | |
| UPLOAD | int(11) | NO | | NULL | |
+-------------+---------+------+-----+---------+----------------+
在最少顯示隱含的mysql表的相應字段名稱 – RomanPerekhrest
字段是否可能包含逗號,字段用引號括起來以保護它?這使得在shell腳本中解析它變得更加困難。 – Barmar
關於'LOAD DATA INFILE'的MySQL文檔顯示瞭如何使用命名管道來避免將CSV數據保存到真實文件中。 – Barmar