Необходимо экспортировать поля, содержащие строки, как 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, которые
возможно в других диалектах?
Ответы
Ответ 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 позволяет мне быстро создавать несколько таблиц.