SQL Server 2012에서 Excel로 데이터를 복사할 때 새로운 라인 문제가 발생합니다.
Management Studio를 사용합니다.데이터베이스의 내 열 중 하나에 다음이 있습니다.CHAR(13) + CHAR(10)저저
SQL Server 2008을 사용할 때는 Excel에 복사하여 붙여넣습니다.그러나 이제 동일한 데이터를 복사하여 붙여넣으면 Excel에 있는 데이터에 새로운 라인/캐리지 리턴이 생성됩니다.
SQL2012에서 이 문제를 해결할 수 있는 설정이 누락되었습니까?저는 단순하게는 싶지 않습니다.REPLACE(CHAR(13) + CHAR(10)) 데이터베이스를 선택할 때마다 사용할 수 있습니다.SELECT *이겁니다.
이것은 버그가 아니라 SQL 2012의 기능일 것입니다. ;-) 다른 컨텍스트에서는 큰 텍스트 덩어리를 복사할 때처럼 cr-lf를 유지해도 좋습니다.단지 당신의 상황에서는 잘 되지 않을 뿐입니다.
언제든지 선택에서 제거할 수 있습니다.그러면 두 버전 모두에서 원하는 대로 에 대한 쿼리가 생성됩니다.
select REPLACE(col, CHAR(13) + CHAR(10), ', ') from table
이 문제는 새 옵션 Retain CR\를 추가하여 해결됩니다.LF를 복사하거나 저장할 때 도구 -> 옵션에서 선택합니다.메뉴에서 Query Results -> SQL Server -> Results to Grid를 선택합니다.
변경 내용을 적용하려면 새 세션(창)을 열어야 합니다.
기본값은 선택 해제(false)입니다. 즉, 그리드에서 복사/저장하면 표시된 대로 텍스트가 복사됩니다(CR\).LF가 공백으로 대체되었습니다.)true로 설정하면 문자 교체 없이 실제로 저장된 대로 그리드에서 텍스트가 복사/저장됩니다.
사람들이 연결 항목 체인을 따라가지 못한 경우(https://connect.microsoft.com/SQLServer/feedback/details/735714),로 이어짐) 이 문제는 SSMS 미리 보기 버전에서 해결되었습니다.
https://msdn.microsoft.com/library/mt238290.aspx,에서 무료로 다운로드할 수 있으며 독립 실행형 다운로드이므로 더 이상 전체 SQL 미디어가 필요하지 않습니다.
(참고 - https://msdn.microsoft.com/library/ms190078.aspx의 페이지는 현재 이 정보로 업데이트되지 않았습니다.후속 조치 중이므로 곧 새로운 옵션이 반영될 것입니다.)
이 문제에 대한 해결 방법을 찾았습니다. 손으로 복사 붙여넣기 대신 Excel을 사용하여 데이터베이스에 연결하고 전체 테이블을 가져오십시오.그런 다음 관심 없는 데이터를 제거합니다.
다음은 Excel 2010의 단계입니다.
- 메뉴로 이동합니다.
Data > Get external data: From other sources > From SQL Server - SQL 서버 이름(및 서버에 윈도우즈 인증이 없는 경우 자격 증명)을 입력하고 연결합니다.
- 줄 바꿈이 있는 데이터가 들어 있는 데이터베이스와 테이블을 선택하고 '마침'을 클릭합니다.
- 대상 워크시트를 선택하고 '확인'을 클릭합니다.
이제 Excel이 새 줄이 그대로 있는 전체 테이블을 가져옵니다.
Excel에 복사하기 위해 캐리지 리턴/줄 바꿈(Copy/Copy with Headers/Save Results As)을 결과에 좋은 방법은 Excel에 큰따옴표를 추가하는 것입니다.SELECT예를 들어:아니다
SELECT '"' + ColumnName + '"' AS ColumnName FROM TableName;
열 데이터 자체에 큰 따옴표가 포함될 수 있는 경우 '이중 따옴표'를 사용하여 이를 이스케이프할 수 있습니다.
SELECT '"' + REPLACE(ColumnName, '"', '""') + '"' AS ColumnName FROM TableName;
SQL Management Studio입니다. NULL값은 유지되지만 이 값은 를 사용하여 변경할 수 있습니다.CONCAT('"', ColumnName, '"')아니면요?COALESCE(ColumnName, '')요.
@JohnLBevan의 설명에 따라 컬럼 데이터 이스케이프는 기본 제공 함수를 사용하여 수행할 수도 있습니다.
SELECT QUOTENAME(ColumnName, '"') AS ColumnName FROM TableName;
@AHiggins의 제안은 제게 잘 먹혔습니다.
REPLACE(REPLACE(REPLACE(B.Address, CHAR(10), ' '), CHAR(13), ' '), CHAR(9), ' ')
SQL Server에서 Excel로 데이터를 복사할 때 라인 분할 문제가 발생합니다.아래 예를 참조하고 일부 문자 바꾸기 기능을 사용해 보십시오.
SELECT replace(replace(CountyCode, char(10), ''), char(13), '')
FROM [MSSQLTipsDemo].[dbo].[CountryInfo]
최근에 "텍스트에서 열로"를 사용할 때 Excel에서 이 문제가 발생할 수 있습니다.
Excel을 종료하고 다시 열고 붙여넣기를 다시 시도하십시오.저는 보통 그렇게 하는데, 가끔 컴퓨터를 완전히 다시 시작해야 한다고 들었어요.
여기엔 아직 언급이 안 되어 있고, 제가 이 문제를 해결한 방법이 있습니다.
대상 데이터베이스를 마우스 오른쪽 버튼으로 클릭하고 을 선택합니다.Tasks > Export data'목적지 선택 화면의 중 하나가 Microsoft Excel이며, 쿼리를 수락하는 단계가 있습니다.목적지 선택' 화면의 대상 중 하나는 Microsoft Excel이며, 쿼리를 수락하는 단계가 있습니다.
SQL Server 가져오기 및 내보내기 마법사입니다.이 옵션은 일반적으로 사용하는 간단한 머리글 복사 옵션보다 훨씬 장황하지만, 훨씬 더 많은 후프를 거치지 않고 Excel을 사용할 수 있는 데이터가 많을 때는 유용한 옵션입니다.
다음 "회피책"은 CRLF를 유지하고 열 데이터를 여러 줄로 구분하지 않고 CRLF 문자를 사용하여 Excel에 데이터를 붙여넣을 수 있습니다.이 경우 "select *"를 명명된 열로 대체해야 하며 데이터의 모든 큰 따옴표는 구분 기호 값으로 대체됩니다.
declare @delimiter char(1)
set @delimiter = '|'
declare @double_quote char(1)
set @double_quote = '"'
declare @text varchar(255)
set @text = 'This
"is"
a
test'
-- This query demonstrates the problem. Execute the query and then copy/paste into Excel.
SELECT @text
-- This query demonstrates the solution.
SELECT @double_quote + REPLACE(@text, @double_quote, @delimiter) + @double_quote
SQL Server Management Studio 2012의 결과를 복사하여 Excel로 붙여넣거나 목록 구분 기호를 사용하여 Csv로 내보내려면 먼저 쿼리 옵션을 변경해야 합니다.
쿼리를 클릭한 다음 옵션을 클릭합니다.
Results(결과)에서 그리드를 클릭합니다.
다음 옆의 상자를 선택합니다.
.csv 결과를 저장할 때 목록 구분 기호를 포함하는 문자열을 따옴표로 묶습니다.
이것으로 문제가 해결될 겁니다.
이상적인 해결 방법 중 하나는 쿼리 결과를 복사하기 위해 2012년 데이터베이스에 대해 2008 GUI를 사용하는 것입니다."스크립트 테이블을 CREATE로"와 같은 일부 기능은 작동하지 않지만, 쿼리를 실행하고 2012년 데이터베이스에서 Excel 등에 결과를 복사 붙여넣을 수 있습니다.
Microsoft는 이 문제를 해결해야 합니다!
복사하여 엑셀에 붙여넣는 대신 엑셀로 내보낼 수 있습니다.데이터베이스 -> 작업 -> 데이터 내보내기...를 마우스 오른쪽 버튼으로 클릭합니다.
- 원본: SQL Server 네이티브 클라이언트입니다.
- 목적지는 다음과 같습니다.엑셀입니다
- 테이블 복사 또는 쿼리를 지정하십시오. 쿼리를 선택하고 쿼리를 입력합니다.
CR/LF가 데이터에 유지됩니다.
보너스(NULL은 'NULL'로 복사되지 않음)입니다.
SQL에서 데이터를 복사해야 하는 경우가 많으므로 새 줄을 처리하는 기능과 탭 문자(Excel에 붙여넣은 후 열 이동을 하는 문자)를 만들었습니다.
CREATE FUNCTION XLS(@String NVARCHAR(MAX) )
RETURNS NVARCHAR(MAX)
AS
BEGIN
SET @String = REPLACE (@String, CHAR(9), ' ')
SET @String = REPLACE (@String, CHAR(10), ' ')
SET @String = REPLACE (@String, CHAR(13), ' ')
RETURN @String
END
CREATE FUNCTION XLS(@String NVARCHAR(MAX) )
RETURNS NVARCHAR(MAX)
AS
BEGIN
SET @String = REPLACE (@String, CHAR(9), ' ')
SET @String = REPLACE (@String, CHAR(10), ' ')
SET @String = REPLACE (@String, CHAR(13), ' ')
RETURN @String
END
사용 예:
SELECT dbo.XLS(Description) FROM Server_Inventory
쿼리 결과를 Excel로 저장하고 파일 확장자를 .txt로 변경할 수 있습니다.Excel을 사용하여 연 다음(...로 연 후) 텍스트에서 열로(텍스트로 형식 지정)를 사용합니다.이 경우 이 방법이 효과가 있을지는 모르겠지만, 자동 스트라이프 해제를 능가하는 다른 포맷 문제에는 잘 작동합니다.
캐리지 리턴이 있는 행/데이터를 찾아 소스 데이터를 수정할 수 있습니다.그냥 반창고만 붙이는 게 아니라요
UPDATE 테이블 세트 필드 = 바꾸기(필드, CHAR(10), '', CHAR(13), '') WHERE 필드(%' + CHAR(10) + '%' 또는 필드(%' + CHAR(13) + '%')와 같은 필드를 바꿉니다.
- 테이블이 다음을 포함합니다.
nvarchar(max)필드를 테이블 맨 아래로 이동합니다. - 필드 유형이 nvarchar(max)와 다른 경우 문제 필드를 식별하고 동일한 기술을 사용합니다.
- 구하라.
- SQL에서 테이블을 다시 선택합니다.
- 변경 없이 저장할 수 없는 경우 TOULS | OPTIONS에서 관련 경고를 일시적으로 해제할 수 있습니다.이 방법에는 위험이 없습니다.
- SQL GRID 디스플레이를 머리글과 함께 Excel에 복사하여 붙여넣습니다.
- 데이터는 캐리지 리턴을 나타낼 수 있지만 적어도 데이터는 모두 동일한 행에 있습니다.
- 그런 다음 모든 행 레코드를 선택하고 ID 열에서 사용자 정의 정렬을 수행합니다.
- 이제 모든 기록이 손상되지 않고 연속됩니다.
저도 같은 문제에 부딪혔어요.다음 솔루션을 사용하여 결과를 CSV로 가져올 수 있었습니다.
- 쿼리를 실행합니다.
- 결과 그리드의 왼쪽 상단 모서리를 마우스 오른쪽 버튼으로 클릭합니다.
- "Save Results as..."를 선택합니다."
- csv와 viola를 선택하세요!
Studio에서 변경된 버전을 사용할 수 없으므로 모든 쿼리를 변경할 수 없습니다.위에 언급된 기본 설정을 시도했지만 효과가 없었습니다.CR-LF가 있을 때는 견적을 넣지 않았습니다.쉼표가 발생할 때만 트리거될 수 있습니다.
Excel에 복사 붙여넣기는 SQL Server의 주요 기능입니다.Mircosoft에서 2008년 동작으로 되돌리려면 확인란이 필요하거나 한 행이 한 행과 같도록 Excel로 클립보드 전송을 강화해야 합니다.
데이터를 Excel로 내보내면 필요에 맞게 날짜 열과 형식을 강조 표시하거나 사용자 정의 필드를 사용합니다.마법처럼 효과가 있었어요!
언급URL : https://stackoverflow.com/questions/13380779/new-line-issue-when-copying-data-from-sql-server-2012-to-excel 입니다.
'programing' 카테고리의 다른 글
| 에서 사용한 후 개체를 Null/Nothing으로 설정합니다.그물 (0) | 2023.04.25 |
|---|---|
| WPF의 폭과 실제 폭의 차이점은 무엇입니까? (0) | 2023.04.25 |
| Visual Studio에서 "패키지에서 도구 상자 컨텐츠 로드"를 지속적으로 가져오면 IT는 영원히 걸립니다! (0) | 2023.04.25 |
| ASP를 표시합니다.Azure 웹 앱의 NET 5 오류 페이지입니다. (0) | 2023.04.25 |
| pg_dump에 암호를 어떻게 전달합니까? (0) | 2023.04.25 |