RdbCSV
RDB dumped csv/tsv can be read and write.
Rdbcsv supoorts mainly MySQL and PostgreSQL within reasonable range.
Requirements
- Ruby 2.4+
Installation
gem install rdb_csv
or, add this line in your Gemfile
gem 'rdb_csv'
Usage
RdbCSV is similar to the standard CSV class.
database type: argment db. The default is to use standard CSV class.
delimiter type: argment delimiter The default is to use \t, because the dafault delimiter for dump data is \t.
MySQL
Use INTO OUTFILE to safely dump CSV,TSV on MySQL.
require 'rdb_csv'
# TSV
tsv_path = "your_dump_file_path.tsv"
RdbCSV.open(tsv_path, db: :mysql, delimiter: "\t") do |tsv|
tsv.each do |row|
p row
end
end
# CSV
csv_path = "your_dump_file_path.tsv"
RdbCSV.open(csv_path, db: :mysql, delimiter: ",") do |csv|
csv.each do |row|
p row
end
end
# Use foreach
RdbCSV.foreach(csv_path, db: :mysql, delimiter: ",") do |row|
p row
end
PostgreSQl
Use COPY to safely dump CSV,TSV on PostgreSQL.
require 'rdb_csv'
# TSV
tsv_path = "your_dump_file_path.tsv"
RdbCSV.foreach(tsv_path, db: :postgresql, delimiter: "\t") do |row|
p row
end
# CSV
csv_path = "your_dump_file_path.csv"
RdbCSV.foreach(csv_path, db: :postgresql, delimiter: ",") do |row|
p row
end
Convert MySQL to PostgreSQl
require 'rdb_csv'
mysql_rows = []
mysql_tsv_path = "your_mysql_dump_file_path.tsv"
RdbCSV.foreach(mysql_tsv_path, db: :mysql, delimiter: "\t") do |row|
mysql_rows << row
end
postgres_tsv_path = "your_postgres_dump_file_path.tsv"
RdbCSV.open(postgres_tsv_path, "w", db: :postgresql, delimiter: "\t") do |tsv|
mysql_rows.each do |mysql_row|
tsv << mysql_row
end
end