我目前遇到的问题与将CSV文件读入rails应用程序中的sqlite3数据库有关。我有大约20个CSV文件,每个文件有20k行数据,我需要定期读入数据库。
尝试了几种不同的方法,我选择使用sqlite3 console
,因为这使我能够快速上传数据(在几秒钟内,而不是使用我以前使用的代码通过Rails的时间)。我在本地测试了这种方法,我正在运行sqlite 3.7.15.2
并使用以下命令成功地将数据读入我的表allitems
:
sqlite3 development.sqlite3
.separator ','
.import '../newdata.csv' allitems
在我的成功鼓舞下,我开始尝试在现场测试网站上重新创建这个过程。但是,在这种情况下,我收到一些错误,表明newdata.csv
中的列数并不总是与allitems
中的列数相匹配。我在Excel中检查了数据,发现所有数据都在正确的列数中。在进一步调查中,我发现文本字符串中的逗号引起了问题并在线发现了一些信息(http://www.sqlite.org/cvstrac/wiki?p=ImportingFiles),表明sqlite3
将始终在逗号上分开,无论它们是否在引号内
我的第一个解决方案是尝试使用一个永远不会出现在文本字符串(,|,
)中的新分隔符,虽然这确实成功但也导致了不同的问题,因为现在网页上显示的许多文本字段包含"
在开始和结束时有各种敲击效果。我为此创建了一个额外的工作,将我的分隔符转换为","
并在非字符串的字段之前和之后插入"
,但是数据中的异常会变成一个永无止境的小提琴。
对上述方法失去耐心,我正在寻找一些关于如何解决这个问题的建议?特别是,我很困惑,为什么我在本地运行代码时没有任何问题,但在服务器上遇到所有这些问题。服务器当前正在运行sqlite 3.7.3
,但我不知道这是否是问题的原因,或者我是如何远程更新版本的......
感谢您的建议
答案 0 :(得分:0)
强大地导入CSV文件很复杂; sqlite3
的导入功能仍有一些频繁的错误修正。
显然,版本3.7.3和3.7.15之间存在必要的错误修复。
sqlite3
工具实际上没有任何依赖关系。
Download或编译自己的副本,将其重命名为您喜欢的任何副本,并使用它。