【发布时间】:2015-11-08 16:10:38
【问题描述】:
我正在寻找 awk 命令或类似工具,将标准格式良好的 SQL 插入脚本转换为 csv 文件。
按照标准,我的意思是任何地方都没有数据库供应商特定的东西。
格式良好是指 sql 脚本的每一行都有一个完整的列集插入的情况,即使有 NULL 也是如此。此外,要插入的字段顺序也是相同的。
示例输入 SQL 脚本:
INSERT INTO tbl VALUES (1, 'asd', 923123123, 'zx');
INSERT INTO tbl VALUES (1, NULL, 923123123, 'zxz');
INSERT INTO tbl VALUES (3, 'asd3', 923123123, NULL);
可选:
INSERT INTO tbl (colA, colB, colC, colD) VALUES (1, 'asd', 923123123, 'zx');
预期的输出应该是一个 csv 文件:
1,'asd',923123123,'zx'
1,,923123123,'zxz'
3,'asd3',923123123,
寻找性能高效的解决方案。
【问题讨论】:
-
csv 实际上是邪恶的。如果文本数据从不包含单引号(aka tick = '),那么我猜它没问题。其他要添加的测试用例包括模拟通用名称和地址数据:INSERT INTO tbl VALUES (1, NULL, 923123123, 'foo'' bar');插入 tbl 值 (1, NULL, 923123123, 'foo , bar');插入 tbl 值 (1, NULL, 923123123, 'foo ,'', bar');
-
csv 是最广泛使用的数据交换格式,如果它是邪恶的,它仍然是我们必须理解的。如果你有不错的工具将数据提取到 csv,那么你会很好。
标签: sql csv awk sed export-to-csv