Estou tentando importar um arquivo csv para uma tabela SQLite.
Exemplo csv:
1,2
5,6
2,7
Comando de exemplo:
sqlite> create table foo(a, b);
sqlite> .separator ,
sqlite> .import test.csv foo
Error: test.csv line 1: expected 2 columns of data but found 4
Eu nem tenho certeza por que ele encontraria quatro colunas com seis dados e duas colunas.
6 - 2 = 4
\r\n
no Windows,\n
no * nix (inclui Macs mais recentes),\r
em Macs mais antigos.Respostas:
O que também está sendo dito nos comentários, o SQLite vê sua entrada como 1, 25, 62, 7. Eu também tive um problema com, e no meu caso foi resolvido mudando "separador" para ".mode csv". Então você pode tentar:
O primeiro comando cria os nomes das colunas da tabela. No entanto, se quiser que os nomes das colunas sejam herdados do arquivo csv, você pode simplesmente ignorar a primeira linha.
fonte
create table
comando e o sqlite usará os nomes das colunas do arquivo csv.Year,Make,Model,Description,Price
e não os dados reais. Se for esse o caso com seu arquivo CSV, você não precisa criar manualmente a tabela usando ocreate table
comando. O.import
comando usará a primeira linha do arquivo para determinar os nomes das colunas e criar a tabela de acordo. Você ainda deve incluir o nome da tabela no comando. As mesmas informações dos documentos SQLite ..mode
? Isso não é apenas para saída?type
para um nome de coluna CSV.Veja como eu fiz.
Insira o shell sqlite do banco de dados ao qual os dados precisam ser adicionados
sqlite> .separator "\t" ---IMPORTANT! should be in double quotes sqlite> .import afile.csv tablename-to-import-to
fonte
.separator "\t" "\r"
Estou mesclando informações de respostas anteriores aqui com minha própria experiência. O mais fácil é adicionar os cabeçalhos de tabela separados por vírgula diretamente ao seu arquivo csv, seguido por uma nova linha e, em seguida, todos os seus dados csv.
Se você nunca mais usar o sqlite (como eu), isso pode economizar uma ou duas pesquisas na web:
No shell Sqlite, digite:
Se você não instalou o Sqlite em seu Mac, execute
Você pode precisar fazer uma pesquisa na web para saber como instalar o Homebrew.
fonte
unescaped " character
alertas?antes do comando .import, digite ".mode csv"
fonte
Como importar arquivo csv para sqlite3
Criar banco de dados
Defina o modo e nome da tabela
Importe os dados do arquivo csv para sqlite3
Encontre mesas
Encontre o seu esquema de tabela
Encontre os dados da tabela
Conte o número de linhas na tabela
fonte
Com o Termsql, você pode fazer isso em uma linha:
termsql -i mycsvfile.CSV -d ',' -c 'a,b' -t 'foo' -o mynewdatabase.db
fonte
Tive exatamente o mesmo problema (no OS X Maverics 10.9.1 com SQLite3 3.7.13, mas não acho que o SQLite esteja relacionado à causa). Tentei importar dados csv salvos do MS Excel 2011, que btw. usa
';'
como separador de colunas. Descobri que o arquivo csv do Excel ainda usa o caractere de nova linha do Mac OS 9 vezes, alterá-lo para nova linha unix resolveu o problema. O AFAIR BBEdit possui um comando para isso, assim como o Sublime Text 2.fonte
tr -s '\r' '\n'
e funciona com todos os tipos de arquivos aleatórios.Siga os passos:-
fonte
Como alguns sites e outros artigos especificam, é simples dar uma olhada neste. https://www.sqlitetutorial.net/sqlite-import-csv/
Não precisamos especificar o separador para o
csv
arquivo, porque csv significa separado por vírgula.sqlite> .separator ,
não há necessidade desta linha.Isso funcionará perfeitamente :)
PS: My cities.csv with header.
fonte
.save someFileName
no final. Levei horas para encontrar isso e finalmente exportá-lo no arquivo de banco de dados de memória para o disco 😅