【发布时间】:2021-06-18 15:39:08
【问题描述】:
在这个post 中,我问了一个问题,关于如何让我的脚本读取 CSV 标头和 auto-quote 字符串值;即自动包装那些数据类型为字符串并且需要 "" 才能插入 SQL 表的列。显然,这超出了 Bash 的处理能力?
无论如何,我欢迎任何有关如何使以下脚本工作的帮助:在这里,我有基本相同的脚本,但我尝试手动定义单独的列并将它们分配给col3 为字符串列的变量,因此被引用。不用说,它并没有做我想要做的事情(即给我 col3 下所有字符串数据的引用值)。谢谢!
#!/bin/bash
echo Path to to-be-imported CSV:
read csv_file
echo Table name to import into:
read table
echo "INSERT INTO $table VALUES" > SQL_INSERT_$table.txt
while read col1 col2 col3 col4
do
echo "($col1 $col2 "$col3" $col4),"
done < <(tail -n +2 $csv_file) >> SQL_INSERT_$table.txt && sed -i '' '$ s/.$/;/' SQL_INSERT_$table.txt
【问题讨论】:
-
您期望的输出(示例)是什么?也许您可以使用
printf "(%q, %q, %q, %q)" "$col1" "$col2" "$col3" "$col4")而不是引用自己? -
感谢@NoDataFound。但是我仍然需要提前确定我想要引用哪些列,对吧?我最初的问题是是否有办法识别字符串列并自动引用它们(在脚本的一部分),这样我就可以将整个标题提供给单个变量。
-
@KayGee 您使用的是哪个数据库?也许这些答案会有所帮助 - *.com/questions/13405572/…
标签: sql arrays bash variables quoting