SQLLite Копировать содержимое таблицы с идентичной схемой - PullRequest
0 голосов
/ 14 марта 2020

У меня есть две SQL Lite таблицы с идентичной схемой / структурой.

Только строки отличаются.

Я хочу скопировать все строки из srcTable, которые еще не находятся в destTable. Индекс может быть другим! Но это не имеет значения для операции копирования.

Мне нужен быстрый и простой способ, так как в таблице действительно много столбцов.

У моего srctable есть немного странное имя, это said:

importing_nowtelco_08989.csv

Проблема в том, что имя содержит a.?

Программа, которую я использую для выполнения SQL, называется DB Browser for SQLite

Я использовал многочисленные операции и даже сложные, такие как

INSERT INTO destTable
SELECT A,B,C,D,E
FROM srcTable
WHERE NOT EXISTS(SELECT * FROM destTable 
WHERE (
                       srcTable.A=destTable.A and
                       srcTable.B=destTable.B and
                       srcTable.C=destTable.C and
                       srcTable.D=destTable.D and
                       srcTable.E=destTable.E 
                       ))

и

SELECT * INTO destTable FROM srcTable

SELECT A,B,C,D,E INTO destTable FROM srcTable

, но ничего не получалось

1 Ответ

0 голосов
/ 14 марта 2020

Ваш код потерпит неудачу, если столбцы A, B, C, D and E могут содержать null s, потому что любое сравнение с null с оператором = возвращает null. Я бы предложил:

INSERT INTO destTable(A, B, C, D, E)
SELECT A, B, C, D, E FROM srcTable
EXCEPT
SELECT A, B, C, D, E FROM destTable

Рекомендуется включать столбцы destTable в оператор INSERT. Также заключите importing_nowtelco_08989.csv в кавычки или квадратные скобки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...