2015-03-18 5 views
0

Я использую ниже код для экспорта данных из SQL Server в Excel:Экспорт данных в Excel не работает в SQL Server

update openrowset('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=E:\..\.xlsx;', 
    'select Column1,Column2,Column3 FROM [Sheet1$]') 
set Column1=null,Column2=null,Column3=null 

insert into OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=E:\..\.xlsx;', 'SELECT * FROM [Sheet1$]') 
    select Column1,Column2,Column3 from table_Name 

Я использую 64-разрядной ОС с 64-разрядные Excel 2010.

Этот код отлично работает в 32-разрядной системе с 32-разрядной версией Excel, но в 64-разрядной системе он работает нормально, как и ожидалось, но в следующий раз я хочу установить пустую всю запись и вставить новые записи, а обновление работает но после обновления, когда я выполняю команду вставки, SQL Server показывает, сколько строк затронуто, но когда я открываю файл, он полностью пуст.

ответ

0

Только SQL Server Integration Services (SSIS) поддерживает экспорт в книгу Microsoft Excel.

Пользователи Microsoft Excel могут открывать файл CSV так же, как собственный файл Excel.
Таким образом, экспорт в файлы подходит для большинства случаев, и вы можете использовать простые утилиты командной строки вместо служб интеграции SQL Server (SSIS).

Недостаток экспорта в книгу Excel или CSV-файл заключается в том, что пользователь каждый раз получает новый файл и утрачивает свои изменения.


Обратите внимание на следующие советы:

  • В DateTime поля должны следовать форматам, показанным выше, для того, чтобы не поддаваться проверке с помощью Microsoft Excel.
  • Текстовые поля следует указывать иначе иначе данные столбцов данных разделяются полями.
  • Первые два символа CSV-файла не должны содержать капитала «L» или «D», иначе Microsoft Excel отображает сообщение об ошибке «SYLK: Файл недействительно», когда пользователи открывают файл.

окончательная команда:

'-S . => Defines the localhost server 
'-d AzureDemo => Defines the database (ex. AzureDemo) 
'-E => Defines the trusted connection. Instead you can use user credentials: -U Username -P Password 
'-s, => Defines the comma as a column separator. Use -s; for semicolon. 
'-W => Removes trailing spaces. 
'-Q "SELECT * FROM ..." => Defines a command line query and exit 
'ExcelTest.csv => Outputs the result to file ExcelTest.csv 
'findstr /V /C:"-" /B => removes strings like "--,-----,--------,--------". 
' 
sqlcmd -S . -d AzureDemo -E -s, -W -i ExcelTest.sql | findstr /V /C:"-" /B > ExcelTest.csv 

Примечание:
sqlcmd утилита не имеет переключатель для изменения NULL в empty значение!
Используйте функцию ISNULL в запросе SQL, чтобы изменить NULL на ''.
Или добавьте | replace-null.exe > ExcelTest.csv в конце текста команды.

Смежные вопросы