@@ -84,14 +84,33 @@ async function clear(type?: 'delete_old' | 'delete_new'): Promise<void> {
8484 * @returns 执行结果
8585 */
8686async function executeSqlInOldH2 ( sql : string ) : Promise < string > {
87- const { stdout, stderr } = ( await execAsync (
88- `"${ JAVA_PATH } " -cp "${ OLD_H2_JAR_PATH } " org.h2.tools.Shell -url "${ OLD_H2_URL } " -user "${ DB_USERNAME } " -password "${ DB_PASSWORD } " -sql "${ sql } "` ,
89- ) ) as ExecResult ;
90- if ( stderr ) {
91- log . error ( '[old]execute sql error: ' , stderr ) ;
92- return null ;
87+ const tempSqlFile = path . join ( TMP_EXPORT_SQL_DIR , `temp_${ Date . now ( ) } .sql` ) ;
88+
89+ try {
90+ // 确保临时目录存在
91+ if ( ! fs . existsSync ( TMP_EXPORT_SQL_DIR ) ) {
92+ await fsPromises . mkdir ( TMP_EXPORT_SQL_DIR , { recursive : true } ) ;
93+ }
94+
95+ // 将SQL写入临时文件
96+ await fsPromises . writeFile ( tempSqlFile , sql , 'utf8' ) ;
97+
98+ // 执行SQL文件
99+ const { stdout, stderr } = ( await execAsync (
100+ `"${ JAVA_PATH } " -cp "${ OLD_H2_JAR_PATH } " org.h2.tools.RunScript -url "${ OLD_H2_URL } " -user "${ DB_USERNAME } " -password "${ DB_PASSWORD } " -script "${ tempSqlFile } "` ,
101+ ) ) as ExecResult ;
102+
103+ if ( stderr ) {
104+ log . error ( '[old]execute sql error: ' , stderr ) ;
105+ return null ;
106+ }
107+ return stdout ;
108+ } finally {
109+ // 删除临时文件
110+ if ( fs . existsSync ( tempSqlFile ) ) {
111+ await fsPromises . rm ( tempSqlFile , { force : true } ) ;
112+ }
93113 }
94- return stdout ;
95114}
96115
97116/**
@@ -100,14 +119,33 @@ async function executeSqlInOldH2(sql: string): Promise<string> {
100119 * @returns 执行结果
101120 */
102121async function executeSqlInNewH2 ( sql : string ) : Promise < string > {
103- const { stdout, stderr } = ( await execAsync (
104- `"${ JAVA_PATH } " -cp "${ NEW_H2_JAR_PATH } " org.h2.tools.Shell -url "${ NEW_H2_URL } " -user "${ DB_USERNAME } " -password "${ DB_PASSWORD } " -sql "${ sql } "` ,
105- ) ) as ExecResult ;
106- if ( stderr ) {
107- log . error ( '[new]execute sql error: ' , stderr ) ;
108- return null ;
122+ const tempSqlFile = path . join ( TMP_EXPORT_SQL_DIR , `temp_${ Date . now ( ) } .sql` ) ;
123+
124+ try {
125+ // 确保临时目录存在
126+ if ( ! fs . existsSync ( TMP_EXPORT_SQL_DIR ) ) {
127+ await fsPromises . mkdir ( TMP_EXPORT_SQL_DIR , { recursive : true } ) ;
128+ }
129+
130+ // 将SQL写入临时文件
131+ await fsPromises . writeFile ( tempSqlFile , sql , 'utf8' ) ;
132+
133+ // 执行SQL文件
134+ const { stdout, stderr } = ( await execAsync (
135+ `"${ JAVA_PATH } " -cp "${ NEW_H2_JAR_PATH } " org.h2.tools.RunScript -url "${ NEW_H2_URL } " -user "${ DB_USERNAME } " -password "${ DB_PASSWORD } " -script "${ tempSqlFile } "` ,
136+ ) ) as ExecResult ;
137+
138+ if ( stderr ) {
139+ log . error ( '[new]execute sql error: ' , stderr ) ;
140+ return null ;
141+ }
142+ return stdout ;
143+ } finally {
144+ // 删除临时文件
145+ if ( fs . existsSync ( tempSqlFile ) ) {
146+ await fsPromises . rm ( tempSqlFile , { force : true } ) ;
147+ }
109148 }
110- return stdout ;
111149}
112150
113151/**
0 commit comments