我创建了一个脚本来将 CSV 数据导出到 mysql 表。
#!/bin/bash
cd /data/NEW
for f in User*
do
mysql --user="root" --password="user@123" -e "LOAD DATA LOCAL INFILE '/data/NEW/"$f"' ignore into table new.table2 fields terminated by ',' enclosed by '"' lines terminated by '\n' (table_date, table_name, table_count);"
done
但我收到以下错误。但我找不到我在哪里搞砸了。
test.sh: line 6: unexpected EOF while looking for matching `''
test.sh: line 9: syntax error: unexpected end of file
有人可以告诉我哪里可以改进吗?
您似乎想在双引号命令字符串中包含双引号:
您需要转义嵌入的双引号字符,以便它包含在字符串中而不是终止它:
另请注意,您的使用在
$f
此处完全未引用:最好引用它(即让它被它已经是其中一部分的双引号字符串引用):
或者,如果您需要在命令字符串中包含双引号字符:
您也可以使用 here-document 来简化引用:
在上面的文档中,每个引用都是字面的。
您的查询中有很多
"
符号。你应该逃离他们。注意
\"
而不是简单"
?在这种情况下,最好将 SQL 脚本存储在文件中并通过重定向执行它: