SQL Server에서 latin1 varchar의 문자를 MariaDButf8에 삽입하려면 어떻게 인코딩해야 합니까?
현재 저는 이전 SQL Server DB에서 SQLCMD로 추출을 수행하고 있습니다. 여기서 varchar 열은latin1
INSERT 문을 파일에 생성하여 MariaDB 데이터베이스에 데이터를 로드합니다.
INSERT INTO maria_table (id, name, description) VALUES
(210,'ALL.M.USDBBL','Refining GOA All Monthly')
,(211,'S.M.USDBBL','RefinGdd 2 BBL'
,(212,'R.M.USDBBL','RefinGdd 2BL')
, etc
SQL Server 명령 및 옵션 사용:
SQLCMD.EXE -i "generate-inserts.sql" -h-1 -S "my-host" -d Tardis -r1 -W -b -f o:65001 > inserts.sql
또한 시도해 보았습니다.-u
기치를 대신하여 운이루다
이것이 SQL입니다.
SELECT CONCAT('INSERT INTO maria_table (id, name, description)',
' VALUES ');
SELECT CONCAT(IIF(row_number() OVER (ORDER BY id ) = 1, ' ', ','),
'(',
id, ',',
'''', dbo.encode4MySql(name), ''',',
'''', dbo.encode4MySql(description), ''')'
)
FROM sql_srv_table WITH (NOLOCK)
ORDER BY id;
SELECT ';';
SELECT 'COMMIT;';
이것이 제가 개발해야 할 기능입니다.
CREATE FUNCTION dbo.encode4MySql(@raw VARCHAR(4000))
RETURNS VARCHAR(4000) AS BEGIN
DECLARE @replaced VARCHAR(4000);
SET @replaced = REPLACE(@raw, '''', '''''');
??? what do I do here to replace those special characters?
RETURN @replaced;
END;
지금까지 제가 교체하는 것은'
.
하지만 마리아에게서 이런 오류가 발생합니다.DB:
ERROR 1366 (22007) at line 384:
Incorrect string value: '\x87ao Su...' for column 'description' at row 1995
저는 여기서 mysql의 파일 로드에 대한 varchar 데이터 덤프에 대해 비슷한 질문을 했지만 mariadb는 아니지만 본질적으로 전체 솔루션을 얻지 못했기 때문에 이번에는 이를 인코딩하는 방법과 호환되지 않는 문자에 대해 더 집중적으로 질문합니다.
이전 질문에 대한 누군가가 "\x87은 라틴어 1에서 잠재적으로 문자 ‡입니다."라고 말했습니다.
또한 덤프 파일에서 특수 문자를 찾을 수 없습니다. \x87ao 또는 ‡ 조합으로 검색할 수 없습니다.
적어도 357개의 utf8개의 문자가 끝납니다.87
. 그 중 몇 가지는 다음과 같습니다.
| Ç | LATIN CAPITAL LETTER C WITH CEDILLA |
| ć | LATIN SMALL LETTER C WITH ACUTE |
| Ň | LATIN CAPITAL LETTER N WITH CARON |
| Ƈ | LATIN CAPITAL LETTER C WITH HOOK |
| LJ | LATIN CAPITAL LETTER LJ |
| ȇ | LATIN SMALL LETTER E WITH INVERTED BREVE |
| ɇ | LATIN SMALL LETTER E WITH STROKE |
| ʇ | LATIN SMALL LETTER TURNED T |
| ˇ | CARON |
| · | GREEK ANO TELEIA |
| χ | GREEK SMALL LETTER CHI |
| Ї | CYRILLIC CAPITAL LETTER YI |
| ч | CYRILLIC SMALL LETTER CHE |
파일을 검색합니다.ao Su
, 아마 찾을 수 있을 겁니다.
cp1252
MariaDB에서 사용할 수 없습니다; 아마도 당신이 사용하고 있었을 것입니다.latin1
, 어떤 것이 '동일한' 것입니까?어떤 버전을 사용하고 계십니까?
언급URL : https://stackoverflow.com/questions/50408010/how-do-i-encode-characters-from-latin1-varchar-in-sql-server-to-insert-into-mari
'programing' 카테고리의 다른 글
정적인 방법으로 캐시나 세션에 접근할 수 있는 방법이 있습니까? (0) | 2023.10.24 |
---|---|
AngularJS 브라우저 언어 탐지를 사용하는 방법? (0) | 2023.10.24 |
Excel에서 OD 데이터 피드의 변경 내용을 게시하는 방법 (0) | 2023.10.24 |
EF + ODP.NET + CLOB = 값은 Null일 수 없습니다 - 매개 변수 이름: byteArray? (0) | 2023.10.24 |
ANTLR을 사용하여 구축된 AST를 출력하는 방법은? (0) | 2023.10.19 |