|
|
|
Копирование таблицы
|
|||
|---|---|---|---|
|
#18+
Всем доброе время суток! Работаю с SQLite 3.3.15 через Lazarus. Хотелось узнать, как можно скопировать таблицу из одной базы данных в другую. Есть какие-либо утилиты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 16:47 |
|
||
|
Копирование таблицы
|
|||
|---|---|---|---|
|
#18+
В SQLite есть оператор ATTACH DATABASE , который подключает другую базу данных к подключенной базе данных SQLite в текущем соединении. В случае если имя подключаемой базы данных содержит символы пунктуации, то оно должно быть включено в кавычки. Имена 'main' и 'temp' отсылают к главной базе и к базе, использующейся для временных таблиц. Они не могут быть отключены. Подключенные базы данных могут быть отключены с помощью оператора DETACH DATABASE . Синтаксис поключения базы данных: ATTACH [DATABASE] database-filename AS database-name Пример: ATTACH DATABASE basedb AS basedb; или так: ATTACH DATABASE 'base.db' AS basedb; Вы можете читать из подключенной базы данных, писать в нее и модифицировать ее схему в версии SQLite 3.0. и выше. Вы не можете создать новую таблицу с таким же именем, как у таблицы в какой-то из подключенных баз данных, но вы можете подключить базу данных, которая содержит таблицы с именами, которые дублируют имена таблиц в главной базе. Также допустимо многократно подключать один и тот же файл базы данных. К таблицам в подключенной базе данных можно обращаться с использованием синтаксиса имя-базы.имя-таблицы. Если имя подключенной таблицы не имеет дубликата в главной базе, к нему можно не присоединять имя базы как префикс. При подключении базы данных, все ее таблицы, не имеющие дублирующего имени, становятся таблицами по умолчанию для своего имени. Все таблицы с этим именем, которые подключаются позже, нуждаются в префиксе. Если умолчальная таблица для данного имени отключается, то следующей умолчальной таблицей для данного имени становится последняя, подключенная с этим именем. Если главная база данных не является :memory:, то транзакции между несколькими подключенными базами атомарны. В противном случае, если главная база является :memory:, то транзакции остаются атомарными внутри каждого отдельного файла базы. Последнее означает, что если в середине COMMIT -а при изменении двух или более файлов баз наступает крах системы, то какие-то из этих файлов могут оказаться измененными, а другие нет. Атомарный COMMIT подключенных баз данных является новой фичей SQLite версии 3.0. В SQLite версии 2.8, все COMMIT-ы подключенных баз ведут себя так, как если бы главная база данных являлась :memory:. Максимальное число подключаемых баз данных - 10. Для копирование таблицы нужно к уже подключенной базе данных SQLite поключить еще одну базу данных, а затем с помощью INSERT INTO и SELECT вставить данные из одной таблицы базы данных в другую таблицу базы данных, например так: INSERT INTO spisok (id, fam, ima, otch ) SELECT stspisok.id, stspisok.fam, stspisok.ima, stspisok.otch FROM stspisok ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2007, 23:39 |
|
||
|
Копирование таблицы
|
|||
|---|---|---|---|
|
#18+
Чего-то для меня это слишком трудно для понимания, извиняюсь! А можно выгрузить таблицу из базы в текстовый файл, а затем загрузить в другую базу данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2007, 09:21 |
|
||
|
Копирование таблицы
|
|||
|---|---|---|---|
|
#18+
Выгрузить таблицу из одной базы данных в другую можно так (описываю подробно): Что бы было понятнее, предположим что: base.db - это база из которой нужно выгрузить таблицу newbase.db - база, в которую нужно загрузить таблицу из файла fam - таблица из базы base.db, которую нужно выгрузить newfam - таблица из базы newbase.db, в которую нужно загрузить таблицу fam из базу base.db temp - рабочая папка ПЕРВЫЙ ВАРИАНТ: 1. ШАГ ПЕРВЫЙ: Скачай программу sqlite3.exe по этой ссылке: скачать и библиотеку sqlite3.dll по этой ссылке: скачать и извлеки указанные файлы из архива в папку temp. Далее скинь в эту же папку base.db и newbase.db 2. ШАГ ВТОРОЙ: Создай в папке temp файл 1.txt со следующим содержанием: ATTACH DATABASE 'base.db' AS basedb; ATTACH DATABASE 'newbase.db' AS newbasedb; INSERT INTO newfam (id, fam, ima, otch ) SELECT fam.id, fam.fam, fam.ima, fam.otch FROM fam 3. ШАГ ТРЕТИЙ: запусти программу sqlite3.exe и введи следующее .read 1.txt далее нажми Enter и жди до появления в программе sqlite3.exe следующего приглашения ввести данные - sqlite> Далее - закрой программу sqlite3.exe Вот и все. Данные из таблицы fam базы данных base.db перенесены в таблицу newfam базы данных newbase.db ВТОРОЙ ВАРИАНТ: 1. ШАГ ПЕРВЫЙ: Скачай программу sqlite3.exe по этой ссылке: скачать и библиотеку sqlite3.dll по этой ссылке: скачать и извлеки указанные файлы из архива в папку temp. Далее скинь в эту же папку base.db и newbase.db 2. ШАГ ВТОРОЙ: Создай в папке temp файл 1.txt со следующим содержанием: ATTACH DATABASE 'base.db' AS basedb; .mode insert fam .output temper.txt SELECT * FROM fam; 3. ШАГ ТРЕТИЙ: запусти программу sqlite3.exe и введи следующее .read 1.txt далее нажми Enter и закрой указанную программу. Если все правильно сделал, то в папке temp должен появиться файл temper.txt 4. ШАГ ЧЕТВЕРТЫЙ: Открой файл temper.txt в блокноте выбери из меню Правка --> Заменить и замени fam на newfam и сохрани изменения. 5. ШАГ ПЯТЫЙ: Открой программу sqlite3.exe и введи следующее: ATTACH DATABASE 'newbase.db' AS newbasedb; Нажми Enter Далее введи .read temper.txt Нажми Enter Далее жди до появления в программе sqlite3.exe следующего приглашения ввести данные - sqlite> Далее - закрой программу sqlite3.exe Вот и все. Данные из таблицы fam базы данных base.db перенесены в таблицу newfam базы данных newbase.db ТРЕТИЙ ВАРИАНТ: Скачай программу SQLite Administrator (freeware, есть русский интерфейс) скачать Открой с помощью SQLite Administrator базу base.db Далее через меню Данные -->Экспорт выгрузи таблицу fam из базы base.db в файл. Закрой базу base.db и открой базу newbase.db Далее через меню Данные -->Импорт данных загрузи и данные из файла в базу данных newbase.db Вот и все. Данные из таблицы fam базы данных base.db перенесены в таблицу newfam базы данных newbase.db ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 01:15 |
|
||
|
Копирование таблицы
|
|||
|---|---|---|---|
|
#18+
Спасибо все получилось!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2007, 16:38 |
|
||
|
|

start [/forum/topic.php?fid=56&fpage=14&tid=2015509]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 11ms |
| total: | 167ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...