Importar CSV para 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
Nem sei porque encontraria quatro colunas com seis dados e duas colunas.
9 answers
O que também está sendo dito nos comentários, SQLite vê sua entrada como 1, 25, 62, 7. Também tive um problema com, e no meu caso foi resolvido mudando "separador" para ".mode csv". Para que pudesses tentar.
sqlite> create table foo(a, b);
sqlite> .mode csv
sqlite> .import test.csv foo
O primeiro comando cria os nomes das colunas da tabela. No entanto, se você quiser os nomes das colunas herdadas do arquivo csv, você pode simplesmente ignorar a primeira linha.
- Make / Convert csv file to be sepperated by tabs (\t) AND not enclosed by any quotes (sqlite interpreta quotes literalmente - says old docs)
-
Introduza a shell sqlite da db à qual os dados devem ser adicionados
sqlite> .separator "\t" ---IMPORTANT! should be in double quotes sqlite> .import afile.csv tablename-to-import-to
Estou a juntar informações de respostas anteriores aqui com a minha própria experiência. A mais fácil é adicionar os cabeçalhos de tabela separados por vírgulas diretamente ao seu ficheiro csv, seguido por uma nova linha, e depois TODOS os seus dados csv.
Se nunca mais voltar a fazer coisas sqlite (como eu), isto pode poupar-lhe uma pesquisa na web ou duas:
No shell Sqlite, indique:
$ sqlite3 yourfile.sqlite
sqlite> .mode csv
sqlite> .import test.csv yourtable
sqlite> .exit
Se não tiver o Sqlite instalado no seu Mac, execute
$ brew install sqlite3
Você pode precisar de fazer uma pesquisa na web para saber como instalar o Homebrew.
Como importar o ficheiro csv para sqlite3
-
Criar base de dados
sqlite3 NYC.db
-
Define o modo & nome de mesa
.mode csv tripdata
-
Importar os dados do ficheiro csv para sqlite3
.import yellow_tripdata_2017-01.csv tripdata
-
Procurar tabelas
.tables
-
Encontra o esquema da tua mesa
.schema tripdata
-
Encontrar dados da tabela
select * from tripdata limit 10;
-
Conte o número de linhas no quadro
select count (*) from tripdata;
Com Termsql podes fazê-lo numa linha:
termsql -i mycsvfile.CSV -d ',' -c 'a,b' -t 'foo' -o mynewdatabase.db
Eu tive exatamente o mesmo problema (no OS X Maverics 10.9.1 com SQLite3 3.7.13, mas eu não acho que SQLite está relacionado com a causa). Eu tentei importar dados csv salvos do MS Excel 2011, que btw. usa ';'
como separador de colunas. Eu descobri que o arquivo csv do Excel ainda usa o personagem newline do Mac OS 9 vezes, alterando-o para unix newline resolveu o problema. AFAIR BBEdit tem um comando para isso, bem como Texto Sublime 2.
Siga os passos: -
- 1] Nome sqlite3 2] .modo csv nome de mesa 3] .importar o nome do ficheiro.CSV tablename
Como alguns sites e outros artigos especificam, é simples ter um olhar para este. https://www.sqlitetutorial.net/sqlite-import-csv/
Não precisamos de especificar o separador para csv
ficheiro, porque csv significa vírgula separado.
Não há necessidade desta linha.
sqlite> create table cities(name, population);
sqlite> .mode csv
sqlite> .import c:/sqlite/city_no_header.csv cities
Isto vai funcionar perfeitamente.
PS: as minhas cidades.csv com cabeçalho.
name,population
Abilene,115930
Akron,217074
Albany,93994
Albuquerque,448607
Alexandria,128283
Allentown,106632
Amarillo,173627
Anaheim,328014