#!/bin/bash
sqlite test.db "select * from tablename" > /tmp/dump.sql
mysql -uroot -ppassword databasename <<EOF
load data infile '/tmp/dump.sql'
into table tablename
fields terminated by '|'
escaped by '\\'
lines terminated by '\n';
EOF
Eu preciso fazer algum tipo de importação incremental de novo e de novo de um banco de dados SQLite 3 para um banco de dados MySQL. Nomes de coluna são os mesmos em ambos os bancos de dados. Existe uma boa maneira de fazer isso por um script (por que existe uma boa maneira de obter os valores de coluna de uma linha como um tipo de matriz / lista, para que eu possa realmente trabalhar com eles?) Ou eu estou melhor com um pequeno programa C?
Atualização: OK, existe a opção -line, dando um valor de coluna por linha, as linhas de resultado são separadas por uma linha vazia. Ainda precisa encontrar uma maneira muito simples de analisar isso; -)
#!/bin/bash
sqlite test.db "select * from tablename" > /tmp/dump.sql
mysql -uroot -ppassword databasename <<EOF
load data infile '/tmp/dump.sql'
into table tablename
fields terminated by '|'
escaped by '\\'
lines terminated by '\n';
EOF
Eu escrevi uma coisa dessas em PHP usando adaptadores, uma coisa que fizemos foi criar um sinalizador sys_parsed para marcar o que foi importado (ou falhou). Basicamente, acompanhe para que você não acabe tentando uma importação que não funcionará para sempre.
Ele analisa milhares de arquivos sqlite e os importa para um banco de dados mysql com uma tabela por cliente. Mas definitivamente não é um 15 liner. Há muito mais do que isso se você quiser importações confiáveis. É bastante performático, não tem muita carga.
Se lhe interessa, posso dar uma olhada e ver se posso compartilhá-lo (escrito para o cliente)