我有一些由\002
字符分隔的数据。这是我用来导入它的:
cat data.txt \
| tr -d '\r' \
| tr '\n' '\003' \
| tr '\t' ' ' \
| tr '\001' '\t' \
| tr '\002' '\n' \
| sed 's%\003%\\n%g' \
> data-formatted.txt
此命令会删除\r
个字符,将\n
更改为\\n
,并将\002
更改为新行\n
之前格式化:
http://wikisend.com/download/486524/data.txt
Not Escaped:
1 new
line 2 new
line
2
Escaped:
1\001new\nline\002\001
2\001new\nline\n2\002\001
格式化后:
Not Escaped:
1 new\\nline
2 new\\nline\\n2
Escaped:
1\tnew\\nline\t\n
2\tnew\\nline\\n2\t\n
问题是我的数据是导入\n
而不是新行。
这是我的导入脚本:
import.txt:
.separator "\t"
.import data-formatted.txt my_table
我的导入命令:
cat import.txt | sqlite3 my.db
测试数据:
echo 'SELECT * FROM my_table;' | sqlite3 my.db
1|new\nline|
2|new\nline\n2|
如何在数据字段中导入\ n作为换行符?
答案 0 :(得分:1)
您可以尝试使用此Ruby代码。这会将您的数据转换为csv格式。
#!/usr/bin/env ruby
require 'csv'
data = File.read(ARGV.shift)
set = data.split("\x02\x0a").map{|e| e.strip.split("\x01")}.select{|e| e.any?}
output = CSV.generate do |csv|
set.each do |e|
csv << e
end
end
puts output
将其保存到script.rb
等文件并运行ruby script.rb data > output.csv
我希望你的数据不是那么大。如果它滞后尝试使用更快的生成器,如FasterCSV。
示例输出:
1,"new
line"
2,"new
line
2"