Экспорт данных в Excel не работает в SQL Server
Я использую приведенный ниже код для экспорта данных из SQL Server в Excel:
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 показывает, сколько строк затронуто, но когда я открываю файл, он полностью пуст.
1 ответ
Только службы интеграции SQL Server (SSIS) поддерживают экспорт в книгу Microsoft Excel.
Пользователи Microsoft Excel могут открыть
CSV
файл так же, как собственный файл Excel.
Так что экспорт вCSV
Файлы подходят для большинства случаев, и вы можете использовать простые утилиты командной строки вместо служб интеграции SQL Server (SSIS).
Недостатком экспорта в книгу Excel или файл CSV является то, что пользователь каждый раз получает новый файл и теряет свои изменения.
Обратите внимание на следующие советы:
- Поля даты и времени должны соответствовать форматам, указанным выше, чтобы их нельзя было понять 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
в конце текста команды.