Я близько року займаюсь розробкою інтернет магазину з продажу автозапчастин, у вільний час, тому що роблю для свого брата. Сайт використовує базу з Tecdoc. Вирішив написати статтю як робити експорт даних з Tecdoc в MySQL або TecDoc Online (для пошуку).
Tecdoc - це програма, яка містить базу неоригінальних запчастин для авто (картинки, опис, привязки до оригіналів та можливість підбору по авто). Tecdoc використовує СУБД Transbase для зберігання даних. Програма має кілька мінусів: 1) йде лише під Windows; 2) з x64 великі проблеми, особливо під 7 та 8; 3) зберігає картинки прямо в СУБД; 4) дуже заплутані назви таблиць та полей (принаймі це мінуси для мене)
Є також і плюси:
1) Структура бази не міняється по кілька років (інколи додаються нові таблички).
2) Дуже легко отримати доступ до бази, але вона набаго повільніше ніж MySQL та є багато проблем зі структурою
Для доступу до бази використовуємо наступні дані:
- Схема або бд: TECDOC_CD_2_2013 (залежить від версії, 2013 - рік випуску, 2 - квартал)
- Користувач: tecdoc
- Пароль: tcd_error_0
- Таблиці, які нас цікавлять починаються з TOF_
- JDBC-драйвер: transbase.jdbc.Driver (дивіться трохи нижче в прикріплених файлах)
- Регіон (id): 210 (210 - Україна)
- Мова (id): 16 (16 - російська)
Перейдемо безпосердньо до прикладу. Для експорту даних я використовую мову програмування Java.
Наступний клас виконує підключення до Transbase та просто друкує таблиці Tecdoc:
[code]/**
Author: Leonid Yaremchuk
Date: 2012-09-10
Company: http://leonid.pro/
*/
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class ExportHelper {
private static final String dbDriver = "transbase.jdbc.Driver";
private static final String dbUrl = "jdbc:transbase://192.168.1.106/";
private static final String dbDatabase = "TECDOC_CD_2_2013";
private static final String dbUser = "tecdoc";
private static final String dbPassword = "tcd_error_0";
private Connection connection = null;
private static final int ukraineCode = 210;
private static final int russianId = 16;
public ExportHelper() {
try {
Class.forName(dbDriver);
connection = DriverManager.getConnection(dbUrl + dbDatabase, dbUser, dbPassword);
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public void printSysTable() {
Statement st;
try {
st = connection.createStatement();
ResultSet result = st.executeQuery("SELECT * FROM systable");
while (result.next()) {
String tableName = result.getString(1);
// Just TecDoc
if (tableName.indexOf("TOF_") != -1) {
System.out.println(tableName);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}[/code]
Приведу більш практичний приклад з використання коду України. Наступний код створює таблицю в MySQL з виробниками авто і за допомогою методу exportTableData виконує експорт з Tecdoc в Mysql. Знаю, що можна було використовувати PreparedStatement, але так експортує швидше.
[code]public void exportManufacturers() {
final String tableName = "TOF_MANUFACTURERS";
final String mysqlTable = "tof_manufacturers";
final String sqlDropTable = "DROP TABLE IF EXISTS " + mysqlTable;
final String sqlCreateTable = " CREATE TABLE IF NOT EXISTS " + mysqlTable + " (" +
"id int(11) PRIMARY KEY, " +
"passenger_car TINYINT, " +
"commercial_vehicle TINYINT, " +
"axle TINYINT, " +
"engine TINYINT, " +
"engine_type TINYINT, " +
"code VARCHAR(20), " +
"brand VARCHAR(100), " +
"number SMALLINT" +
")";
Statement st;
Statement mysqlSt;
try {
System.out.println("Export manufacturers");
st = connection.createStatement();
ResultSet result = st.executeQuery("SELECT MFA_ID, MFA_PC_MFC, MFA_CV_MFC," +
" MFA_AXL_MFC, MFA_ENG_MFC, MFA_ENG_TYP, MFA_MFC_CODE, MFA_BRAND," +
" MFA_MF_NR FROM " + tableName + " WHERE " +
" MFA_CV_CTM SUBRANGE (" + ukraineCode + " CAST INTEGER) = 1 OR" +
" MFA_PC_CTM SUBRANGE (" + ukraineCode + " CAST INTEGER) = 1");
ResultSetMetaData metaResult = result.getMetaData();
int numberOfColumns = metaResult.getColumnCount();
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sqlDropTable);
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sqlCreateTable);
exportTableData(result, numberOfColumns, mysqlTable);
} catch (SQLException e) {
e.printStackTrace();
}
}
private void exportTableData(ResultSet result, int numberOfColumns, String table) {
try {
int count = 0;
int counter = 0;
result.setFetchSize(2000);
while (true) {
String sql = "INSERT INTO " + table + " VALUES";
while (count != 2000 && result.next()) {
if (count != 0) {
sql += ',';
}
sql += "(";
for (int i = 1; i <= numberOfColumns; i++) {
if (result.getObject(i) == null) {
sql += "NULL";
} else {
sql += "'" + cleanString(result.getString(i)) + "'";
}
if (i != numberOfColumns) {
sql += ", ";
} else {
sql += " ";
}
}
sql += ")";
count++;
counter++;
}
if (count > 0) {
Statement st = mysqlConnection.createStatement();
st.executeUpdate(sql);
st.close();
System.out.println(counter);
count = 0;
} else {
break;
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
[/code]
Більше прикладів:
▼Експорт моделей
[code]public void exportModels() {
final String tableName = "TOF_MODELS";
final String tableCountry = "TOF_COUNTRY_DESIGNATIONS";
final String tableDescriptions = "TOF_DES_TEXTS";
final String mysqlTable = "tof_models";
final String sqlDropTable = "DROP TABLE IF EXISTS " + mysqlTable;
final String sqlCreateTable = " CREATE TABLE IF NOT EXISTS " + mysqlTable + " (" +
"id INT(11) PRIMARY KEY, " +
"manufacturer_id int(11), " +
"description_id int(11), " +
"start_date int(6), " +
"end_date int(6), " +
"passenger_car TINYINT, " +
"commercial_vehicle TINYINT, " +
"axle TINYINT, " +
"description VARCHAR(255)" +
")";
final String[] sqlIndexes = {
"ALTER TABLE " + mysqlTable + " ADD INDEX (manufacturer_id)"
};
Statement st;
Statement mysqlSt;
try {
System.out.println("Export models");
st = connection.createStatement();
ResultSet result = st.executeQuery("SELECT MOD_ID, MOD_MFA_ID, MOD_CDS_ID," +
" MOD_PCON_START, MOD_PCON_END, MOD_PC, MOD_CV, MOD_AXL, TEX_TEXT " +
" FROM " + tableName + ", " + tableCountry + ", " + tableDescriptions + " WHERE" +
" (MOD_PC_CTM SUBRANGE (" + ukraineCode + " CAST INTEGER) = 1 OR" +
" MOD_CV_CTM SUBRANGE (" + ukraineCode + " CAST INTEGER) = 1) AND" +
" CDS_LNG_ID = " + russianId + " AND CDS_TEX_ID = TEX_ID AND MOD_CDS_ID = CDS_ID" +
" AND CDS_CTM SUBRANGE (" + ukraineCode + " CAST INTEGER) = 1");
ResultSetMetaData metaResult = result.getMetaData();
int numberOfColumns = metaResult.getColumnCount();
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sqlDropTable);
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sqlCreateTable);
for (String sql : sqlIndexes) {
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sql);
}
exportTableData(result, numberOfColumns, mysqlTable);
} catch (SQLException e) {
e.printStackTrace();
}
}
[/code]
▼Експорт модифікацій
[code]
public void exportTypes() {
final String tableName = "TOF_TYPES";
final String tableCountry = "TOF_COUNTRY_DESIGNATIONS";
final String tableDescriptions = "TOF_DES_TEXTS";
final String mysqlTable = "tof_types";
final String sqlDropTable = "DROP TABLE IF EXISTS " + mysqlTable;
final String sqlCreateTable = " CREATE TABLE IF NOT EXISTS " + mysqlTable + " (" +
"id int(11) PRIMARY KEY," +
"model_id int(11)," +
"start_date int(6)," +
"end_date int(6)," +
"description varchar(100)," +
"capacity float(5,1), " +
"capacity_hp_from int(5)," +
"capacity_kw_from int(5)" +
")";
final String[] sqlIndexes = {
"ALTER TABLE " + mysqlTable + " ADD INDEX (model_id)"
};
Statement st;
Statement mysqlSt;
try {
System.out.println("Export types");
st = connection.createStatement();
ResultSet result = st.executeQuery("SELECT TYP_ID, TYP_MOD_ID, TYP_PCON_START, TYP_PCON_END, TEX_TEXT, TYP_LITRES, TYP_HP_FROM, TYP_KW_FROM" +
" FROM " + tableName + ", " + tableCountry + ", " + tableDescriptions + " WHERE" +
" (TYP_CTM SUBRANGE (" + ukraineCode + " CAST INTEGER) = 1 OR" +
" TYP_LA_CTM SUBRANGE (" + ukraineCode + " CAST INTEGER) = 1) AND" +
" CDS_LNG_ID = " + russianId + " AND CDS_TEX_ID = TEX_ID AND TYP_CDS_ID = CDS_ID" +
" AND CDS_CTM SUBRANGE (" + ukraineCode + " CAST INTEGER) = 1");
ResultSetMetaData metaResult = result.getMetaData();
int numberOfColumns = metaResult.getColumnCount();
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sqlDropTable);
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sqlCreateTable);
for (String sql : sqlIndexes) {
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sql);
}
exportTableData(result, numberOfColumns, mysqlTable);
} catch (SQLException e) {
e.printStackTrace();
}
}[/code]
▼Експорт запчастин
[code]
public void exportArticles() {
final String tableName = "TOF_ARTICLES";
final String tableCountry = "TOF_DESIGNATIONS";
final String tableDescriptions = "TOF_DES_TEXTS";
final String mysqlTable = "tof_articles_new";
final String sqlDropTable = "DROP TABLE IF EXISTS " + mysqlTable;
final String sqlCreateTable = " CREATE TABLE IF NOT EXISTS " + mysqlTable + " (" +
"id int(11), " +
"article_nr VARCHAR(80), " +
"supplier_id int(11), " +
"description VARCHAR(1024), " +
"PRIMARY KEY (id)" +
")";
final String[] sqlIndexes = {
"ALTER TABLE " + mysqlTable + " ADD INDEX (supplier_id)",
"ALTER TABLE " + mysqlTable + " ADD INDEX (article_nr)"
};
Statement st;
Statement mysqlSt;
try {
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sqlDropTable);
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sqlCreateTable);
for (String sql : sqlIndexes) {
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sql);
}
st = connection.createStatement();
ResultSet result = st.executeQuery("SELECT ART_ID, ART_ARTICLE_NR, ART_SUP_ID, TEX_TEXT" +
" FROM " + tableName + ", " + tableCountry + ", " + tableDescriptions + " " +
" WHERE ART_CTM SUBRANGE (" + ukraineCode + " CAST INTEGER) = 1 AND " +
" DES_LNG_ID = " + russianId + " AND DES_TEX_ID = TEX_ID AND " +
" ART_COMPLETE_DES_ID = DES_ID");
ResultSetMetaData metaResult = result.getMetaData();
int numberOfColumns = metaResult.getColumnCount();
exportTableData(result, numberOfColumns, mysqlTable);
result.close();
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
[/code]
▼Експорт постачальників
[code]
public void exportSuppliers() {
final String tableName = "TOF_SUPPLIERS";
final String mysqlTable = "tof_suppliers";
final String sqlDropTable = "DROP TABLE IF EXISTS " + mysqlTable;
final String sqlCreateTable = " CREATE TABLE IF NOT EXISTS " + mysqlTable + " (" +
"id int(11), " +
"brand VARCHAR(100), " +
"alias VARCHAR(100), " +
"supplier_nr int(11), " +
"PRIMARY KEY (id)" +
")";
final String[] sqlIndexes = {
"ALTER TABLE " + mysqlTable + " ADD INDEX (brand)",
"ALTER TABLE " + mysqlTable + " ADD INDEX (supplier_nr)"
};
Statement st;
Statement mysqlSt;
try {
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sqlDropTable);
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sqlCreateTable);
for (String sql : sqlIndexes) {
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sql);
}
st = connection.createStatement();
ResultSet result = st.executeQuery("SELECT DISTINCT SUP_ID, SUP_BRAND, SUP_BRAND, SUP_SUPPLIER_NR" +
" FROM " + tableName);
ResultSetMetaData metaResult = result.getMetaData();
int numberOfColumns = metaResult.getColumnCount();
exportTableData(result, numberOfColumns, mysqlTable);
result.close();
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
[/code]
▼Експорт пошукової таблиці
[code]
public void exportArticlesLookup() {
final String tableName = "TOF_ART_LOOKUP";
final String mysqlTable = "tof_articles_lookup_new";
final String sqlDropTable = "DROP TABLE IF EXISTS " + mysqlTable;
final String sqlCreateTable = " CREATE TABLE IF NOT EXISTS " + mysqlTable + " (" +
"article_id int(11), " +
"search varchar(105), " +
"display varchar(105), " +
"article_type smallint(11), " +
"brand_id int(11) " +
")";
final String[] sqlIndexes = {
"ALTER TABLE " + mysqlTable + " ADD INDEX (article_id)",
"ALTER TABLE " + mysqlTable + " ADD INDEX (search)",
"ALTER TABLE " + mysqlTable + " ADD INDEX (article_type)",
"ALTER TABLE " + mysqlTable + " ADD INDEX (brand_id)"
};
Statement st;
Statement mysqlSt;
try {
st = connection.createStatement();
ResultSet result = st.executeQuery("SELECT ARL_ART_ID, ARL_SEARCH_NUMBER, ARL_DISPLAY_NR, ARL_KIND, ARL_BRA_ID" +
" FROM " + tableName + " ORDER BY ARL_ART_ID");
ResultSetMetaData metaResult = result.getMetaData();
int numberOfColumns = metaResult.getColumnCount();
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sqlDropTable);
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sqlCreateTable);
for (String sql : sqlIndexes) {
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sql);
}
exportTableData(result, numberOfColumns, mysqlTable);
result.close();
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
[/code]
▼Експорт дерева груп запчастин та допоміжні таблиці
[code]
public void exportSearchTree() {
final String tableName = "TOF_SEARCH_TREE";
final String mysqlTable = "tof_search_tree";
final String tableCountry = "TOF_DESIGNATIONS";
final String tableDescriptions = "TOF_DES_TEXTS";
final String sqlDropTable = "DROP TABLE IF EXISTS " + mysqlTable;
final String sqlCreateTable = " CREATE TABLE IF NOT EXISTS " + mysqlTable + " (" +
"id INT(11), " +
"parent_id INT(11), " +
"type SMALLINT(2), " +
"level SMALLINT(2), " +
"node_number INT(11), " +
"sort INT(11), " +
"text VARCHAR(255), " +
"PRIMARY KEY (id)" +
")";
final String[] sqlIndexes = {
"ALTER TABLE " + mysqlTable + " ADD INDEX (level)",
"ALTER TABLE " + mysqlTable + " ADD INDEX (sort)",
"ALTER TABLE " + mysqlTable + " ADD INDEX (type)",
"ALTER TABLE " + mysqlTable + " ADD INDEX (parent_id)"
};
Statement st;
Statement mysqlSt;
try {
st = connection.createStatement();
ResultSet result = st.executeQuery("SELECT DISTINCT STR_ID, STR_ID_PARENT, STR_TYPE, STR_LEVEL, STR_SORT, STR_NODE_NR, TEX_TEXT" +
" FROM " + tableName + ", " + tableCountry + ", " + tableDescriptions + " " +
" WHERE DES_LNG_ID = " + russianId + " AND DES_TEX_ID = TEX_ID AND " +
" DES_ID=STR_DES_ID");
ResultSetMetaData metaResult = result.getMetaData();
int numberOfColumns = metaResult.getColumnCount();
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sqlDropTable);
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sqlCreateTable);
for (String sql : sqlIndexes) {
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sql);
}
exportTableData(result, numberOfColumns, mysqlTable);
result.close();
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void exportLinkGenericArticleSearchTree() {
final String tableName = "TOF_LINK_GA_STR";
final String mysqlTable = "tof_link_generic_article_search_tree";
final String sqlDropTable = "DROP TABLE IF EXISTS " + mysqlTable;
final String sqlCreateTable = " CREATE TABLE IF NOT EXISTS " + mysqlTable + " (" +
"search_tree_id INT(11), " +
"generic_article_id INT(11)" +
")";
final String[] sqlIndexes = {
"ALTER TABLE " + mysqlTable + " ADD INDEX (search_tree_id)",
"ALTER TABLE " + mysqlTable + " ADD INDEX (generic_article_id)"
};
Statement st;
Statement mysqlSt;
try {
st = connection.createStatement();
ResultSet result = st.executeQuery("SELECT DISTINCT LGS_STR_ID, LGS_GA_ID" +
" FROM " + tableName);
ResultSetMetaData metaResult = result.getMetaData();
int numberOfColumns = metaResult.getColumnCount();
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sqlDropTable);
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sqlCreateTable);
for (String sql : sqlIndexes) {
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sql);
}
exportTableData(result, numberOfColumns, mysqlTable);
result.close();
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
[/code]
▼Експорт параметрів запчастин
[code]
public void exportCriteria() {
final String tableName = "TOF_CRITERIA";
final String tableCountry = "TOF_DESIGNATIONS";
final String tableDescriptions = "TOF_DES_TEXTS";
final String mysqlTable = "tof_criteria";
final String sqlDropTable = "DROP TABLE IF EXISTS " + mysqlTable;
final String sqlCreateTable = " CREATE TABLE IF NOT EXISTS " + mysqlTable + " (" +
"id int(11) PRIMARY KEY," +
"description varchar(255)," +
"unit int(11)," +
"type varchar(6)," +
"is_interval int(5)," +
"successor int(11) " +
")";
final String[] sqlIndexes = {
"ALTER TABLE " + mysqlTable + " ADD INDEX (id)"
};
Statement st;
Statement mysqlSt;
try {
System.out.println("Export Criteria");
st = connection.createStatement();
ResultSet result = st.executeQuery("SELECT CRI_ID, TEX_TEXT, CRI_UNIT_DES_ID, CRI_TYPE, CRI_IS_INTERVAL, CRI_SUCCESSOR" +
" FROM " + tableName + ", " + tableCountry + ", " + tableDescriptions + " WHERE" +
" DES_LNG_ID = " + russianId + " AND DES_TEX_ID = TEX_ID AND CRI_SHORT_DES_ID = DES_ID");
ResultSetMetaData metaResult = result.getMetaData();
int numberOfColumns = metaResult.getColumnCount();
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sqlDropTable);
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sqlCreateTable);
for (String sql : sqlIndexes) {
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sql);
}
exportTableData(result, numberOfColumns, mysqlTable);
} catch (SQLException e) {
e.printStackTrace();
}
}
public void exportArticlesAttributes() {
final String tableName = "TOF_ARTICLE_INFO";
final String tableCountry = "TOF_TEXT_MODULES";
final String tableDescriptions = "TOF_TEXT_MODULE_TEXTS";
final String mysqlTable = "tof_article_info";
final String sqlDropTable = "DROP TABLE IF EXISTS " + mysqlTable;
final String sqlCreateTable = " CREATE TABLE IF NOT EXISTS " + mysqlTable + " (" +
"article_id int(11)," +
"sort int(11)," +
"description TEXT" +
")";
final String[] sqlIndexes = {
"ALTER TABLE " + mysqlTable + " ADD INDEX (article_id)"
};
Statement st;
Statement mysqlSt;
try {
System.out.println("Export Info");
st = connection.createStatement();
ResultSet result = st.executeQuery("SELECT AIN_ART_ID, AIN_SORT, TMT_TEXT" +
" FROM " + tableName + ", " + tableCountry + ", " + tableDescriptions + " WHERE" +
" TMO_LNG_ID = " + russianId + " AND TMO_TMT_ID = TMT_ID AND AIN_TMO_ID = TMO_ID");
ResultSetMetaData metaResult = result.getMetaData();
int numberOfColumns = metaResult.getColumnCount();
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sqlDropTable);
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sqlCreateTable);
for (String sql : sqlIndexes) {
mysqlSt = mysqlConnection.createStatement();
mysqlSt.executeUpdate(sql);
}
exportTableData(result, numberOfColumns, mysqlTable);
} catch (SQLException e) {
e.printStackTrace();
}
}
[/code]
Трохи пояснень:
- Tecdoc використовує поля *_CTM для зберігання інформації про країну. Вони зберігаються як послідовність бітів. Кожній країні відповідає певний біт. За допомогою логічного "і" можна визначити чи доступна дана запчастина/авто/інше в даній країні. Наступним чином можна відсікти все, що нам потрібно:
[code=sql]*_CTM SUBRANGE (" + ukraineCode + " CAST INTEGER) = 1[/code]
- Для зберігання всіх текстів використовується окрема таблиця - TOF_DES_TEXTS. TOF_DESIGNATIONS - допоміжна таблиця, яка зв'язує мову та id тексу, який потрібно отримати. Приклад для описання запчастини (ART_COMPLETE_DES_ID):
[code=sql]DES_LNG_ID = " + russianId + " AND DES_TEX_ID = TEX_ID AND ART_COMPLETE_DES_ID = DES_ID[/code]
Здається нічого не забув. Приведу ще код для підключення до mysql та виклик цього всього:
▼MysqlHelper
[code]
/**
Author: Leonid Yaremchuk
Date: 2012-09-12
Company: http://leonid.pro/
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class MysqlHelper {
private static final String dbDriver = "com.mysql.jdbc.Driver";
private static final String dbUrl = "jdbc:mysql://leoparts.com.ua:3306/";
private static final String dbDatabase = "leo_leoparts";
private static final String dbUser = "leo_leoparts";
private static final String dbPassword = "*****";
private static final String characterEncoding = "utf-8";
private Connection connection = null;
public MysqlHelper() {
try {
Class.forName(dbDriver);
connection = DriverManager.getConnection(dbUrl + dbDatabase + "?characterEncoding=utf-8&useUnicode=true", dbUser, dbPassword);
String sqlCharset = "SET NAMES utf8 COLLATE utf8_general_ci";
Statement st = connection.createStatement();
st.executeQuery(sqlCharset);
st.executeQuery("SET CHARACTER SET utf8");
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public Connection getConnection() {
return connection;
}
}
[/code]
▼MysqlHelper
[code]
/**
Author: Leonid Yaremchuk
Date: 2012-09-10
Company: http://leonid.pro/
*/
// run java -classpath tbjdbc.jar:mysql-connector-java-5.1.20-bin.jar:. TecdocExport
public class TecdocExport {
public static void main(String[] args) {
ExportHelper helper = new ExportHelper(new MysqlHelper().getConnection());
helper.printSysTable();
// Cars
//helper.exportManufacturers();
//helper.exportModels();
//helper.exportTypes();
//helper.exportTypesBody();
//helper.exportTypesEngine();
//helper.exportTypesFuel();
//helper.exportTypesDrive();
//helper.exportLinkTypeEngine();
//helper.exportEngines();
// Articles
//helper.exportArticles();
//helper.exportSuppliers();
//helper.exportArticlesLookup();
//helper.exportLinkTypeArticle();
//helper.exportArticlesLink();
//helper.exportGenericArticles();
//helper.exportLinkGenericArticleSearchTree();
//helper.exportArticlesAttributes();
//helper.exportSearchTree();
//helper.exportLinkGenericArticleSearchTree();
//helper.exportCriteriaArticle();
//helper.exportPictures();
helper.close();
}
}
[/code]
P.S. 1) Кому цікаво, що в мене вийшло: http://leoparts.com.ua/
2) JDBC-драйвери в прикріплених файлах
3) Якщо вам сподобалась стаття не забувайте поділитись в соціальних мережах.
4) Якщо вас цікавить розробка сайту автозапчастин, то прошу на http://leonid.pro/