人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Webに公開されているJSON形式のファイルをPerl経由で
MySQLに流し込みたいのですがうまく行きません。

下記の print $perl_out;が ARRAY(0x937dc28) と出力されます。
- これはどういう意味でしょうか?
- これをMySQLに流し込むことは可能でしょうか?

よろしくお願い致します。


-------------------------------------

#!/usr/bin/perl \


use strict;
use warnings;
use Data::Dumper;
use JSON;

my $json_in = ' [{"name": "Wetpaint",
"permalink": "wetpaint"},
{"name": "AdventNet",
"permalink": "adventnet"},
{"name": "Zoho",
"permalink": "zoho"},
{"name": "Digg",
"permalink": "digg"} ] ';

my $perl_out = decode_json($json_in);

print $perl_out;


●質問者: katsuya777
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:digg JSON MySQL name Perl
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● あすか
●28ポイント

格納されたオブジェクトのアドレスを示しています。


できません。

JSONは構造を持っていますから、その構造をどのような形でMySQLに反映させるかで、格納の仕方が変わってきます。


参考「JSON - JSONデータの解析 / Perlモジュール徹底解説

◎質問者からの返答

ありがとうございます。

上記JSONの構造をテーブル上に変換し

MySQLに格納するにはどうしたらよいでしょうか?

やり方が記載されているURL等でも構いません。


2 ● okamotoy
●18ポイント

Perlからリレーショナルデータベースを操作するには,「DBD」「DBI」モジュール使う方法我あります.


3 ● あすか
●18ポイント

上記JSONの構造をテーブル上に変換し

仰っている意味が分かりません。


JSONからCREATE TABLEするには、JSON側に必要が情報が不足しています。


既存のTABLEにINSERTするという意味ならば、

TABLEの構造が分からないとお答えしようがありません。


4 ● tkyk3
●100ポイント ベストアンサー

実際にJSONデータをMySQLに落とし込むサンプルにしてみました。

#HTML表示出力する

の所はおまけです。Dumperでどんなデータだったか表示しているだけです。

#!/usr/bin/perl
use strict;
use warnings;
use lib qw(./);
use Data::Dumper;
use JSON;
use DBI;
use CGI qw(:standard -no_xhtml);

my $q = new CGI;

my $user = '';
my $passwd = '';
my $table_name = 'testtable';
my $db = DBI->connect('DBI:mysql:testdb:localhost', $user, $passwd);
my $sth;

my $json_in = ' [{"name": "Wetpaint",
"permalink": "wetpaint"},
{"name": "AdventNet",
"permalink": "adventnet"},
{"name": "Zoho",
"permalink": "zoho"},
{"name": "Digg",
"permalink": "digg"} ] ';

my $outdata = decode_json($json_in);

# データをMySQLにINSERTする
foreach my $data (@{$outdata}) { # 配列毎に処理する
my $name = $data->{name};
my $permalink = $data->{permalink};
$sth = $db->prepare("insert into $table_name (name , permalink) values (? , ?);");
$sth->execute($name, $permalink);
}
$sth->finish;
$db->disconnect;

#HTML表示出力する
print $q->header( '-Content-Type'=> 'text/html',
 '-charset' => 'UTF-8',
);
print "<pre>". Dumper($outdata) . "</pre>";
◎質問者からの返答

ありがとうございます! うまく行きました。

コードまで書いて頂き感激です。


5 ● tkyk3
●18ポイント

忘れていました。補足です。

MySQL側で一旦テーブルを作成してください。

SQLで


みたいなのを想定しています。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ