我有一个包含 4 列的 .csv 文件。我在将第一列输入表中时遇到问题。这是脚本:
#!/bin/bash
_csvfile="/logstash/Mysql-Data.csv"
#Create the tables if they dont exists
mysql -u user -ppassword logstash << eof
CREATE TABLE IF NOT EXISTS \`elkDevIndexAssoc\` (
cenDevSID varchar(255),
cenDevFQDN varchar(255),
cenDevIP varchar(255),
cenDevServiceName varchar(255)
)
eof
#Format the csv, replace ";" with ","
sed -i -e 's/;/,/g' $_csvfile
#sed -i -e 's/^/,/g' $_csvfile
IFS=,
while read column1 column2 column3 column4
do
echo "INSERT INTO elkDevIndexAssoc (cenDevSID,cenDevFQDN,cenDevIP,cenDevServiceName) VALUES ('$column1', '$column2', '$column3', '$column4');"
done < Mysql-Data.csv | mysql --user='user' --password='password' -D logstash;
如果我回显每个列变量,例如 $column1 - 4,输出看起来不错。如下所示:
123213 serverfqdn 127.0.0.1 mysql
但是当我尝试将其导入到 mysql 时,第一列丢失了,如下所示:
mysql> select * from elkDevIndexAssoc;
+-----------+------------------------------------------------+---------------- -+--------------------+
| column1 | column2 | column3 | column4 |
+-----------+------------------------------------------------+---------------- -+--------------------+
|column1 | column2 | column3 | column4
| | serverfqdn | 127.0.0.1 | mysql
我不明白为什么当我将其导入到 mysql 时第一列会丢失,但当我单独回显每个变量时却不会?
编辑:我的 .csv 文件格式如下:
S123123,serverfqdn,127.0.0.1,service
S123123,serverfqdn,127.0.0.1,service
S123123,serverfqdn,127.0.0.1,service
S123123,serverfqdn,127.0.0.1,service
最佳答案
你的 mysql 命令应该在你的循环内:
while read column1 column2 column3 column4; do
echo "INSERT INTO ..." | mysql --user='user' --password='password' -D logstash;
done < Mysql-Data.csv
OT:您不需要分号来终止 echo 字符串中的 mysql 命令。
关于mysql - 将数据从 csv 导入到 mariaDB 缺少第一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50907901/