mysql - 将数据从 csv 导入到 mariaDB 缺少第一列

标签 mysql bash csv

我有一个包含 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/

相关文章:

java - Hibernate:内部类值未在数据库中更新

php - 如何在mysql数据库中将数据从一个表插入和检索到另一个表

bash - 使用具有多个参数的 AWK 比较 2 个文件

linux - BASH Linux - 如何通过 echo 将 find 的结果传递到 mv 目的地

java代码如何读取csv文件中的空值

java - CSV 文件无法更新

php - 将密码存储到数据库中/从数据库中读取密码

linux - 将文本文件中的数字与另一个文本文件中的数字列表进行比较

c# - FileHelpers - 'FieldConverter' 在此声明类型上无效

php - 使用 MySQL 查询作为 PHP 脚本的标识,将 FCM 推送通知发送到 Android 应用程序中的特定设备