作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 3000 个 csv 文件,这些文件以 "分隔,并以 , 分隔。每个文件均以从中收集数据的服务器命名。我需要将它们导入到数据库中才能处理数据。
对于我尝试过的单个文件:
mysql -uuser -ppassword --local-infile mydatabase -e "LOAD DATA LOCAL INFILE '/root/downloads/test/reports/mytestcsvfile.csv' INTO TABLE results FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 LINES FIELDS FIELDS ESCAPED BY '\' "
除了每个数据元素都用引号引起来之外,这工作得很好。如果我添加
ENCLOSED BY '"'
然后该参数中的“停止导入工作并只给我一个 > 提示。
如果我用
转义“ENCLOSED BY '\"'
然后我收到一个错误:
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'FIELDS ENCLOSED BY '"' FIELDS ESCAPED BY '\'' at line 1
我需要将所有内容都包含在以下内容中:
#!/bin/bash
FILES= /root/downloads/smtptest/reports/
for f in $FILES
do
echo "processing $f..."
mysql -uuser -ppassword --local-infile mydatabase -e "LOAD DATA LOCAL INFILE '/root/downloads/test/reports/$f' INTO TABLE results FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 LINES FIELDS FIELDS ESCAPED BY '\' "
done
如何运行导入并删除“。Mysqlimport 看起来被排除,因为它根据文件名导入到表中,而不是我想要的。
还有...
为了让我能够为每个文件运行它,我必须首先运行它:
for f in file*.csv; do echo ":" $f ":"; sed -i "s/^/\"$f\",/" "$f"; done
这会将每个服务器名称(文件名)添加到每个文件中每行的开头,以便它成为数据库中记录的一部分。有更优雅的方法吗?
最佳答案
我发现了问题:我多次使用“字段”来定义参数的封闭、终止和转义。当我删除它时,一切都开始工作
这有效:
!/bin/bash
for filename in /root/downloads/smtptest/reportsmod/*.csv; do
echo "processing $filename"
mysql -uuser -ppassword --local-infile smtpsslcheck -e "LOAD DATA LOCAL INFILE '$filename' INTO TABLE results FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 LINES"
done
关于mysql - 如何将多个csv文件导入到mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47886026/
我是一名优秀的程序员,十分优秀!