Я не уверен, что мои навыки работы с Google подводят меня, но какое-то время это меня беспокоило.
Я получил различные результаты, которые все должны быть помещены в одну предопределенную таблицу, но имена столбцов разные в каждом плоском файле (текст с разделителями табуляции), но в конечном итоге необходимо преобразовать в столбец, уже находящийся в таблице.
Я хочу импортировать file.txt в dbo.supplier следующим образом:
Адрес1> улица
Имя поставщика> name1
и так далее, но это также должен быть ночной автоматизированный сценарий.
Приносим извинения, если об этом уже спрашивали, похоже, я не могу найти кого-нибудь, кто задает тот же вопрос.
Какая редакция SQL Server? Если у вас есть что-то, кроме LocalDB или SQL Express, вы можете использовать службы интеграции SQL Server, чтобы создать для этого пакет, а затем запланировать его на ночь с помощью задания агента SQL. В SSIS есть механизмы, позволяющие создавать сопоставления столбцов во время импорта.
Изменяются ли имена этих столбцов без предупреждения, или вы знаете, какие имена они будут иметь в каждом файле?
Если у вас есть предопределенный список возможных имен столбцов в плоских файлах, вы можете запустить какой-нибудь сценарий, чтобы переименовать их перед импортом SQL. Просто просмотрите все возможные имена и замените их фактическими именами столбцов таблицы.
Вы также можете создать пакет SSIS с помощью мастера импорта и экспорта SQL Server, а затем настроить Powershell или пакетный файл для вызова DTExec, если агент SQL недоступен (SQL Express). Просто посмотрите права доступа к учетной записи, на которой запущен пакетный / PS-скрипт.
SSIS может предоставить вам эту функцию, это также даст вам возможность на лету давать имена столбцам. Просто воссоздайте свою таблицу каждый раз, когда она запускается, используя задачу выполнения TSQL.
Я слышу сверчков, лол ...
Альтернатива SSIS: используйте встроенную команду массового копирования SQL Server, чтобы импортировать файл как есть в создаваемую вами промежуточную таблицу. Затем используйте стандартный SQL INSERT со списком столбцов, чтобы повторно сопоставить столбцы. Вот две ссылки на простые руководства, которые помогут вам начать работу. Вы можете найти в Google дополнительные сайты: lifewire.com/importing-and-exporting-sql-server-data-1019806 и techrepublic.com/blog/the-enterprise-cloud/…
@TabAlleman - нет, столбцы статичны, но однажды мне нужно импортировать X-файл с X-столбцами, а на следующий день мне нужно импортировать Y-файл с Y-столбцами, оба в одну таблицу.
@VictorDiLeo - спасибо за это, я думаю, это может быть способ сделать это! Не имея реального опыта работы с SQL, я пытаюсь понять, как его обойти, и это очень помогает, и я расскажу, как я справляюсь.
@DavidP - Я рад, что у меня есть сценарий X для файла X, сценарий Y для файла Y и так далее, я не ожидал, что 1 сценарий будет импортировать все сценарии, плюс я думаю, что это было бы слишком сложным решением для меня: - )
@ jimmy8ball - Мне нужно обновить таблицу новой информацией на основе файла X с X столбцами и файла Y с Y столбцами, удаление и воссоздание таблицы при каждом импорте не вариант!
@daiv_ воссоздание вашей основной таблицы при каждом импорте может не быть вариантом, но, возможно, стоит рассмотреть возможность использования отдельной промежуточной таблицы для импорта и объединения данных в вашу основную таблицу. Промежуточную таблицу можно каждый раз удалять и воссоздавать, не затрагивая основную таблицу.
ЕСЛИ имена столбцов в каждом файле разные, как вы сопоставите их с правильными столбцами базы данных?