MySQL을 사용하여 쿼리를 실행할 수 있습니다.
SHOW CREATE TABLE MyTable;
그리고 특정 테이블에 대한 테이블 작성 명령문을 리턴합니다. 테이블이 이미 작성되어 있고 다른 데이터베이스에서 동일한 테이블을 작성하려는 경우 유용합니다.
이미 존재하는 행 또는 행 집합에 대해 insert 문을 가져올 수 있습니까? 일부 테이블에는 많은 열이 있으므로 insert 문을 쓰거나 데이터를 CSV로 내 보낸 다음 동일한 데이터를 가져 오지 않고 다른 데이터베이스로 행을 전송하기 위해 insert 문을 가져올 수 있으면 좋을 것입니다. 다른 데이터베이스로.
명확히하기 위해, 내가 원하는 것은 다음과 같이 작동하는 것입니다.
SHOW INSERT Select * FROM MyTable WHERE ID = 10;
그리고 나를 위해 다음을 반환하십시오.
INSERT INTO MyTable(ID,Col1,Col2,Col3) VALUES (10,'hello world','some value','2010-10-20');
답변
INSERT
MySQL 콘솔에서 문장 을 얻는 방법은 없지만 Rob이 제안한 것처럼 mysqldump를 사용하여 문장 을 얻을 수 있습니다 . -t
테이블 작성을 생략하도록 지정 하십시오.
mysqldump -t -u MyUserName -pMyPassword MyDatabase MyTable --where="ID = 10"
답변
MySQL Workbench에서는 단일 테이블 쿼리의 결과를 INSERT
명령문 목록으로 내보낼 수 있습니다 . 쿼리를 실행 한 후 다음을 수행하십시오.
Export/Import
결과 위 의 플로피 디스크를 클릭하십시오- 대상 파일에 이름을 지정하십시오
- 창 하단에서
Format
선택SQL INSERT statements
- 딸깍 하는 소리
Save
- 딸깍 하는 소리
Export
답변
SHOW CREATE TABLE MyTable 에서 생성 한 SQL로 테이블을 복사 했으므로 다음을 수행하여 데이터를 새 테이블에로드 할 수 있습니다.
INSERT INTO dest_db.dest_table SELECT * FROM source_db.source_table;
INSERT 문을 정말로 원한다면 내가 아는 유일한 방법은 mysqldump http://dev.mysql.com/doc/refman/5.1/en/mysqldump.htm 을 사용하는 것 입니다. 특정 테이블의 데이터를 덤프하고 행을 제한하는 옵션을 제공 할 수 있습니다.
답변
나는 이것을 할 PHP 함수를 작성했다. 히스토리 테이블을 삭제 한 후 레코드를 교체해야 할 경우를 대비하여 insert 문을 작성해야했습니다.
function makeRecoverySQL($table, $id)
{
// get the record
$selectSQL = "SELECT * FROM `" . $table . "` WHERE `id` = " . $id . ';';
$result = mysql_query($selectSQL, $YourDbHandle);
$row = mysql_fetch_assoc($result);
$insertSQL = "INSERT INTO `" . $table . "` SET ";
foreach ($row as $field => $value) {
$insertSQL .= " `" . $field . "` = '" . $value . "', ";
}
$insertSQL = trim($insertSQL, ", ");
return $insertSQL;
}
답변
Laptop Lift의 코드는 정상적으로 작동하지만 사람들이 좋아할만한 몇 가지 사항이 있습니다.
데이터베이스 핸들러는 하드 코딩되지 않은 인수입니다. 새로운 mysql API를 사용했습니다. 유연성을 위해 $ id를 선택적 $ where 인수로 대체했습니다. 누군가가 SQL 주입을 시도하고 따옴표와 관련된 간단한 파손을 피하려고 시도한 경우 real_escape_string을 사용했습니다. INSERT table (field...) VALUES (value...)...
필드를 한 번만 정의한 다음 각 행의 값을 나열하기 위해 구문을 사용했습니다 (임플란트는 훌륭합니다). Nigel Johnson이 지적 했으므로 NULL
처리를 추가했습니다 .
나는 $array[$key]
그것이 어떻게 든 변할 까봐 걱정했기 때문에 사용 했지만, 뭔가 잘못되지 않으면 어쨌든 안됩니다.
<?php
function show_inserts($mysqli,$table, $where=null) {
$sql="SELECT * FROM `{$table}`".(is_null($where) ? "" : " WHERE ".$where).";";
$result=$mysqli->query($sql);
$fields=array();
foreach ($result->fetch_fields() as $key=>$value) {
$fields[$key]="`{$value->name}`";
}
$values=array();
while ($row=$result->fetch_row()) {
$temp=array();
foreach ($row as $key=>$value) {
$temp[$key]=($value===null ? 'NULL' : "'".$mysqli->real_escape_string($value)."'");
}
$values[]="(".implode(",",$temp).")";
}
$num=$result->num_rows;
return "INSERT `{$table}` (".implode(",",$fields).") VALUES \n".implode(",\n",$values).";";
}
?>
답변
선택 쿼리를 만들고 결과를 가리키고 sql로 내보내기를 선택할 수있는 SQLYOG 프로그램을 사용합니다 . 이것은 삽입 문을 제공합니다.
답변
MySQL 작업대 내에서 다음을 수행하십시오.
-
서버> 데이터 내보내기를 클릭하십시오.
-
오브젝트 선택 탭에서 원하는 스키마를 선택하십시오.
-
그런 다음 스키마 오른쪽의 목록 상자를 사용하여 원하는 테이블을 선택하십시오.
-
스크립트를 내보낼 파일 위치를 선택하십시오.
-
Finish를 클릭하십시오.
-
새로 작성된 파일로 이동하여 삽입 문을 복사하십시오.
