Заменить столбцы одного файла БД столбцами из другого - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть файл базы данных, который содержит данные таблицы:

CREATE TABLE songs (
id integer primary key not null,
title text not null, --title of song
composer text, --composer(s) of song
bookcode text, --book song is from
page integer, --page in book song appears on
length integer --length of song in pages
);

Однако все значения composer и length являются нулевыми, и я хочу, чтобы они были заменены значениями composer и length из моего другого файла БД, в котором хранятся данные, например:

  CREATE TABLE songs(
  title text NOT NULL, --title of the song
  composer text NOT NUll, --composer or composers of the song
  bookcode text NOT NULL,  --book code for the book the song is from
  page int, --page number in book where song appears
  length int, --number of pages the song occupies in the book
  studentnum text NOT NULL,  --student number of who contributed the data
  primary key (title,bookcode,page,studentnum)
  );

Я пытаюсь выяснить, как получить доступ к обоим одновременно в mySQL, но sqlite3 открывается только для одной базы данных одновременно.

1 Ответ

0 голосов
/ 07 ноября 2018

Вы можете ATTACH базы данных (до 10 по умолчанию, SQLITE) к другой (основной / основной), а затем получить доступ к обоим / всем, используя схему main для исходная / основная / основная база данных и именованная схема (согласно ключевому слову AS) для других подключенных баз данных.

например. : -

DETACH test002;
ATTACH 'D:\Databases\SQLite\Navicat Databases\test002.db' AS test002;
SELECT * FROM main.sqlite_master;
SELECT * FROM test002.sqlite_master;
PRAGMA database_list; -- List the attached databases

Результаты вышеизложенного (просто чтобы показать подтверждение концепции): -

enter image description here

enter image description here

enter image description here

Комментарий

Терминал сообщает, что команда ATTACH не найдена

Редко пользователь командной строки, но ниже показано, ATTACH используется через командную строку: -

C:\Users\Mike>sqlite3
SQLite version 3.22.0 2018-01-22 18:45:57
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> ATTACH 'D:\Databases\SQLite\Navicat Databases\test002.db' AS test002;
sqlite> ATTACH 'D:\Databases\SQLite\Navicat Databases\gransha.db' AS test001;
sqlite> SELECT * FROM test002.sqlite_master;
table|phonebook|phonebook|2|CREATE TABLE phonebook(name TEXT PRIMARY KEY, phonenumber TEXT)
index|sqlite_autoindex_phonebook_1|phonebook|3|
sqlite> SELECT * FROM test001.sqlite_master;
table|_Questions_old_20180428|_Questions_old_20180428|2|CREATE TABLE "_Questions_old_20180428" (
  "_QuestionID" INTEGER NOT NULL,
  "QuestionResult" integer,
  "QuestionTypeID" INTEGER,
  "QuestionTopicID" INTEGER,
  "LogUserID" INTEGER,
  PRIMARY KEY ("_QuestionID")
) ............
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...