SQL: Вставьте все записи от одной таблицы до другой таблицы без определенного столбцы

Я сначала узнал бы, обеспечивает ли рассматриваемый сайт (сайты) сервер API или Каналы RSS для доступа данные, Вы требуете.

11
задан Kip 12 August 2009 в 17:05
поделиться

3 ответа

Вы никогда не должны этого делать. Select * не следует использовать в качестве основы для вставки, поскольку столбцы могут перемещаться и сломать вашу вставку (или, что еще хуже, не сломать вставку, но испортить ваши данные. Предположим, кто-то добавляет столбец в таблицу в select, но не в другую таблицу, ваш код сломается. Или предположим, что кто-то по причинам, которые выходят за рамки понимания, но часто случаются, решает выполнить отбрасывание и воссоздать в таблице и переместить столбцы в другом порядке. Теперь ваше last_name - это место, где было first_name in первоначально и select * поместит его в неправильный столбец в другой таблице. Чрезвычайно плохая практика не указывать столбцы и конкретное сопоставление одного столбца с нужным столбцом в интересующей вас таблице. ] Прямо сейчас у вас может быть несколько проблем, сначала две структуры не совпадают напрямую, или, во-вторых, таблица, в которую вставляется, имеет столбец идентификатора, и поэтому, даже если вставляемые столбцы являются прямым совпадением, таблица, в которую вставляется, имеет на один столбец больше, чем другой, и без указания базы данных предполагает, что вы попытаетесь вставить в этот столбец. Или у вас может быть такое же количество столбцов, но один является идентификатором и поэтому не может быть вставлен (хотя я думаю, что это будет другое сообщение об ошибке).

17
ответ дан 3 December 2019 в 01:20
поделиться

У вас должно быть как минимум одинаковое количество столбцов, и каждый столбец должен быть определен точно так же, то есть столбец varchar не может быть вставлен в столбец int.

Для массовой передачи проверьте документацию по используемой вами реализации SQL. Часто доступны инструменты для массовой передачи данных из одной таблицы в другую. Для SqlServer 2005, например, вы можете использовать мастер импорта и экспорта SQL Server. Щелкните правой кнопкой мыши базу данных, в которую вы пытаетесь переместить данные, и нажмите «Экспорт», чтобы получить к ней доступ.

2
ответ дан 3 December 2019 в 01:20
поделиться

SQL 2008 позволяет отказаться от указания имен столбцов в вашем SELECT, если вы используете SELECT INTO вместо INSERT INTO / SELECT:

SELECT *
INTO Foo
FROM Bar
WHERE x=y

Предложение INTO действительно существует в SQL Server 2000-2005, но по-прежнему требует указания имен столбцов. Похоже, что в 2008 добавлена ​​возможность использования SELECT *.

Подробнее см. В статьях MSDN по INTO ( SQL2005 ), ( SQL2008 ).

Предложение INTO работает только однако, если целевая таблица еще не существует. Если вы хотите добавить записи в существующую таблицу, это не поможет.

1
ответ дан 3 December 2019 в 01:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: