【问题标题】:Undesired result in csv upload in shell script在 shell 脚本中上传 csv 时出现不希望的结果
【发布时间】:2015-06-17 06:01:06
【问题描述】:

我正在使用以下脚本将 csv 上传到我的 DB

for _csv_file in ${_csv_files[@]}
do
mysql -h $_host -u $_db_user -p$_db_password $_db --local_infile=1 -e "use $_db" -e"
LOAD DATA LOCAL INFILE '$_csv_file'
IGNORE INTO TABLE csv_temp_table
FIELDS TERMINATED BY '\|'
OPTIONALLY ENCLOSED BY '\"'  
IGNORE 1 LINES 
(\`ProductType\`, 
\`Title\`, 
\`Publisher\`, 
     .
     .
     .
     .
     .  
\`Hi_Res_Image\` 
);"
 done  
 exit; 

但是发生的情况是,我将 632 行插入到我的数据库中,而不是 csv 中的 63 行! 我在这里做错了什么?请帮我。谢谢!

样本 csv

ProductType|Title|Publisher|Navarre Publisher NBR|Platform-Format|Artist|Genre|Theme|Material Group|Box Size|Height(in)|Width(in)|Length(in)|Weight(lb)|CaseHeight(in)|CaseWidth(in)|CaseLength(in)|CaseWeight(lb)|Rating|UPC|Navarre P/N|Mfg P/N|Release Date|MSRP|Description|Lo_Res_Image|Hi_Res_Image
ACCESSORIES|VERSACHECK FORM  1000 BLUE PRESTIGE 500|GLOBAL BIZ FORCE|GBF|APP-BASED ACCESSORY||213|0|ACC-095|LG|2.800|8.900|11.400|6.600|9.300|11.900|13.100|27.400|E|814329506231|8026727|10BP02-6231|08/12/2008|$36.99|VersaCheck® - Form #1000 Business Voucher Check Refills are the perfect 
high-security blank check paper designed specifically to use with all VersaCheck® software products (except personal versions) to print custom business checks that comply 100% with ANSI X9 banking standards. 
 Save 50-80% or more per pack vs. pre-printed mail order checks.<br /><br />This 

【问题讨论】:

  • 我不是 mysql 用户,但 IGNORE 1 LINES 对于您提供的示例 cvs 似乎并不完整:它缺少 "Navarre Publisher NBR|Platform-Format"...
  • @prodev_paris IGNORE 1 LINES 是用来去掉header的,和我遇到的问题无关。

标签: mysql bash shell csv


【解决方案1】:

您的 csv 中似乎有换行符。我假设您的示例 csv 应该只包含一个条目(在标题下方) - 描述很长,没有 Lo_Res_Image 或 Hi_Res_Image。

但描述包含两个换行符,因此您的数据库中最终会出现三行,而您希望有一个。

【讨论】:

    猜你喜欢
    • 2016-08-06
    • 2020-12-02
    • 2016-12-20
    • 2017-07-06
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    相关资源
    最近更新 更多