Preciso despejar um arquivo .sql ou .csv no SQLite (estou usando a API SQLite3). Só encontrei documentação para importar / carregar tabelas, não bancos de dados inteiros. Agora, quando digito:
sqlite3prompt> .import FILENAME TABLE
Recebo um erro de sintaxe, pois ele está esperando uma tabela e não um banco de dados inteiro.
database
sqlite
import
sqlite-shell
happythenewsad
fonte
fonte
Respostas:
Para importar de um arquivo SQL, use o seguinte:
Para importar de um arquivo CSV, você precisará especificar o tipo de arquivo e a tabela de destino:
fonte
Tente fazer a partir do comando como:
Obviamente, isso só funcionará com instruções SQL em dump.sql. Não tenho certeza de como importar um CSV.
fonte
.mode csv
sqlite3 database.db < dump.sql
é SOOOO LENTO !!! Portanto, usecat dump.sql | sqlite3 database.db
! : DPara ir de SCRATCH com SQLite DB para importar o CSV para uma tabela:
sqlite3 <your_db_file_name>
* Ele será criado como um arquivo vazio.CREATE TABLE <table_Name> (<field_name1> <Type>, <field_name2> <type>);
Depois de criar a tabela e as colunas corresponderem aos dados do arquivo, você pode fazer o acima ...
fonte
O comando sqlite3 .import não funcionará para dados csv comuns porque trata qualquer vírgula como um delimitador, mesmo em uma string entre aspas.
Isso inclui tentar reimportar um arquivo csv que foi criado pelo shell:
Parece que devemos transformar o csv em uma lista de instruções Insert, ou talvez um delimitador diferente funcione.
No SuperUser, vi uma sugestão para usar o LogParser para lidar com arquivos csv, vou dar uma olhada nisso.
fonte
Se você estiver satisfeito em usar um script (python), então existe um script python que o automatiza em: https://github.com/rgrp/csv2sqlite
Isso criará automaticamente a tabela para você, bem como fará algumas adivinhações básicas de tipo e conversão de dados para você (então, por exemplo, ele descobrirá que algo é um número e definirá o tipo de coluna como "real").
fonte
sqlite3.ProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings
# csv2sqlite.py {caminho do arquivo csv} {caminho do banco de dados sqlite} [{nome da tabela}]Lembre-se de que o delimitador padrão para SQLite é a barra vertical "|"
http://sqlite.awardspace.info/syntax/sqlitepg01.htm#sqlite010
fonte
O SQLite é extremamente flexível, pois também permite os comandos de pontos específicos do SQLite na sintaxe SQL (embora sejam interpretados pela CLI). Isso significa que você pode fazer coisas assim.
Crie uma
sms
tabela como esta:Em seguida, dois arquivos:
Para testar a importação do arquivo CSV usando o arquivo SQL, execute:
Em conclusão, isso significa que você pode usar a
.import
instrução no SQLite SQL, da mesma forma que você pode fazer em qualquer outro RDB, como o MySQL comLOAD DATA INFILE
etc. No entanto, isso não é recomendado.fonte
Confira os termosql. https://gitorious.org/termsql https://gitorious.org/termsql/pages/Home
Ele converte texto em SQL na linha de comando. (CSV é apenas texto)
Exemplo:
Por padrão, o delimitador é um espaço em branco, então para fazê-lo funcionar com CSV que usa vírgulas, você faria assim:
alternativamente, você pode fazer isso:
Por padrão, ele irá gerar os nomes das colunas "COL0", "COL1", se você quiser usar a primeira linha para os nomes das colunas, faça o seguinte:
Se você deseja definir nomes de coluna personalizados, faça o seguinte:
fonte
se estiver usando no windows, certifique-se de adicionar o caminho para o banco de dados em "" e também de usar barra dupla \ no caminho para ter certeza de que o Windows o entende.
fonte
É assim que você pode inserir em uma coluna de identidade:
myfile.txt é um arquivo em C: \ code \ db \ predefined \
data.db está em C: \ code \ db \
myfile.txt contém strings separadas por caractere de nova linha.
Se você quiser adicionar mais colunas, é mais fácil separá-las usando a barra vertical, que é o padrão.
fonte
Importe seu csv ou sql para sqlite com phpLiteAdmin , é excelente.
fonte