Help Center/
GaussDB(DWS)/
More Documents/
Developer Guide (Paris Region)/
Data Migration/
Data Import/
Running the COPY FROM STDIN Statement to Import Data/
Example: Migrating Data from MySQL to GaussDB(DWS)
Updated on 2022-07-29 GMT+08:00
Example: Migrating Data from MySQL to GaussDB(DWS)
The following example shows how to use CopyManager to migrate data from MySQL to GaussDB(DWS).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
//gsjdbc4.jar is used as an example. If gsjdbc200.jar is used, replace the driver class name org.postgresql with com.huawei.gauss200.jdbc and replace the URL prefix jdbc:postgresql with jdbc:gaussdb.
import java.io.StringReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.postgresql.copy.CopyManager;
import org.postgresql.core.BaseConnection;
public class Migration{
public static void main(String[] args) {
String url = new String("jdbc:postgresql://10.180.155.74:8000/postgres"); //Database URL
String user = new String("jack"); //Database username
String pass = new String("********"); //Database password
String tablename = new String("migration_table"); //Define table information.
String delimiter = new String("|"); //Define a delimiter.
String encoding = new String("UTF8"); //Define a character set.
String driver = "org.postgresql.Driver";
StringBuffer buffer = new StringBuffer(); //Define the buffer to store formatted data.
try {
//Obtain the query result set of the source database.
ResultSet rs = getDataSet();
//Traverse the result set and obtain records row by row.
//The values of columns in each record are separated by the specified delimiter and end with a newline character to form strings.
////Add the strings to the buffer.
while (rs.next()) {
buffer.append(rs.getString(1) + delimiter
+ rs.getString(2) + delimiter
+ rs.getString(3) + delimiter
+ rs.getString(4)
+ "\n");
}
rs.close();
try {
//Connect to the target database.
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, user, pass);
BaseConnection baseConn = (BaseConnection) conn;
baseConn.setAutoCommit(false);
//Initialize table information.
String sql = "Copy " + tablename + " from STDIN DELIMITER " + "'" + delimiter + "'" + " ENCODING " + "'" + encoding + "'";
//Submit data in the buffer.
CopyManager cp = new CopyManager(baseConn);
StringReader reader = new StringReader(buffer.toString());
cp.copyIn(sql, reader);
baseConn.commit();
reader.close();
baseConn.close();
} catch (ClassNotFoundException e) {
e.printStackTrace(System.out);
} catch (SQLException e) {
e.printStackTrace(System.out);
}
} catch (Exception e) {
e.printStackTrace();
}
}
//********************************
//Return the query result set from the source database.
//*********************************
private static ResultSet getDataSet() {
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://10.119.179.227:3306/jack?useSSL=false&allowPublicKeyRetrieval=true", "jack", "********");
Statement stmt = conn.createStatement();
rs = stmt.executeQuery("select * from migration_table");
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return rs;
}
}
|
Parent topic: Running the COPY FROM STDIN Statement to Import Data
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
The system is busy. Please try again later.
For any further questions, feel free to contact us through the chatbot.
Chatbot