Hug*_*ime 1 sql csv sqlite import r
我可以使用什么方法删除从CSV/TXT文件,该文件是太大了具体的太行加载到内存中,并手动编辑?
背景
我的问题实际上是与将csv导入sql数据库相关的问题的间接解决方案.
我有一系列10-30gb的csv文件,我想导入并从R中填充一个sqlite表(因为它们太大而无法作为整体导入R中的数据帧).我正在使用'RSQlite'包.
由于与其中一行格式错误相关的错误,一对夫妇失败了.然后取消填充过程.R返回导致进程失败的行号.
给出的错误是:
./csvfilename line 102206973 expected 9 columns of data but found 3)
Run Code Online (Sandbox Code Playgroud)
所以我确切地知道导致错误的那一行.
我看到了两个潜在的"间接"解决方案,我希望有人可以帮助我.
(i)删除导致20 + gb文件错误的行.例如,上面例子中的102,206,973行.我并不关心通过跳过或删除它来"丢失"第102,206,973行中的数据.但是我已经尝试过但未能以某种方式访问csv文件并删除该行.
(ii)直接使用sqlite(或其他任何东西?)导入一个允许你跳过行或错误的csv.
虽然不太可能直接与解决方案相关,但这里使用的是R代码.
db <- dbConnect(SQLite(), dbname=name_of_table)
dbWriteTable(conn = db, name ="currentdata", value = csvfilename, row.names = FALSE, header = TRUE)
Run Code Online (Sandbox Code Playgroud)
谢谢!
要删除特定行,您可以使用sed:
sed -e '102206973d' your_file
Run Code Online (Sandbox Code Playgroud)
如果您希望替换就地完成,请执行此操作
sed -i.bak -e '102206973d' your_file
Run Code Online (Sandbox Code Playgroud)
这将创建备份名称your_file.bak并your_file删除指定的行.
$ cat a
1
2
3
4
5
$ sed -i.bak -e '3d' a
$ cat a
1
2
4
5
$ cat a.bak
1
2
3
4
5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
255 次 |
| 最近记录: |