Подтвердить что ты не робот

Необходимо экспортировать поля, содержащие строки, как CSV из SQL Server

Я запускаю запрос из SQL Server Management Studio 2005 с файлом HTML, хранящимся в виде строки, например:

SELECT html 
FROM table 

Этот запрос отображается в окне "Результаты" красиво, т.е. каждая строка содержит строку всего HTML файла с одной записью в строке.

Тем не менее,, когда я использую параметр "Результаты для файла", он экспортирует его как непригодный CSV с разрывами строк в CSV, происходящем везде, где произошли разрывы строк в поле (т.е. в HTML), а не по одному для каждой строки. Я попытался экспериментировать с Query > Query Options для результатов "Grid" и "Text", но безрезультатно. Поля, экспортированные в CSV , не, как представляется, заключены в кавычки.

Некоторые идеи:

  • Можно ли добавить кавычки с SQL?

  • Существует ли какой-либо эквивалент T-SQL для С командами CSV HEADER, которые возможно в других диалектах?

4b9b3361

Ответ 1

Я не вижу, где у вас будет много успеха, экспортируя html в csv - это действительно не то, что означает csv. Вам будет лучше использовать xml-формат, где html-код может быть заключен в элемент cdata.

Тем не менее, вы можете попробовать использовать функцию "Заменить", чтобы удалить разрывы строк, и вы можете вручную добавить кавычки - что-то вроде этого:

select '"' + replace (replace (html, char(10), ''), char(13), '') + '"'

Если ваше значение html может содержать двойные кавычки, вам нужно будет избежать этих.

Ответ 2

Если вы используете Visual Studio, Server Explorer является альтернативным решением. Вы можете правильно скопировать и вставить результаты из своей сетки.

Ответ 3

В соответствии с ближайшая вещь к стандарту, который у нас есть, правильно отформатированный CSV файл должен содержать поля, содержащие либо разделитель (чаще всего ; или ,) или строки.

SQL Server Management Studio может это сделать, но удивительно, что эта опция не включена по умолчанию. Чтобы включить, перейдите в "Инструменты" → "Параметры" → "Результаты запроса" → "Результаты в сетку" и отметьте "Строки счисления, содержащие разделители списков при сохранении результатов .csv"

Ответ 4

Я знаю, что это очень старый вопрос, на который теперь ответили, но это также должно помочь:

 SELECT html
 From table
 For Xml Auto, Elements, Root('doc') 

он должен выплевывать xml, а затем вы можете импортировать этот xml в excel

Ответ 5

Я знаю, сколько лет это, но я нашел это, и другие могли бы, также. Вы можете захотеть взять Martijn van Hoof на один шаг дальше и удалить возможные вкладки (char (9)) в дополнение к возврату каретки (13) и строке (10).

SELECT REPLACE(REPLACE(REPLACE(mycolumn, CHAR(9), ''), CHAR(10), ''), CHAR(13), '') as 'mycolumn' FROM mytable

Ответ 6

столбец с разрывами строк: "mycolumn"

SELECT REPLACE(REPLACE(mycolumn, CHAR(13), ''), CHAR(10), '') as `mycolumn` FROM mytable

Это заменяет строки.

Ответ 7

нашел это полезным, но я все еще сталкивался с проблемами, так как мое поле было типом текста, поэтому я отбрасывал текст как varchar(8000) и выше, вместо того, чтобы работать как шарм

REPLACE(REPLACE(CAST([TEXT FIELD] AS VARCHAR(8000)), CHAR(10), ' '), CHAR(13), ' ') AS 'Field Name',

Ответ 8

Инструмент импорта и экспорта данных SQL Server, FTW!

Пуск → Программы → Microsoft SQL Server → Импорт и экспорт данных

Пример запроса:

select *
from (
select 'Row 1' as [row], 'Commas, commas everywhere,' as [commas], 'line 1
line 2
line 3' as [linebreaks]

union all 

select 'Row 2' as [row], 'Nor any drop to drink,' as [commas], 'line 4
line 5
line 6' as [data]
) a

вывод CSV:

"row","commas","linebreaks"
"Row 1","Commas, commas everywhere,","line 1
line 2
line 3"
"Row 2","Nor any drop to drink,","line 4
line 5
line 6"

Отказ от ответственности: Возможно, вам придется создавать объявления с двойными кавычками в данных. Удачи!

Ответ 9

Я воспользовался этим ограничением, создав базу данных Access, используя функцию "Ссылка на источник данных, создав связанную таблицу", открыв "связанную" таблицу, а затем скопируйте/вставьте в Excel. Excel может сохранять CSV-данные по мере необходимости. Вы также должны иметь возможность напрямую подключаться непосредственно к Excel, но функция "связанная таблица" в Access позволяет мне быстро создавать несколько таблиц.