【发布时间】:2018-08-01 02:08:53
【问题描述】:
我有一系列大型 (25-250MB) 制表符分隔的文本文件,我需要将其转换为 SQL 格式的批量插入。我对 awk 非常陌生,所以我不知道自己在做什么。我所知道的是,我需要解决方案以尽可能短的时间处理数据。结果,我的尝试是微弱的。我试图通过 sed(总集群)和 awk 在每个文件中分别进行三个单独的传递来实现以下目标;就这样……
通过 1:awk '{gsub(/%J\t/,"\(\'")}1' file.txt
通过 2:awk '{gsub(/\n,"\'\)\n")}1' file.txt
通过 3:awk '{gsub(/\t/,"\',\'")}1' file.txt
由于我严重缺乏 awk 经验,当我尝试上述操作时,终端会切换到新提示符,就像它在等待更多信息而不是执行命令一样。
以下是整个文件中数据格式的示例。
每一行的结构如下:
%J\t数据\t数据\t数据\t数据\t数据\n
我想使用 awk 或其他东西将每一行重组为以下格式:
('DATA','DATA','DATA','DATA','DATA',@id)\n
注意:如果我的格式不正确,我深表歉意。这是我在 Stack 上的第一篇文章。
提前感谢大家的宝贵时间和帮助!
【问题讨论】:
-
展示你的尝试
-
请发布 3 个简单的内容,1- 代码标签中的示例输入,2- 代码标签中的示例输出,3- 您的条件和您在帖子中的尝试。
-
什么是
@id?如果您打算对术语进行定义,那将是受欢迎的。您的尝试失败了,因为单引号内有单引号。 -
嗨 JNevill,@id 是乱码。我正在尝试构建的是一组 MySQL BULK INSERT。我已经转义了单引号。这对 awk 不起作用吗?
-
shell 在 Awk 运行之前解释引号。您不能在 Bourne shell 中的单引号内转义单引号(尽管可以使用其他一些变通方法)。