私は50.000行のMYSQLデータベースを持っています。各行は記事を表します。 「articletext」という名前の列の値を50.000個のファイルに分割する必要があります。各行に1つのファイル。私はMYSQLを初めて使っているので、これをどうやって行うのか分かりません。MYSQLの行を複数のtxtファイルにエクスポート
誰でも手伝ってもらえますか?
ありがとう
私は50.000行のMYSQLデータベースを持っています。各行は記事を表します。 「articletext」という名前の列の値を50.000個のファイルに分割する必要があります。各行に1つのファイル。私はMYSQLを初めて使っているので、これをどうやって行うのか分かりません。MYSQLの行を複数のtxtファイルにエクスポート
誰でも手伝ってもらえますか?
ありがとう
この小さなJavaアプリケーションを作成して問題を解決しました。
try {
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Opening connection");
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost/articles", "username", "password");
String query = "Select title,articletext from articles";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
String title = rs.getString(1);
String text = rs.getString(2);
try {
FileWriter fstream = new FileWriter(title + ".txt");
BufferedWriter out = new BufferedWriter(fstream);
out.write(text);
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println("Closing connection");
con.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
そして私は、Pythonを使って私の解決策を提案する:row[0]
はid
にマッピングされます
import MySQLdb
def write_to_file(with_name, write_this):
with_name = str(with_name)
with open(with_name, "w") as F:
F.write(write_this)
db = MySQLdb.connect(
host="localhost", # hostname, usually localhost
user="andi", # your username
passwd="passsword", # your password
db="db_name", # name of the database
charset = "utf8", # encoding
use_unicode = True
)
cur = db.cursor()
cur.execute("select id, description from SOME_TABLE")
for row in cur.fetchall() :
write_to_file(row[0], row[1].encode('utf8'))
、row[1]
は、これはおそらく一人でMySQLで行うことはできませんdescription
にマップされます。プログラミング言語を使用できますか? –
ご返信ありがとうございます。私は、データベースに接続する小さなJavaアプリケーションを作成することができます。それは最善の解決策のように聞こえるか? – Peter
あなたは確かに手続き部分を行うために別の言語が必要になります.SQLはファイル作成言語ではなく、クエリ言語です。 – Randy