我正在尝试编写一个 bash 脚本来删除数据库中的所有表,然后将所有 csv 文件导入给定目录中。我有几个问题:
使用脚本导入 1 个 csv 会出现以下错误:
ERROR 1064 (42000) at line 2: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BULK INSERT paf_addresses FROM '../sql/paf-sample.csv' WITH ( FIELDTERMINATOR = ' at line 1
如何告诉 mysql 部分为设置目录中的每个文件运行
我的脚本如下。
#!/bin/bash
detail="propertystork"
AWK=$(which awk)
GREP=$(which grep)
TABLES=$(mysql -u $detail -p$detail $detail -e 'show tables' | $AWK '{ print $1}' | $GREP -v '^Tables' )
for t in $TABLES
do
mysql -u $detail -p$detail $detail -e "drop table $t"
done
mysql -u $detail -p$detail -h localhost $detail <<-_END-OF-SCRIPT_
BULK
INSERT paf_addresses
FROM '../sql/paf-sample.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
_END-OF-SCRIPT_
最佳答案
错误是由于MySQL中没有BULK INSERT
语句造成的。
取而代之的是 LOAD DATA INFILE
LOAD DATA INFILE '../sql/paf-sample.csv'
INTO table_name
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
关于mysql - 将 csv 导入到 sql bash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21010525/