2010-12-08 6 views
9

Мне нужен простой способ экспортировать данные из базы данных SQLite из нескольких таблиц, а затем импортировать их в другую базу данных.Экспорт данных из SQLite 3

Вот мой сценарий. У меня есть 5 таблиц: A, B, C, D, E.

Каждая таблица имеет первичный ключ в качестве первого столбца с именем ID. Мне нужна команда Unix, которая будет сбрасывать ТОЛЬКО данные в строке из первичного ключа в формате, который может быть импортирован в другую базу данных.

Я знаю, что могу сделать

sqlite3 db .dump | grep INSERT 

, но это дает мне все данные в таблице. Я не эксперт по базам данных, и я пытаюсь сделать это со всеми командами unix, в которых я могу написать сценарий оболочки, вместо написания кода на C++ для этого (потому что это то, что люди говорят мне, что это самый простой способ) , Я просто отказываюсь писать код C++ для выполнения задачи, которую можно сделать в 4-5 операторах из командной строки.

Любые предложения?

+0

Только что отметил ..... Я сделал дамп всех данных и попытался импортировать их в одну базу данных. Первичный ключ должен быть уникальным. Итак, моему скрипту нужно будет создавать уникальные ключи? Или, если я отключу первичный ключ и он настроен на автоматическое увеличение, будет ли операция вставки генерировать уникальный ключ? – 2010-12-08 17:08:17

+0

Кроме того, структура таблицы, в которой будут импортированы данные, будет одинаковой, и я должен экспортировать и импортировать все данные из 5 таблиц, связанных с уникальным идентификатором. Поэтому, если все 5 таблиц имеют уникальный идентификатор 1 с столбцами данных, мне нужно экспортировать его в файл, а затем импортировать в одну и ту же структуру таблицы в другую систему (файлы базы данных будут существовать). – 2010-12-08 17:16:25

ответ

2

Предложите найти инструмент, который может взять ваш запрос и экспортировать в CSV. Похоже, вам нужен сценарий. Вы хотите повторно использовать и автоматизировать это?

Для других сценариев, возможно, рассмотрите sqlite-manager Firefox plugin. Он поддерживает запуск ваших adhoc-запросов и экспорт результатов в CSV.

В том, что дать ему это утверждение:

SELECT ID FROM TableA 

Повторите для каждой таблицы, как вам нужно.

+0

sqlite3 сбрасывается в CSV .... это не моя проблема, и я не могу использовать сторонний инструмент. Это закрытая система, предназначенная для уникальных пользователей (не ПК). Система будет использовать Unix в качестве ОС, поэтому моя попытка найти решения командной строки unix.Моя основная цель - экспортировать на основе первичного ключа в формат файла, затем перенести этот файл в другую подобную систему и импортировать данные в эту базу данных. – 2010-12-08 17:10:41

0

вы также можете использовать функцию SQLite для quote.

echo "SELECT 'INSERT INTO my_new_table (my_new_key) VALUES (' || quote(my_old_key) || ');' FROM my_old_table;" | sqlite my_table > statements.sql 
+0

Можете ли вы дать больше объяснений о `quote`? – Zulu 2015-08-29 00:55:42

11

Это может выглядеть немного странно, но вы можете дать ему попробовать:

Создать текстовый файл и место следующей отчетности там:

.mode insert 
.output insert.sql 
select * from TABLE where STATEMENT; -- place the needed select query here 
.output stdout 

поток этот файл sqlite3:

$ sqlite3 -init initf DATA.DB .schema > schema.sql 

В результате вы получите два файла: один с простыми «вставками» (inser t.sql) и другой с db-схемой (schema.sql).

Смежные вопросы