【发布时间】:2013-08-13 13:05:26
【问题描述】:
我使用以下脚本从csv 文件中导入数据:
#!/bin/bash
# show commands being executed, per debug
set -x
# define database connectivity
_db="xxx"
_db_user="xxx"
_db_password="xxx"
_table="movie"
# define directory containing CSV files
_csv_directory="/tmp"
_csv_file='xxxxxx.csv'
_header_columns_string='link,description,duration,thumbnaillink,iframe,tags,category'
# import csv into mysql
mysqlimport --fields-terminated-by=';' --lines-terminated-by="\n" --columns=$_header_columns_string -u $_db_user -p$_db_password $_db $_table $_csv_directory/$_csv_file
exit
当我通过 bash import.sh 以 root 身份执行脚本时,我收到以下错误消息:
+ _db=mydatabase
+ _db_user=xxx
+ _db_password=xxx
+ _table=movie
+ _csv_directory=/tmp
+ _csv_file=xxxxxx.csv
+ _header_columns_string=link,description,duration,thumbnaillink,iframe,tags,category
+ mysqlimport --local '--fields-terminated-by=;' '--lines-terminated-by=\n' --columns=link,description,duration,thumbnaillink,iframe,tags,category -u xxx -pxxx mydatabase movie /tmp/xxxxxx.csv
mysqlimport: Error: 13, Can't get stat of '/var/lib/mysql/mydatabase/movie' (Errcode: 2), when using table: movie
+ exit
但数据库和表存在。
csv 文件存在并且可以读取,可以选择表,我可以手动将数据行插入到数据库中。
我做错了什么?
【问题讨论】:
-
您是否尝试为
mysqlimport提供--local选项? -
那个csv文件的权限是什么?它需要系统上的所有用户都可以阅读。尝试 chmod mysql:mysql xxx.csv 或 chmod 0666 xxx.csv 然后再试一次,告诉我们会发生什么?
标签: bash mysqlimport