.sql
데이터베이스로 가져오는 대신 처리하려는 파일 로 내보낸 데이터로 작업하는 경우가 몇 번 있었습니다 .
나는 "데이터 전용" SQL 파일에 대해서만 이야기하고 있습니다. INSERT INTO
진술에 지나지 않는 것들 . (아마도 내가 무시할 수 있는 일부 서문이 상단에 있을 것입니다.)
일반적으로 파일에는 로 시작하고 로 끝나는 여러 줄이 있으며 , INSERT INTO
로 시작하고 끝나는 사이와 로 구분 ;
되는 가변 개수의 "레코드"가 있습니다. 각 "레코드"는 고정된 수의 "필드"로 구성되며 역시 로 구분됩니다.(
)
,
,
필터는 모든 SQL 문, 구분 기호, 종료 기호 등을 제거해야 합니다. 각 "필드"는 쉼표나 탭으로 구분되어 한 줄에 하나의 "레코드"만 출력해야 합니다.
제 생각에는 완전히 사소하고 일반적이어야 하며 여러 번 구현되었을 것입니다. 하지만 기존 도구나 스크립트를 찾을 수 없는 것 같습니다.
),(
나는 보통 Perl에서 이 문제를 레코드 구분 기호로 취급하여 해결하려고 노력 \n
하지만 항상 성가신 세부 사항으로 인해 수렁에 빠지게 됩니다.
누구든지 이 작업을 수행하는 매우 간단한 스크립트를 갖고 있거나 만들 수 있습니까? bash, sed, awk, Perl, Python 등이라면 상관없습니다.
실제 예시 데이터는 다음과 같습니다. 행당 몇 개의 레코드만 포함하도록 변경했습니다. 실제 파일에는 다음 파일에 도달 하고 시작하기 ;
전에 줄/문당 약 백만 개의 문자가 있습니다 .
INSERT INTO `categorylinks` VALUES
(0,'Wikisaurus','RunJobs.php','2008-01-27
03:10:30','','','page'),(8,'Wiktionary','TEXT OF THE GNU FREE
DOCUMENTATION LICENSE','2011-01-26
23:50:34','','uppercase','page'),(12,'Wiktionary','WHAT WIKTIONARY IS
NOT\nWHAT WIKTIONARY IS NOT','2011-04-10 18:22:23','What Wiktionary is
not','uppercase','page'),(12,'Wiktionary:Help','WHAT WIKTIONARY IS
NOT\nWHAT WIKTIONARY IS NOT','2011-04-10 18:22:23','What Wiktionary is
not','uppercase','page'); INSERT INTO `categorylinks` VALUES
(2184,'Swedish_nouns','RELIGION','2011-01-06
00:04:41','','uppercase','page'),(2184,'Translations_to_be_checked_(Albanian)','RELIGION','2007-01-27
08:16:34','','uppercase','page'),(2184,'Translations_to_be_checked_(Bulgarian)','RELIGION','2007-01-27
08:16:34','','uppercase','page');
출력은 다음과 같습니다. 필드가 참조되는지 여부는 중요하지 않습니다. 쉼표나 탭 구분은 중요하지 않습니다. 그러나 쉼표는 올바르게 이스케이프 처리되어야 합니다.
0,'Wikisaurus','RunJobs.php','2008-01-27 03:10:30','','','page'
8,'Wiktionary','TEXT OF THE GNU FREE DOCUMENTATION LICENSE','2011-01-26 23:50:34','','uppercase','page'
12,'Wiktionary','WHAT WIKTIONARY IS NOT\nWHAT WIKTIONARY IS NOT','2011-04-10 18:22:23','What Wiktionary is not','uppercase','page'
12,'Wiktionary:Help','WHAT WIKTIONARY IS NOT\nWHAT WIKTIONARY IS NOT','2011-04-10 18:22:23','What Wiktionary is not','uppercase','page'
2184,'Swedish_nouns','RELIGION','2011-01-06 00:04:41','','uppercase','page'
2184,'Translations_to_be_checked_(Albanian)','RELIGION','2007-01-27 08:16:34','','uppercase','page'
2184,'Translations_to_be_checked_(Bulgarian)','RELIGION','2007-01-27 08:16:34','','uppercase','page'
제가 주로 사용하는 데이터는 위키피디아와 위키낱말사전 덤프의 일부입니다.
답변1
이것은 사소한 일입니다.
1) 수입SQLSQL 데이터베이스에 데이터 저장
2) 기존 SQL 도구를 사용하여 원하는 형식으로 데이터를 출력합니다. 예를 들어 OUTFILE로 선택
이것은 완전히 스크립트 가능합니다. 속도가 문제라면 더 빠른 하드웨어, 특히 드라이브를 구입하세요. 다른 언어로 구문 분석하고 싶다면 모든 따옴표/중괄호/예약어 등을 처리하기 위해 전체 SQL 구문 분석기를 작성해야 할 수도 있습니다. 이것이 확실히 가능하지만, 나는 이것이 사소한 일이라고 생각하지 않습니다.