【发布时间】:2021-06-17 08:27:56
【问题描述】:
我编写了一个简单的 Bash 脚本,它从完全由整数组成的 CSV 数据中为多行生成 SQL INSERT STATEMENT,并将其保存到文本文件中(这样我就可以将其复制并粘贴到任何我想要的地方)。
现在我想知道如何自动引用字符串值;即自动包装数据类型为字符串且需要 "" 才能插入 SQL 表的 CSV 列。正如您在下面看到的,脚本读取整个 CSV 行并且不会区分列。我是否必须将每一列分配给一个变量,然后分别引用字符串?或者有没有更有效的方法?无论哪种方式,我都会很高兴看到您对上述问题的修复!
#!/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 line
do
echo "($line),"
done < <(tail -n +2 $csv_file) >> SQL_INSERT_$table.txt && sed -i '' '$ s/.$/;/' SQL_INSERT_$table.txt
【问题讨论】:
-
您使用的是哪个数据库?也许这些答案会有所帮助 - *.com/questions/13405572/… - 即数据库知道它期望什么类型 - 这样你就可以知道要引用什么了..
-
@MrR:我使用 MySQL 5.7。我仍然需要在我的 INSERT STATEMENT 中引用字符串值,它可能有数百行长。这就是为什么我要尝试对它们进行脚本引用,然后将结果复制并粘贴到 MySQL 查询框中。
-
您需要解决 2 个部分 - (a) 要引用的列,以及 (b) 然后引用每一列.. 尽管 mysql 没有导入器(请参阅 *.com/questions/6605765/…对于其他一些替代方案)。
标签: sql arrays bash sql-insert quoting