gpt4 book ai didi

mysql - 如何将多个csv文件导入到mysql

转载 作者:行者123 更新时间:2023-11-29 18:05:35 26 4
gpt4 key购买 nike

我有 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com