我有一些用\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作为换行符导入?
最佳答案
您可以尝试以下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"
关于bash - SQLite用新行导入字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18729422/