pgloader/0000755000175000017500000000000013127440075012544 5ustar vagrantvagrantpgloader/bootstrap-centos7.sh0000644000175000017500000000060313047375022016474 0ustar vagrantvagrant#!/usr/bin/env bash sudo yum -y install yum-utils rpmdevtools @"Development Tools" \ sqlite-devel zlib-devel # Enable epel for sbcl sudo yum -y install epel-release sudo yum -y install sbcl # Missing dependency sudo yum install freetds freetds-devel -y sudo ln -s /usr/lib64/libsybdb.so.5 /usr/lib64/libsybdb.so # prepare the rpmbuild setup rpmdev-setuptree pgloader/src/0000755000175000017500000000000013127440120013322 5ustar vagrantvagrantpgloader/src/getenv.lisp0000644000175000017500000000101413047375022015510 0ustar vagrantvagrant;;; ;;; Export a getenv feature so that we can fetch http_proxy at build time. ;;; ;;; We can't rely on Quicklisp to have installed a modern ASDF with UIOP yet ;;; here: we need the feature to pass in the :proxy argument to ;;; quicklisp-quickstart:install. ;;; (in-package :cl-user) ;; ;; ccl provides an implementation of getenv already. ;; #+sbcl (defun getenv (name &optional default) "Return the current value for the environment variable NAME, or default when unset." (or (sb-ext:posix-getenv name) default)) pgloader/src/params.lisp0000644000175000017500000001346213127440120015504 0ustar vagrantvagrant;;; ;;; pgloader parameters ;;; ;;; in a separate file to break circular dependencies (defpackage #:pgloader.params (:use #:cl) (:export #:*version-string* #:*dry-run* #:*on-error-stop* #:on-error-stop #:*self-upgrade-immutable-systems* #:*fd-path-root* #:*root-dir* #:*log-filename* #:*summary-pathname* #:*client-min-messages* #:*log-min-messages* #:*report-stream* #:*pgsql-reserved-keywords* #:*identifier-case* #:*preserve-index-names* #:*copy-batch-rows* #:*copy-batch-size* #:*rows-per-range* #:*prefetch-rows* #:*pg-settings* #:*mysql-settings* #:*default-tmpdir* #:init-params-from-environment #:getenv-default #:+os-code-success+ #:+os-code-error+ #:+os-code-error-usage+ #:+os-code-error-bad-source+ #:+os-code-error-regress+)) (in-package :pgloader.params) (defparameter *release* t "non-nil when this build is a release build.") (defparameter *major-version* "3.4") (defparameter *minor-version* "1") (defun git-hash () "Return the current abbreviated git hash of the development tree." (handler-case (let ((git-hash `("git" "--no-pager" "log" "-n1" "--format=format:%h"))) (multiple-value-bind (stdout stderr code) (uiop:run-program git-hash :output :string :directory (asdf:system-source-directory :pgloader)) (declare (ignore code stderr)) stdout)) (condition (e) ;; in case anything happen, just return X.Y.Z~devel (declare (ignore e)) (format nil "~a~~devel" *minor-version*)))) (defparameter *version-string* (concatenate 'string *major-version* "." (if *release* *minor-version* (git-hash))) "pgloader version strings, following Emacs versionning model.") (defvar *self-upgrade-immutable-systems* nil "Used for --self-upgrade.") ;;; ;;; We need that to setup our default connection parameters ;;; (eval-when (:compile-toplevel :load-toplevel :execute) (defun getenv-default (name &optional default) "Return the value of the NAME variable as found in the environment, or DEFAULT if that variable isn't set" (or (uiop:getenv name) default))) (defparameter *dry-run* nil "Set to non-nil to only run checks about the load setup.") (defparameter *on-error-stop* nil "Set to non-nil to for pgloader to refrain from handling errors, quitting instead.") (define-condition on-error-stop () ((on-condition :initarg :on-condition :reader on-error-condition :documentation "Condition that triggered on-error-stop")) (:report (lambda (condition stream) (format stream "On Error Stop: ~a" (on-error-condition condition))))) (defparameter *fd-path-root* nil "Where to load files from, when loading from an archive or expanding regexps.") (defparameter *root-dir* #+unix (uiop:parse-native-namestring "/tmp/pgloader/") #-unix (uiop:merge-pathnames* (uiop:make-pathname* :directory '(:relative "pgloader")) (uiop:ensure-directory-pathname (getenv-default "Temp"))) "Top directory where to store all data logs and reject files.") (defparameter *log-filename* (make-pathname :defaults *root-dir* :name "pgloader" :type "log") "Main pgloader log file") (defparameter *summary-pathname* nil "Pathname where to output the summary.") (defparameter *client-min-messages* :notice) (defparameter *log-min-messages* :info) (defparameter *report-stream* *terminal-io* "Stream where to format the output stream.") ;;; ;;; When converting from other databases, how to deal with case sensitivity? ;;; (defvar *pgsql-reserved-keywords* nil "We need to always quote PostgreSQL reserved keywords") (defparameter *identifier-case* :downcase "Dealing with source databases casing rules.") (defparameter *preserve-index-names* nil "Dealing with source databases index naming.") ;;; ;;; How to split batches in case of data loading errors. ;;; (defparameter *copy-batch-rows* 25000 "How many rows to batch per COPY transaction.") (defparameter *copy-batch-size* (* 20 1024 1024) "Maximum memory size allowed for a single batch.") (defparameter *prefetch-rows* 100000 "How many rows do read in advance in the reader queue.") (defparameter *rows-per-range* 10000 "How many rows to read in each reader's thread, per SQL query.") (defparameter *pg-settings* nil "An alist of GUC names and values.") (defparameter *mysql-settings* nil "An alist of GUC names and values.") ;;; ;;; Archive processing: downloads and unzip. ;;; (defparameter *default-tmpdir* (let* ((tmpdir (uiop:getenv "TMPDIR")) (tmpdir (or (and tmpdir (probe-file tmpdir)) #+unix #P"/tmp/" #-unix (uiop:ensure-directory-pathname (getenv-default "Temp"))))) (uiop:ensure-directory-pathname (merge-pathnames "pgloader" tmpdir))) "Place where to fetch and expand archives on-disk.") ;;; ;;; Run time initialisation of ENV provided parameters ;;; ;;; The command parser dynamically inspect the environment when building the ;;; connection parameters, so that we don't need to provision for those here. ;;; (defun init-params-from-environment () "Some of our parameters get their default value from the env. Do that at runtime when using a compiled binary." (setf *default-tmpdir* (fad:pathname-as-directory (getenv-default "TMPDIR" *default-tmpdir*)))) ;;; ;;; Some command line constants for OS errors codes ;;; (defparameter +os-code-success+ 0) (defparameter +os-code-error+ 1) (defparameter +os-code-error-usage+ 2) (defparameter +os-code-error-bad-source+ 4) (defparameter +os-code-error-regress+ 5) pgloader/src/main.lisp0000644000175000017500000006354313126554541015166 0ustar vagrantvagrant(in-package #:pgloader) ;;; ;;; Now some tooling ;;; (defun log-threshold (min-message &key quiet verbose debug) "Return the internal value to use given the script parameters." (cond ((and debug verbose) :data) (debug :debug) (verbose :notice) (quiet :error) (t (or (find-symbol (string-upcase min-message) "KEYWORD") :notice)))) (defparameter *opt-spec* `((("help" #\h) :type boolean :documentation "Show usage and exit.") (("version" #\V) :type boolean :documentation "Displays pgloader version and exit.") (("quiet" #\q) :type boolean :documentation "Be quiet") (("verbose" #\v) :type boolean :documentation "Be verbose") (("debug" #\d) :type boolean :documentation "Display debug level information.") ("client-min-messages" :type string :initial-value "warning" :documentation "Filter logs seen at the console") ("log-min-messages" :type string :initial-value "notice" :documentation "Filter logs seen in the logfile") (("summary" #\S) :type string :documentation "Filename where to copy the summary") (("root-dir" #\D) :type string :initial-value ,*root-dir* :documentation "Output root directory.") (("upgrade-config" #\U) :type boolean :documentation "Output the command(s) corresponding to .conf file for v2.x") (("list-encodings" #\E) :type boolean :documentation "List pgloader known encodings and exit.") (("logfile" #\L) :type string :documentation "Filename where to send the logs.") (("load-lisp-file" #\l) :type string :list t :optional t :documentation "Read user code from files") ("dry-run" :type boolean :documentation "Only check database connections, don't load anything.") ("on-error-stop" :type boolean :documentation "Refrain from handling errors properly.") (("with") :type string :list t :optional t :documentation "Load options") (("set") :type string :list t :optional t :documentation "PostgreSQL options") (("field") :type string :list t :optional t :documentation "Source file fields specification") (("cast") :type string :list t :optional t :documentation "Specific cast rules") (("type") :type string :optional t :documentation "Force input source type") (("encoding") :type string :optional t :documentation "Source expected encoding") (("before") :type string :optional t :documentation "SQL script to run before loading the data") (("after") :type string :optional t :documentation "SQL script to run after loading the data") ("self-upgrade" :type string :optional t :documentation "Path to pgloader newer sources") ("regress" :type boolean :optional t :documentation "Drive regression testing"))) (defun print-backtrace (condition debug) "Depending on DEBUG, print out the full backtrace or just a shorter message on STREAM for given CONDITION." (if debug (trivial-backtrace:print-backtrace condition :output nil) (trivial-backtrace:print-condition condition nil))) (defun mkdir-or-die (path debug &optional (stream *standard-output*)) "Create a directory at given PATH and exit with an error message when that's not possible." (handler-case (let ((dir (uiop:ensure-directory-pathname path))) (when debug (format stream "mkdir -p ~s~%" dir)) (uiop:parse-unix-namestring (ensure-directories-exist dir))) (condition (e) ;; any error here is a panic (if debug (format stream "PANIC: ~a~%" (print-backtrace e debug)) (format stream "PANIC: ~a.~%" e)) (uiop:quit)))) (defun log-file-name (logfile) " If the logfile has not been given by the user, default to using pgloader.log within *root-dir*." (cond ((null logfile) (make-pathname :defaults *root-dir* :name "pgloader" :type "log")) ((fad:pathname-relative-p logfile) (merge-pathnames logfile *root-dir*)) (t logfile))) (defun usage (argv &key quit) "Show usage then QUIT if asked to." (format t "~&~a [ option ... ] command-file ..." (first argv)) (format t "~&~a [ option ... ] SOURCE TARGET" (first argv)) (command-line-arguments:show-option-help *opt-spec*) (when quit (uiop:quit +os-code-error-usage+))) (defvar *self-upgraded-already* nil "Keep track if we did reload our own source code already.") (defun self-upgrade (namestring &optional debug) "Load pgloader sources at PATH-TO-PGLOADER-SOURCES." (let ((pgloader-pathname (uiop:directory-exists-p (uiop:parse-unix-namestring namestring)))) (unless pgloader-pathname (format t "No such directory: ~s~%" namestring) (uiop:quit +os-code-error+)) ;; now the real thing (handler-case (handler-bind ((warning #'muffle-warning)) (let ((asdf:*central-registry* (list* pgloader-pathname asdf:*central-registry*))) (format t "Self-upgrading from sources at ~s~%" (uiop:native-namestring pgloader-pathname)) (with-output-to-string (*standard-output*) (asdf:load-system :pgloader :verbose nil :force-not *self-upgrade-immutable-systems*)))) (condition (c) (format t "Fatal: ~a~%" c) (format t "~a~%" *self-upgrade-immutable-systems*) (when debug (invoke-debugger c)))))) (defun parse-summary-filename (summary debug) "Return the pathname where to write the summary output." (when summary (let* ((summary-pathname (uiop:parse-unix-namestring summary)) (summary-pathname (if (uiop:absolute-pathname-p summary-pathname) summary-pathname (uiop:merge-pathnames* summary-pathname *root-dir*))) (summary-dir (directory-namestring summary-pathname))) (mkdir-or-die summary-dir debug) summary-pathname))) (defvar *--load-list-file-extension-whitelist* '("lisp" "lsp" "cl" "asd") "White list of file extensions allowed with the --load option.") (defun load-extra-transformation-functions (filename &optional verbose) "Load an extra filename to tweak pgloader's behavior." (let ((pathname (uiop:parse-native-namestring filename))) (unless (member (pathname-type pathname) *--load-list-file-extension-whitelist* :test #'string=) (error "Unknown lisp file extension: ~s" (pathname-type pathname))) (format t "Loading code from ~s~%" pathname) (load (compile-file pathname :verbose verbose :print verbose)))) (defun main (argv) "Entry point when building an executable image with buildapp" (let ((args (rest argv))) (multiple-value-bind (options arguments) (handler-case (command-line-arguments:process-command-line-options *opt-spec* args) (condition (e) ;; print out the usage, whatever happens here ;; (declare (ignore e)) (format t "~a~%" e) (usage argv :quit t))) (destructuring-bind (&key help version quiet verbose debug logfile list-encodings upgrade-config dry-run on-error-stop ((:load-lisp-file load)) client-min-messages log-min-messages summary root-dir self-upgrade with set field cast type encoding before after regress) options ;; parse the log thresholds (setf *log-min-messages* (log-threshold log-min-messages :quiet quiet :verbose verbose :debug debug) *client-min-messages* (log-threshold client-min-messages :quiet quiet :verbose verbose :debug debug) verbose (member *client-min-messages* '(:info :debug :data)) debug (member *client-min-messages* '(:debug :data)) quiet (and (not verbose) (not debug))) ;; First thing: Self Upgrade? (when self-upgrade (unless *self-upgraded-already* (self-upgrade self-upgrade debug) (let ((*self-upgraded-already* t)) (main argv)))) ;; First care about the root directory where pgloader is supposed to ;; output its data logs and reject files (let ((root-dir-truename (or (probe-file root-dir) (mkdir-or-die root-dir debug)))) (setf *root-dir* (uiop:ensure-directory-pathname root-dir-truename))) ;; Set parameters that come from the environement (init-params-from-environment) ;; Then process options (when debug #+sbcl (format t "sb-impl::*default-external-format* ~s~%" sb-impl::*default-external-format*) (format t "tmpdir: ~s~%" *default-tmpdir*)) (when version (format t "pgloader version ~s~%" *version-string*) (format t "compiled with ~a ~a~%" (lisp-implementation-type) (lisp-implementation-version))) (when help (usage argv)) (when (or help version) (uiop:quit +os-code-success+)) (when list-encodings (show-encodings) (uiop:quit +os-code-success+)) (when upgrade-config (loop for filename in arguments do (handler-case (with-monitor () (pgloader.ini:convert-ini-into-commands filename)) (condition (c) (when debug (invoke-debugger c)) (uiop:quit +os-code-error+)))) (uiop:quit +os-code-success+)) ;; Should we run in dry-run mode? (setf *dry-run* dry-run) ;; Should we stop at first error? (setf *on-error-stop* on-error-stop) ;; load extra lisp code provided for by the user (when load (loop :for filename :in load :do (handler-case (load-extra-transformation-functions filename debug) ((or simple-condition serious-condition) (e) (format *error-output* "Failed to load lisp source file ~s~%" filename) (format *error-output* "~a~%~%" e) (uiop:quit +os-code-error+))))) ;; Now process the arguments (when arguments ;; Start the logs system (let* ((*log-filename* (log-file-name logfile)) (*summary-pathname* (parse-summary-filename summary debug))) (handler-case ;; The handler-case is to catch unhandled exceptions at the ;; top level. ;; ;; The handler-bind below is to be able to offer a ;; meaningful backtrace to the user in case of unexpected ;; conditions being signaled. (handler-bind (((and condition (not (or cli-parsing-error source-definition-error))) #'(lambda (condition) (format *error-output* "KABOOM!~%") (format *error-output* "FATAL error: ~a~%~a~%~%" condition (print-backtrace condition debug))))) (with-monitor () ;; tell the user where to look for interesting things (log-message :log "Main logs in '~a'" (uiop:native-namestring *log-filename*)) (log-message :log "Data errors in '~a'~%" *root-dir*) (cond ((and regress (= 1 (length arguments))) ;; run a regression test (process-regression-test (first arguments))) (regress (log-message :fatal "Regression testing requires a single .load file as input.")) ((= 2 (length arguments)) ;; if there are exactly two arguments in the command ;; line, try and process them as source and target ;; arguments (process-source-and-target (first arguments) (second arguments) type encoding set with field cast before after)) (t ;; process the files ;; other options are not going to be used here (let ((cli-options `(("--type" ,type) ("--encoding" ,encoding) ("--set" ,set) ("--with" ,with) ("--field" ,field) ("--cast" ,cast) ("--before" ,before) ("--after" ,after)))) (loop :for (cli-option-name cli-option-value) :in cli-options :when cli-option-value :do (log-message :fatal "Option ~s is ignored when using a load file" cli-option-name)) ;; when we issued a single error previously, do nothing (unless (remove-if #'null (mapcar #'second cli-options)) (process-command-file arguments))))))) ((or cli-parsing-error source-definition-error) (c) (format *error-output* "~%~a~%~%" c) (let ((lp:*kernel* *monitoring-kernel*)) (lp:end-kernel :wait t)) (uiop:quit +os-code-error-bad-source+)) (condition (c) (format *error-output* "~%What I am doing here?~%~%") (format *error-output* "~a~%~%" c) ;; wait until monitor stops... (format *error-output* "~%Waiting for the monitor thread to complete.~%~%") (let ((lp:*kernel* *monitoring-kernel*)) (lp:end-kernel :wait t)) (uiop:quit +os-code-error+))))) ;; done. (uiop:quit +os-code-success+))))) ;;; ;;; Helper functions to actually do things ;;; (define-condition load-files-not-found-error (error) ((filename-list :initarg :filename-list)) (:report (lambda (err stream) (format stream ;; start lines with 3 spaces because of trivial-backtrace "~{No such file or directory: ~s~^~% ~}" (slot-value err 'filename-list))))) (defun process-command-file (filename-list &key (flush-summary t)) "Process each FILENAME in FILENAME-LIST as a pgloader command file (.load)." (loop :for filename :in filename-list :for truename := (probe-file filename) :unless truename :collect filename :into not-found-list :do (if truename (run-commands truename :start-logger nil :flush-summary flush-summary) (log-message :error "Can not find file: ~s" filename)) :finally (when not-found-list (error 'load-files-not-found-error :filename-list not-found-list)))) (define-condition cli-parsing-error (error) () (:report (lambda (err stream) (declare (ignore err)) (format stream "Could not parse the command line: see above.")))) (defun process-source-and-target (source-string target-string type encoding set with field cast before after) "Given exactly 2 CLI arguments, process them as source and target URIs. Parameters here are meant to be already parsed, see parse-cli-optargs." (let* ((type (handler-case (parse-cli-type type) (condition (e) (log-message :warning "Could not parse --type ~s: ~a" type e)))) (source-uri (handler-case (if type (parse-source-string-for-type type source-string) (parse-source-string source-string)) (condition (e) (log-message :warning "Could not parse source string ~s: ~a" source-string e)))) (type (when (and source-string (typep source-uri 'connection)) (parse-cli-type (conn-type source-uri)))) (target-uri (handler-case (parse-target-string target-string) (condition (e) (log-message :error "Could not parse target string ~s: ~a" target-string e))))) ;; some verbosity about the parsing "magic" (log-message :info " SOURCE: ~s" source-string) (log-message :info "SOURCE URI: ~s" source-uri) (log-message :info " TARGET: ~s" target-string) (log-message :info "TARGET URI: ~s" target-uri) (cond ((and (null source-uri) (null target-uri)) (process-command-file (list source-string target-string))) ((or (null source-string) (null source-uri)) (log-message :fatal "Failed to parse ~s as a source URI." source-string) (log-message :log "You might need to use --type.")) ((or (null target-string) (null target-uri)) (log-message :fatal "Failed to parse ~s as a PostgreSQL database URI." target-string))) (let* ((nb-errors 0) (options (handler-case (parse-cli-options type with) (condition (e) (incf nb-errors) (log-message :error "Could not parse --with ~s:" with) (log-message :error "~a" e)))) (fields (handler-case (parse-cli-fields type field) (condition (e) (incf nb-errors) (log-message :error "Could not parse --fields ~s:" field) (log-message :error "~a" e))))) (destructuring-bind (&key encoding gucs casts before after) (loop :for (keyword option user-string parse-fn) :in `((:encoding "--encoding" ,encoding ,#'parse-cli-encoding) (:gucs "--set" ,set ,#'parse-cli-gucs) (:casts "--cast" ,cast ,#'parse-cli-casts) (:before "--before" ,before ,#'parse-sql-file) (:after "--after" ,after ,#'parse-sql-file)) :append (list keyword (handler-case (funcall parse-fn user-string) (condition (e) (incf nb-errors) (log-message :error "Could not parse ~a ~s: ~a" option user-string e))))) (unless (= 0 nb-errors) (error 'cli-parsing-error)) ;; so, we actually have all the specs for the ;; job on the command line now. (when (and source-uri target-uri (= 0 nb-errors)) (load-data :from source-uri :into target-uri :encoding encoding :options options :gucs gucs :fields fields :casts casts :before before :after after :start-logger nil)))))) ;;; ;;; Helper function to run a given command ;;; (defun run-commands (source &key (start-logger t) (flush-summary t) ((:summary *summary-pathname*) *summary-pathname*) ((:log-filename *log-filename*) *log-filename*) ((:log-min-messages *log-min-messages*) *log-min-messages*) ((:client-min-messages *client-min-messages*) *client-min-messages*)) "SOURCE can be a function, which is run, a list, which is compiled as CL code then run, a pathname containing one or more commands that are parsed then run, or a commands string that is then parsed and each command run." (with-monitor (:start-logger start-logger) (let* ((funcs (typecase source (function (list source)) (list (list (compile nil source))) (pathname (mapcar (lambda (expr) (compile nil expr)) (parse-commands-from-file source))) (t (mapcar (lambda (expr) (compile nil expr)) (if (probe-file source) (parse-commands-from-file source) (parse-commands source))))))) (loop :for func :in funcs :do (funcall func) :do (when flush-summary (flush-summary :reset t)))))) ;;; ;;; Main API to use from outside of pgloader. ;;; (define-condition source-definition-error (error) ((mesg :initarg :mesg :reader source-definition-error-mesg)) (:report (lambda (err stream) (format stream "~a" (source-definition-error-mesg err))))) (defun load-data (&key ((:from source)) ((:into target)) encoding fields options gucs casts before after (start-logger t) (flush-summary t)) "Load data from SOURCE into TARGET." (declare (type connection source) (type pgsql-connection target)) ;; some preliminary checks (when (and (typep source 'csv-connection) (not (typep source 'copy-connection)) (null fields)) (error 'source-definition-error :mesg "This data source requires fields definitions.")) (when (and (typep source 'csv-connection) (null (pgconn-table-name target))) (error 'source-definition-error :mesg "This data source require a table name target.")) (when (and (typep source 'fixed-connection) (null (pgconn-table-name target))) (error 'source-definition-error :mesg "Fixed-width data source require a table name target.")) (with-monitor (:start-logger start-logger) (when (and casts (not (member (type-of source) '(sqlite-connection mysql-connection mssql-connection)))) (log-message :log "Cast rules are ignored for this sources.")) ;; now generates the code for the command (log-message :debug "LOAD DATA FROM ~s" source) (run-commands (process-relative-pathnames (uiop:getcwd) (typecase source (copy-connection (lisp-code-for-loading-from-copy source fields target :encoding (or encoding :default) :gucs gucs :options options :before before :after after)) (fixed-connection (lisp-code-for-loading-from-fixed source fields target :encoding encoding :gucs gucs :options options :before before :after after)) (csv-connection (lisp-code-for-loading-from-csv source fields target :encoding encoding :gucs gucs :options options :before before :after after)) (dbf-connection (lisp-code-for-loading-from-dbf source target :gucs gucs :options options :before before :after after)) (ixf-connection (lisp-code-for-loading-from-ixf source target :gucs gucs :options options :before before :after after)) (sqlite-connection (lisp-code-for-loading-from-sqlite source target :gucs gucs :casts casts :options options :before before :after after)) (mysql-connection (lisp-code-for-loading-from-mysql source target :gucs gucs :casts casts :options options :before before :after after)) (mssql-connection (lisp-code-for-loading-from-mssql source target :gucs gucs :casts casts :options options :before before :after after)))) :start-logger nil :flush-summary flush-summary))) pgloader/src/monkey/0000755000175000017500000000000013120302501014615 5ustar vagrantvagrantpgloader/src/monkey/bind.lisp0000644000175000017500000000036613047375022016447 0ustar vagrantvagrant;;; ;;; Monkey patch metaband-bind macro to ignore nil: ;;; ;;; https://github.com/gwkkwg/metabang-bind/issues/9 ;;; (in-package #:metabang.bind) (defun var-ignorable-p (var) (and (symbolp var) (string= (symbol-name var) (symbol-name '_)))) pgloader/src/monkey/mssql.lisp0000644000175000017500000001267713120302501016662 0ustar vagrantvagrant;;; ;;; Monkey patch mssql to add missing bits, will cook a patch later. ;;; (in-package :mssql) ;; ;; See freetds/include/freetds/proto.h for reference ;; (defcenum %syb-value-type (:syb-char 47) (:syb-varchar 39) (:syb-intn 38) (:syb-int1 48) (:syb-int2 52) (:syb-int4 56) (:syb-int8 127) (:syb-flt8 62) (:syb-datetime 61) (:syb-bit 50) (:syb-text 35) (:syb-image 34) (:syb-money4 122) (:syb-money 60) (:syb-datetime4 58) (:syb-real 59) (:syb-binary 45) (:syb-varbinary 37) (:syb-bitn 104) (:syb-numeric 108) (:syb-decimal 106) (:syb-fltn 109) (:syb-moneyn 110) (:syb-datetimn 111) ;; MS only types (:syb-nvarchar 103) ;(:syb-int8 127) (:xsy-bchar 175) (:xsy-bvarchar 167) (:xsy-bnvarchar 231) (:xsy-bnchar 239) (:xsy-bvarbinary 165) (:xsy-bbinary 173) (:syb-unique 36) (:syb-variant 98) (:syb-msudt 240) (:syb-msxml 241) (:syb-msdate 40) (:syb-mstime 41) (:syb-msdatetime2 42) (:syb-msdatetimeoffset 43) ;; Sybase only types (:syb-longbinary 225) (:syb-uint1 64) (:syb-uint2 65) (:syb-uint4 66) (:syb-uint8 67) (:syb-blob 36) (:syb-boundary 104) (:syb-date 49) (:syb-daten 123) (:syb-5int8 191) (:syb-interval 46) (:syb-longchar 175) (:syb-sensitivity 103) (:syb-sint1 176) (:syb-time 51) (:syb-timen 147) (:syb-uintn 68) (:syb-unitext 174) (:syb-xml 163) ) (defun unsigned-to-signed (byte n) (declare (type fixnum n) (type unsigned-byte byte)) (logior byte (- (mask-field (byte 1 (1- (* n 8))) byte)))) (defun sysdb-data-to-lisp (%dbproc data type len) (let ((syb-type (foreign-enum-keyword '%syb-value-type type))) (case syb-type ;; we accept emtpy string (len is 0) ((:syb-char :syb-varchar :syb-text :syb-msxml) (foreign-string-to-lisp data :count len)) (otherwise ;; other types must have a non-zero len now, or we just return nil. (if (> len 0) (case syb-type ((:syb-bit :syb-bitn) (mem-ref data :int)) (:syb-int1 (unsigned-to-signed (mem-ref data :unsigned-int) 1)) (:syb-int2 (unsigned-to-signed (mem-ref data :unsigned-int) 2)) (:syb-int4 (unsigned-to-signed (mem-ref data :unsigned-int) 4)) (:syb-int8 (mem-ref data :int8)) (:syb-flt8 (mem-ref data :double)) ((:syb-datetime :syb-datetime4 :syb-msdate) (with-foreign-pointer (%buf +numeric-buf-sz+) (let ((count (%dbconvert %dbproc type data -1 :syb-char %buf +numeric-buf-sz+))) (foreign-string-to-lisp %buf :count count)))) ((:syb-money :syb-money4 :syb-decimal :syb-numeric) (with-foreign-pointer (%buf +numeric-buf-sz+) (let ((count (%dbconvert %dbproc type data -1 :syb-char %buf +numeric-buf-sz+))) (parse-number:parse-number (foreign-string-to-lisp %buf :count count ))))) ((:syb-image :syb-binary :syb-varbinary :syb-blob) (let ((vector (make-array len :element-type '(unsigned-byte 8)))) (dotimes (i len) (setf (aref vector i) (mem-ref data :uchar i))) vector)) (otherwise (error "not supported type ~A" (foreign-enum-keyword '%syb-value-type type))))))))) ;; (defconstant +dbbuffer+ 14) ;; (define-sybdb-function ("dbsetopt" %dbsetopt) %RETCODE ;; (dbproc %DBPROCESS) ;; (option :int) ;; (char-param :pointer) ;; (int-param :int)) (defun map-query-results (query &key row-fn (connection *database*)) "Map the query results through the map-fn function." (let ((%dbproc (slot-value connection 'dbproc)) (cffi:*default-foreign-encoding* (slot-value connection 'external-format))) (with-foreign-string (%query query) (%dbcmd %dbproc %query)) (%dbsqlexec %dbproc) (unwind-protect (unless (= +no-more-results+ (%dbresults %dbproc)) (loop :for rtc := (%dbnextrow %dbproc) :until (= rtc +no-more-rows+) :do (let ((row (make-array (%dbnumcols %dbproc)))) (loop :for i :from 1 :to (%dbnumcols %dbproc) :for value := (restart-case (sysdb-data-to-lisp %dbproc (%dbdata %dbproc i) (%dbcoltype %dbproc i) (%dbdatlen %dbproc i)) (use-nil () :report "skip this column's value and use nil instead." nil) (use-empty-string () :report "skip this column's value and use empty-string instead." "") (use-value (value) value)) :do (setf (aref row (- i 1)) value)) (funcall row-fn row)))) (%dbcancel %dbproc)))) pgloader/src/utils/0000755000175000017500000000000013127307525014475 5ustar vagrantvagrantpgloader/src/utils/alter-table.lisp0000644000175000017500000001133713054341516017564 0ustar vagrantvagrant;;; ;;; ALTER TABLE allows pgloader to apply transformations on the catalog ;;; retrieved before applying it to PostgreSQL: SET SCHEMA, RENAME, etc. ;;; (in-package :pgloader.catalog) ;;; ;;; Support for the INCLUDING and EXCLUDING clauses ;;; (defstruct string-match-rule target) (defstruct regex-match-rule target) (defgeneric matches (rule string) (:documentation "Return non-nul if the STRING matches given RULE.") (:method ((rule string-match-rule) string) (string= (string-match-rule-target rule) string)) (:method ((rule regex-match-rule) string) (cl-ppcre:scan (regex-match-rule-target rule) string))) #| See src/parsers/command-alter-table.lisp (make-match-rule :type :regex :target "_list$" :action #'pgloader.schema::alter-table-set-schema :args (list "mv")) |# (defstruct match-rule rule schema action args) (defgeneric alter-table (object alter-table-rule-list)) (defmethod alter-table ((catalog catalog) alter-table-rule-list) "Apply ALTER-TABLE-RULE-LIST to all schema of CATALOG." (loop :for schema :in (catalog-schema-list catalog) :do (alter-table schema alter-table-rule-list))) (defmethod alter-table ((schema schema) alter-table-rule-list) "Apply ALTER-TABLE-RULE-LIST to all tables and views of SCHEMA." (loop :for table :in (append (schema-table-list schema) (schema-view-list schema)) :do (alter-table table alter-table-rule-list))) (defmethod alter-table ((table table) alter-table-rule-list) "Apply ALTER-TABLE-RULE-LIST to TABLE." ;; ;; alter-table-rule-list is a list of set of rules, within each set we ;; only apply the first rules that matches. ;; (loop :for rule-list :in alter-table-rule-list :do (let ((match-rule (loop :for match-rule :in rule-list :thereis (when (rule-matches match-rule table) match-rule)))) (when match-rule (apply (match-rule-action match-rule) (list* table (match-rule-args match-rule))))))) ;;; ;;; ALTER TABLE actions: functions that take a table and arguments and apply ;;; the altering action wanted to them. ;;; (defun alter-table-set-schema (table schema-name) "Alter the schema of TABLE, set SCHEMA-NAME instead." (let* ((catalog (schema-catalog (table-schema table))) (schema (maybe-add-schema catalog schema-name))) (setf (table-schema table) schema))) (defun alter-table-rename (table new-name) "Alter the name of TABLE to NEW-NAME." (setf (table-name table) new-name)) (defun alter-table-set-storage-parameters (table parameters) "Alter the storage parameters of TABLE." (setf (table-storage-parameter-list table) parameters)) ;;; ;;; Apply the match rules as given by the parser to a table name. ;;; (defgeneric rule-matches (match-rule object) (:documentation "Returns non-nill when MATCH-RULE matches with OBJECT.")) (defmethod rule-matches ((match-rule match-rule) (table table)) "Return non-nil when TABLE matches given MATCH-RULE." (let ((schema-name (schema-source-name (table-schema table))) (rule-schema (match-rule-schema match-rule)) (table-name (table-source-name table))) (when (or (null rule-schema) (and rule-schema (string= rule-schema schema-name))) (matches (match-rule-rule match-rule) table-name)))) (defmethod rule-matches ((match-rule match-rule) (schema schema)) "Return non-nil when TABLE matches given MATCH-RULE." (let ((schema-name (schema-source-name schema))) (matches (match-rule-rule match-rule) schema-name))) ;;; ;;; Also implement ALTER SCHEMA support here, it's using the same underlying ;;; structure. ;;; (defgeneric alter-schema (object alter-schema-rule-list)) (defmethod alter-schema ((catalog catalog) alter-schema-rule-list) "Apply ALTER-SCHEMA-RULE-LIST to all schema of CATALOG." (loop :for schema :in (catalog-schema-list catalog) :do (alter-schema schema alter-schema-rule-list))) (defmethod alter-schema ((schema schema) alter-schema-rule-list) "Apply ALTER-SCHEMA-RULE-LIST to SCHEMA." ;; ;; alter-schema-rule-list is a list of set of rules, within each set we ;; only apply the first rules that matches. ;; (loop :for rule-list :in alter-schema-rule-list :do (let ((match-rule (loop :for match-rule :in rule-list :thereis (when (rule-matches match-rule schema) match-rule)))) (when match-rule (apply (match-rule-action match-rule) (list* schema (match-rule-args match-rule))))))) (defun alter-schema-rename (schema new-name) "Alter the name fo the given schema to new-name." (setf (schema-name schema) new-name)) pgloader/src/utils/utils.lisp0000644000175000017500000000604313124715530016525 0ustar vagrantvagrant;;; ;;; Random utilities ;;; (in-package :pgloader.utils) ;;; ;;; Camel Case converter ;;; (defun camelCase-to-colname (string) "Transform input STRING into a suitable column name. lahmanID lahman_id playerID player_id birthYear birth_year" (coerce (loop for first = t then nil for char across string for previous-upper-p = nil then char-upper-p for char-upper-p = (eq char (char-upcase char)) for new-word = (and (not first) char-upper-p (not previous-upper-p)) when (and new-word (not (char= char #\_))) collect #\_ collect (char-downcase char)) 'string)) ;;; ;;; Unquote SQLite default values, might be useful elsewhere ;;; (defun unquote (string &optional (quote #\') (escape #\\)) "Given '0', returns 0." (declare (type (or null simple-string) string)) (when string (let ((l (length string))) (cond ((and (<= 2 l) ; "string" (char= quote (aref string 0) (aref string (1- l)))) (subseq string 1 (1- l))) ((and (<= 4 l) ; \"string\" (char= escape (aref string 0) (aref string (- l 2))) (char= quote (aref string 1) (aref string (- l 1)))) (subseq string 2 (- l 2))) (t string))))) ;;; ;;; Process ~/ references at run-time (not at compile time!) ;;; (defun expand-user-homedir-pathname (namestring) "Expand NAMESTRING replacing leading ~ with (user-homedir-pathname)" (typecase namestring (pathname namestring) (string (cond ((or (string= "~" namestring) (string= "~/" namestring)) (user-homedir-pathname)) ((and (<= 2 (length namestring)) (char= #\~ (aref namestring 0)) (char= #\/ (aref namestring 1))) (uiop:merge-pathnames* (uiop:parse-unix-namestring (subseq namestring 2)) (user-homedir-pathname))) (t (uiop:parse-unix-namestring namestring)))))) ;;; ;;; For log messages ;;; (defun pretty-print-bytes (bytes &key (unit "B")) "Return a string to reprensent bytes in human readable format, with units" (let ((bytes (or bytes 0))) (loop :for multiple :in '("T" "G" "M" "k") :for power :in '(40 30 20 10 1) :for limit := (expt 2 power) :until (<= limit bytes) :finally (return (format nil "~5,1f ~a~a" (/ bytes limit) multiple unit))))) ;;; ;;; Defining ranges and partitions. ;;; (defun split-range (min max &optional (count *rows-per-range*)) "Split the range from MIN to MAX into sub-ranges of COUNT elements." (loop :for i := min :then j :for j := (+ i count) :while (< i max) :collect (list i (min j max)))) (defun distribute (list-of-ranges count) "Split a list of ranges into COUNT sublists." (let ((result (make-array count :element-type 'list :initial-element nil))) (loop :for i :from 0 :for range :in list-of-ranges :do (push range (aref result (mod i count)))) (map 'list #'reverse result ))) pgloader/src/utils/batch.lisp0000644000175000017500000000371313124470366016454 0ustar vagrantvagrant;;; ;;; Tools to handle internal queueing, using lparallel.queue ;;; (in-package :pgloader.batch) ;;; ;;; The pgloader architectures uses a reader thread and a writer thread. The ;;; reader fills in batches of data from the source of data, and the writer ;;; pushes the data down to PostgreSQL using the COPY protocol. ;;; (defstruct (batch (:constructor make-batch (&key (max-count (init-batch-max-count)) &aux (data (make-array max-count :element-type '(simple-array (unsigned-byte 8))))))) (start (get-internal-real-time) :type fixnum) (data nil :type array) (count 0 :type fixnum) (max-count 0 :type fixnum) (bytes 0 :type fixnum)) ;;; ;;; The simplest way to avoid all batches being sent at the same time to ;;; PostgreSQL is to make them of different sizes. Here we tweak the batch ;;; size from *copy-batch-rows* to that effect. ;;; (defun init-batch-max-count (&optional (batch-rows *copy-batch-rows*)) "Return a number between 0.7 and 1.3 times batch-rows." ;; 0.7 < 0.7 + (random 0.6) < 1.3 (truncate (* batch-rows (+ 0.7 (random 0.6))))) (defun batch-oversized-p (batch) "Return a generalized boolean that is true only when BATCH is considered over-sized when its size in BYTES is compared *copy-batch-size*." (and *copy-batch-size* ; defaults to nil (<= *copy-batch-size* (batch-bytes batch)))) (defun batch-full-p (batch) (or (= (batch-count batch) (batch-max-count batch)) (batch-oversized-p batch))) (defun push-row (batch row &optional row-bytes) (with-slots (data count bytes) batch (setf (aref data count) row) (incf count) (when row-bytes (incf bytes row-bytes)))) pgloader/src/utils/archive.lisp0000644000175000017500000001206413121236264017005 0ustar vagrantvagrant;;; ;;; Tools to handle archive files, like ZIP of CSV files ;;; (in-package #:pgloader.archive) (defparameter *supported-archive-types* '(:tar :tgz :gz :zip)) (defparameter *http-buffer-size* 4096 "4k ought to be enough for everyone") (defun archivep (archive-file) "Return non-nil when the ARCHIVE-FILE is something we know how to expand." (member (archive-type archive-file) *supported-archive-types*)) (defun http-fetch-file (url &key (tmpdir *default-tmpdir*)) "Download a file from URL into TMPDIR." ;; This operation could take some time, make it so that the user knows ;; it's happening for him. (log-message :log "Fetching '~a'" url) (ensure-directories-exist tmpdir) (let ((archive-filename (make-pathname :defaults tmpdir :name (pathname-name url) :type (pathname-type url)))) (multiple-value-bind (http-stream status-code headers uri stream should-close status) (drakma:http-request url :force-binary t :want-stream t) (declare (ignore headers uri stream)) (when (not (= 200 status-code)) (log-message :fatal "HTTP Error ~a: ~a" status-code status) (error status)) (let* ((source-stream (flexi-streams:flexi-stream-stream http-stream)) (buffer (make-array *http-buffer-size* :element-type '(unsigned-byte 8)))) (with-open-file (archive-stream archive-filename :direction :output :element-type '(unsigned-byte 8) :if-exists :supersede :if-does-not-exist :create) (loop :for bytes := (read-sequence buffer source-stream) :do (write-sequence buffer archive-stream :end bytes) :until (< bytes *http-buffer-size*))) (when should-close (close source-stream)))) ;; return the pathname where we just downloaded the file archive-filename)) (defun archive-type (archive-file) "Return one of :tar, :gz or :zip depending on ARCHIVE-FILE pathname extension." (multiple-value-bind (abs paths filename no-path-p) (uiop:split-unix-namestring-directory-components (uiop:native-namestring archive-file)) (declare (ignore abs paths no-path-p)) (let ((dotted-parts (reverse (sq:split-sequence #\. filename)))) (destructuring-bind (extension name-or-ext &rest parts) dotted-parts (declare (ignore parts)) (if (string-equal "tar" name-or-ext) :tar (intern (string-upcase extension) :keyword)))))) (defun unzip (archive-file expand-directory) "Unzip an archive" ;; TODO: fallback to the following if the unzip command is not found ;; (zip:unzip archive-file expand-directory :if-exists :supersede) (let ((command (format nil "unzip -o ~s -d ~s" (uiop:native-namestring archive-file) (uiop:native-namestring expand-directory)))) (log-message :notice "~a" command) (uiop:run-program command))) (defun gunzip (archive-file expand-directory) "Unzip a gzip formated archive" (let ((command (format nil "gunzip -c ~s > ~s" (uiop:native-namestring archive-file) (uiop:native-namestring (pathname-name archive-file)))) (cwd (uiop:getcwd))) (log-message :notice "~a" command) (unwind-protect (progn (uiop:chdir expand-directory) (uiop:run-program command)) (uiop:chdir cwd)))) (defun untar (archive-file expand-directory) "Untar an archive" (let ((command (format nil "tar xf ~s -C ~s" (uiop:native-namestring archive-file) (uiop:native-namestring expand-directory)))) (log-message :notice "~a" command) (uiop:run-program command))) (defun expand-archive (archive-file &key (tmpdir *default-tmpdir*)) "Expand given ARCHIVE-FILE in TMPDIR/(pathname-name ARCHIVE-FILE). Return the pathname where we did expand the archive file." ;; This operation could take some time, force a message out about it. (log-message :log "Extracting files from archive '~a'" archive-file) (unless (probe-file archive-file) (error "File does not exists: '~a'." archive-file)) (let* ((archive-name (pathname-name archive-file)) (archive-type (archive-type archive-file)) (expand-directory (fad:pathname-as-directory (merge-pathnames archive-name tmpdir)))) (ensure-directories-exist expand-directory) (ecase archive-type (:tar (untar archive-file expand-directory)) (:tgz (untar archive-file expand-directory)) (:gz (gunzip archive-file expand-directory)) (:zip (unzip archive-file expand-directory))) ;; return the pathname where we did expand the archive expand-directory)) (defun get-matching-filenames (directory regex) "Apply given REGEXP to the DIRECTORY contents and return the list of matching files." (let ((matches nil) (start (length (namestring directory)))) (flet ((push-matches (pathname) (when (cl-ppcre:scan regex (namestring pathname) :start start) (push pathname matches)))) (fad:walk-directory directory #'push-matches)) (nreverse matches))) pgloader/src/utils/monitor.lisp0000644000175000017500000003003213124734132017046 0ustar vagrantvagrant;;; ;;; Central thread that deals with monitoring ;;; ;;; Manages the logging from a single thread while another bunch of threads ;;; are doing the data processing and loading, and maintain states. ;;; ;;; The public API is the macro with-monitor and the function log-message, ;;; that shares its signature with cl-log:log-message so as to be a drop-in ;;; replacement. The only expected difference is for ;;; pgloader.monitor:log-message to send the message to a single central ;;; thread where the logging happen. ;;; (in-package :pgloader.monitor) (defvar *monitoring-kernel* nil "Internal lparallel kernel to manage the separate monitor thread.") (defvar *monitoring-queue* nil "Internal lparallel queue where to send and receive messages from.") (defvar *monitoring-channel* nil "Internal lparallel channel.") (defvar *sections* '(:pre nil :data nil :post nil) "plist of load sections: :pre, :data and :post.") ;;; ;;; The external monitor API, with messages ;;; (defstruct start start-logger) (defstruct stop stop-logger) (defstruct report-summary reset) (defstruct noop) (defstruct log-message category description arguments) (defstruct new-label section label dbname) (defstruct update-stats section label read rows errs secs rs ws start stop) (defstruct bad-row section label condition data) (defun log-message (category description &rest arguments) "Send given message into our monitoring queue for processing." (when (cl-log::category-messengers category) (send-event (make-log-message :category category :description description :arguments arguments)))) (defun new-label (section label &optional dbname) "Send an event to create a new LABEL for registering a shared state under SECTION." (send-event (make-new-label :section section :label label :dbname dbname))) (defun update-stats (section label &key read rows errs secs rs ws start stop) "Send an event to update stats for given SECTION and LABEL." (send-event (make-update-stats :section section :label label :read read :rows rows :errs errs :secs secs :rs rs :ws ws :start start :stop stop))) (defun process-bad-row (table condition data) "Send an event to log the bad row DATA in the reject and log files for given TABLE-NAME (a label in section :data), for reason found in CONDITION." (send-event (make-bad-row :section :data :label table :condition condition :data data))) (defun flush-summary (&key reset) (send-event (make-report-summary :reset reset))) ;;; ;;; Easier API to manage statistics collection and state updates ;;; (defmacro with-stats-collection ((table-name &key (section :data) dbname use-result-as-read use-result-as-rows) &body forms) "Measure time spent in running BODY into STATE, accounting the seconds to given DBNAME and TABLE-NAME" (let ((result (gensym "result")) (secs (gensym "secs"))) `(prog2 (new-label ,section ,table-name ,dbname) (multiple-value-bind (,result ,secs) (timing ,@forms) (cond ((and ,use-result-as-read ,use-result-as-rows) (update-stats ,section ,table-name :read ,result :rows ,result :secs ,secs)) (,use-result-as-read (update-stats ,section ,table-name :read ,result :secs ,secs)) (,use-result-as-rows (update-stats ,section ,table-name :rows ,result :secs ,secs)) (t (update-stats ,section ,table-name :secs ,secs))) ,result)))) ;;; ;;; Now, the monitor thread management ;;; (defun send-event (event) "Add a new event to be processed by the monitor." (assert (not (null *monitoring-queue*))) (lq:push-queue event *monitoring-queue*)) (defun start-monitor (&key (start-logger t) ((:queue *monitoring-queue*) *monitoring-queue*) ((:log-filename *log-filename*) *log-filename*) ((:log-min-messages *log-min-messages*) *log-min-messages*) ((:client-min-messages *client-min-messages*) *client-min-messages*)) "Start the monitor and its logger." (let* ((bindings `((*log-filename* . ,*log-filename*) (*log-min-messages* . ,*log-min-messages*) (*client-min-messages* . ,*client-min-messages*) (*monitoring-queue* . ,*monitoring-queue*) (*error-output* . ,*error-output*) (*root-dir* . ,*root-dir*) (*standard-output* . ,*standard-output*) (*summary-pathname* . ,*summary-pathname*) (*sections* . ',*sections*))) (kernel (lp:make-kernel 1 :bindings bindings)) (lparallel:*kernel* kernel)) ;; make our kernel and channel visible from the outside (setf *monitoring-kernel* kernel *monitoring-channel* (lp:make-channel)) (lp:submit-task *monitoring-channel* #'monitor *monitoring-queue*) (send-event (make-start :start-logger start-logger)) *monitoring-channel*)) (defun stop-monitor (&key (channel *monitoring-channel*) (stop-logger t)) "Stop the current monitor task." (send-event (make-stop :stop-logger stop-logger)) (lp:receive-result channel)) (defmacro with-monitor ((&key (start-logger t)) &body body) "Start and stop the monitor around BODY code. The monitor is responsible for processing logs into a central logfile" `(let ((*sections* (list :pre (make-pgstate) :data (make-pgstate) :post (make-pgstate)))) (if ,start-logger (let* ((*monitoring-queue* (lq:make-queue)) (*monitoring-channel* (start-monitor :start-logger ,start-logger))) (unwind-protect (progn ,@body) (stop-monitor :channel *monitoring-channel* :stop-logger ,start-logger))) ;; logger has already been started (progn ,@body)))) (defun monitor (queue) "Receives and process messages from *monitoring-queue*." ;; process messages from the queue (loop :with start-time := (get-internal-real-time) :for event := (multiple-value-bind (event available) (lq:try-pop-queue queue) (if available event (make-noop))) :do (typecase event (start (when (start-start-logger event) (pgloader.logs:start-logger)) (cl-log:log-message :info "Starting monitor")) (stop (cl-log:log-message :info "Stopping monitor") ;; time to shut down the logger? (when (stop-stop-logger event) (pgloader.logs:stop-logger))) (report-summary (cl-log:log-message :log "report summary ~@[reset~]" (report-summary-reset event)) (report-current-summary start-time) (when (report-summary-reset event) (setf *sections* (list :pre (make-pgstate) :data (make-pgstate) :post (make-pgstate))))) (noop (sleep 0.2)) ; avoid buzy looping (log-message ;; cl-log:log-message is a macro, we can't use apply ;; here, so we need to break a level of abstraction (let* ((*print-circle* t) (mesg (if (log-message-arguments event) (format nil "~{~}" (log-message-description event) (log-message-arguments event)) (log-message-description event)))) (cl-log:log-message (log-message-category event) "~a" mesg))) (new-label (let ((label (pgstate-new-label (getf *sections* (new-label-section event)) (new-label-label event)))) (when (eq :data (new-label-section event)) (pgtable-initialize-reject-files label (new-label-dbname event))))) (update-stats (let* ((pgstate (getf *sections* (update-stats-section event))) (label (update-stats-label event)) (table (pgstate-new-label pgstate label))) (pgstate-incf pgstate label :read (update-stats-read event) :rows (update-stats-rows event) :secs (update-stats-secs event) :errs (update-stats-errs event) :rs (update-stats-rs event) :ws (update-stats-ws event)) (when (update-stats-start event) (log-message :debug "start ~a ~30t ~a" (pgloader.catalog:format-table-name label) (update-stats-start event)) (setf (pgtable-start table) (update-stats-start event))) ;; each PostgreSQL writer thread will send a stop even, here ;; we only keep the latest one. (when (and (update-stats-stop event) (or (null (pgtable-stop table)) (< (pgtable-stop table) (update-stats-stop event)))) (setf (pgtable-stop table) (update-stats-stop event)) (let ((secs (elapsed-time-since (pgtable-start table) (pgtable-stop table)))) (setf (pgtable-secs table) secs) (log-message :debug " stop ~a ~30t | ~a .. ~a = ~a" (pgloader.catalog:format-table-name label) (pgtable-start table) (pgtable-stop table) secs))))) (bad-row (%process-bad-row (bad-row-label event) (bad-row-condition event) (bad-row-data event)))) :until (typep event 'stop))) (defun report-current-summary (start-time) "Print out the current summary." (let* ((summary-stream (when *summary-pathname* (open *summary-pathname* :direction :output :if-exists :rename :if-does-not-exist :create))) (*report-stream* (or summary-stream *standard-output*))) (report-full-summary "Total import time" *sections* (elapsed-time-since start-time)) (when summary-stream (close summary-stream)))) ;;; ;;; Internal utils ;;; (defun elapsed-time-since (start &optional (end (get-internal-real-time))) "Return how many seconds ticked between START and now" (let ((end (or end (get-internal-real-time)))) (coerce (/ (- end start) internal-time-units-per-second) 'double-float))) ;;; ;;; Timing Macro ;;; (defmacro timing (&body forms) "return both how much real time was spend in body and its result" (let ((start (gensym)) (end (gensym)) (result (gensym))) `(let* ((,start (get-internal-real-time)) (,result (progn ,@forms)) (,end (get-internal-real-time))) (values ,result (/ (- ,end ,start) internal-time-units-per-second))))) pgloader/src/utils/charsets.lisp0000644000175000017500000002722413047375022017207 0ustar vagrantvagrant(in-package #:pgloader.utils) (defparameter *ccl-describe-character-encodings* ":CP936 [Aliases: :GBK :MS936 :WINDOWS-936] An 8-bit, variable-length character encoding in which character code points in the range #x00-#x80 can be encoded in a single octet; characters with larger code values can be encoded in 2 bytes. Alias :gbk :ms936 :windows-936 :EUC-JP [Aliases: :EUCJP] An 8-bit, variable-length character encoding in which character code points in the range #x00-#x7f can be encoded in a single octet; characters with larger code values can be encoded in 2 to 3 bytes. :GB2312 [Aliases: :GB2312-80 :GB2312-1980 :EUC-CN :EUCCN] An 8-bit, variable-length character encoding in which character code points in the range #x00-#x80 can be encoded in a single octet; characters with larger code values can be encoded in 2 bytes. Alias :gb2312-80 :gb2312-1980 :euc-cn :euccn :ISO-8859-1 [Aliases: :ISO-LATIN-1 :LATIN-1 NIL :ISO_8859-1 :LATIN1 :L1 :IBM819 :CP819 :CSISOLATIN1] An 8-bit, fixed-width character encoding in which all character codes map to their Unicode equivalents. Intended to support most characters used in most Western European languages. :ISO-8859-10 [Aliases: :ISO-LATIN-6 :LATIN-6 :ISO_8859-10 :LATIN6 :CSISOLATIN6 :ISO-IR-157] An 8-bit, fixed-width character encoding in which codes #x00-#x9f map to their Unicode equivalents and other codes map to other Unicode character values. Intended to provide most characters found in Nordic alphabets. :ISO-8859-11 An 8-bit, fixed-width character encoding in which codes #x00-#x9f map to their Unicode equivalents and other codes map to other Unicode character values. Intended to provide most characters found the Thai alphabet. :ISO-8859-13 An 8-bit, fixed-width character encoding in which codes #x00-#x9f map to their Unicode equivalents and other codes map to other Unicode character values. Intended to provide most characters found in Baltic alphabets. :ISO-8859-14 [Aliases: :ISO-LATIN-8 :LATIN-8 :ISO_8859-14 :ISO-IR-199 :LATIN8 :L8 :ISO-CELTIC] An 8-bit, fixed-width character encoding in which codes #x00-#x9f map to their Unicode equivalents and other codes map to other Unicode character values. Intended to provide most characters found in Celtic languages. :ISO-8859-15 [Aliases: :ISO-LATIN-9 :LATIN-9 :ISO_8859-15 :LATIN9] An 8-bit, fixed-width character encoding in which codes #x00-#x9f map to their Unicode equivalents and other codes map to other Unicode character values. Intended to provide most characters found in Western European languages (including the Euro sign and some other characters missing from ISO-8859-1. :ISO-8859-16 [Aliases: :ISO-LATIN-10 :LATIN-10 :ISO_8859-16 :LATIN10 :L1 :ISO-IR-226] An 8-bit, fixed-width character encoding in which codes #x00-#x9f map to their Unicode equivalents and other codes map to other Unicode character values. Intended to provide most characters found in Southeast European languages. :ISO-8859-2 [Aliases: :ISO-LATIN-2 :LATIN-2 :ISO_8859-2 :LATIN2 :L2 :CSISOLATIN2] An 8-bit, fixed-width character encoding in which codes #x00-#x9f map to their Unicode equivalents and other codes map to other Unicode character values. Intended to provide most characters found in most languages used in Central/Eastern Europe. :ISO-8859-3 [Aliases: :ISO-LATIN-3 :LATIN-3 :ISO_8859-3 :LATIN3 :L3 :CSISOLATIN3] An 8-bit, fixed-width character encoding in which codes #x00-#x9f map to their Unicode equivalents and other codes map to other Unicode character values. Intended to provide most characters found in most languages used in Southern Europe. :ISO-8859-4 [Aliases: :ISO-LATIN-4 :LATIN-4 :ISO_8859-4 :LATIN4 :L4 :CSISOLATIN4] An 8-bit, fixed-width character encoding in which codes #x00-#x9f map to their Unicode equivalents and other codes map to other Unicode character values. Intended to provide most characters found in most languages used in Northern Europe. :ISO-8859-5 [Aliases: :ISO_8859-5 :CYRILLIC :CSISOLATINCYRILLIC :ISO-IR-144] An 8-bit, fixed-width character encoding in which codes #x00-#x9f map to their Unicode equivalents and other codes map to other Unicode character values. Intended to provide most characters found in the Cyrillic alphabet. :ISO-8859-6 [Aliases: :ISO_8859-6 :ARABIC :CSISOLATINARABIC :ISO-IR-127] An 8-bit, fixed-width character encoding in which codes #x00-#x9f map to their Unicode equivalents and other codes map to other Unicode character values. Intended to provide most characters found in the Arabic alphabet. :ISO-8859-7 [Aliases: :ISO_8859-7 :GREEK :GREEK8 :CSISOLATINGREEK :ISO-IR-126 :ELOT_928 :ECMA-118] An 8-bit, fixed-width character encoding in which codes #x00-#x9f map to their Unicode equivalents and other codes map to other Unicode character values. Intended to provide most characters found in the Greek alphabet. :ISO-8859-8 [Aliases: :ISO_8859-8 :HEBREW :CSISOLATINHEBREW :ISO-IR-138] An 8-bit, fixed-width character encoding in which codes #x00-#x9f map to their Unicode equivalents and other codes map to other Unicode character values. Intended to provide most characters found in the Hebrew alphabet. :ISO-8859-9 [Aliases: :ISO-LATIN-5 :LATIN-5 :ISO_8859-9 :LATIN5 :CSISOLATIN5 :ISO-IR-148] An 8-bit, fixed-width character encoding in which codes #x00-#xcf map to their Unicode equivalents and other codes map to other Unicode character values. Intended to provide most characters found in the Turkish alphabet. :MACINTOSH [Aliases: :MACOS-ROMAN :MACOSROMAN :MAC-ROMAN :MACROMAN] An 8-bit, fixed-width character encoding in which codes #x00-#x7f map to their Unicode equivalents and other codes map to other Unicode character values. Traditionally used on Classic MacOS to encode characters used in western languages. :UCS-2 A 16-bit, fixed-length encoding in which characters with CHAR-CODEs less than #x10000 can be encoded in a single 16-bit word. The endianness of the encoded data is indicated by the endianness of a byte-order-mark character (#u+feff) prepended to the data; in the absence of such a character on input, the data is assumed to be in big-endian order. :UCS-2BE A 16-bit, fixed-length encoding in which characters with CHAR-CODEs less than #x10000 can be encoded in a single 16-bit big-endian word. The encoded data is implicitly big-endian; byte-order-mark characters are not interpreted on input or prepended to output. :UCS-2LE A 16-bit, fixed-length encoding in which characters with CHAR-CODEs less than #x10000 can be encoded in a single 16-bit little-endian word. The encoded data is implicitly little-endian; byte-order-mark characters are not interpreted on input or prepended to output. :US-ASCII [Aliases: :CSASCII :CP637 :IBM637 :US :ISO646-US :ASCII :ISO-IR-6] A 7-bit, fixed-width character encoding in which all character codes map to their Unicode equivalents. :UTF-16 A 16-bit, variable-length encoding in which characters with CHAR-CODEs less than #x10000 can be encoded in a single 16-bit word and characters with larger codes can be encoded in a pair of 16-bit words. The endianness of the encoded data is indicated by the endianness of a byte-order-mark character (#u+feff) prepended to the data; in the absence of such a character on input, the data is assumed to be in big-endian order. Output is written in native byte-order with a leading byte-order mark. :UTF-16BE A 16-bit, variable-length encoding in which characters with CHAR-CODEs less than #x10000 can be encoded in a single 16-bit big-endian word and characters with larger codes can be encoded in a pair of 16-bit big-endian words. The endianness of the encoded data is implicit in the encoding; byte-order-mark characters are not interpreted on input or prepended to output. :UTF-16LE A 16-bit, variable-length encoding in which characters with CHAR-CODEs less than #x10000 can be encoded in a single 16-bit little-endian word and characters with larger codes can be encoded in a pair of 16-bit little-endian words. The endianness of the encoded data is implicit in the encoding; byte-order-mark characters are not interpreted on input or prepended to output. :UTF-32 [Aliases: :UCS-4] A 32-bit, fixed-length encoding in which all Unicode characters can be encoded in a single 32-bit word. The endianness of the encoded data is indicated by the endianness of a byte-order-mark character (#u+feff) prepended to the data; in the absence of such a character on input, input data is assumed to be in big-endian order. Output is written in native byte order with a leading byte-order mark. :UTF-32BE [Aliases: :UCS-4BE] A 32-bit, fixed-length encoding in which all Unicode characters encoded in a single 32-bit word. The encoded data is implicitly big-endian; byte-order-mark characters are not interpreted on input or prepended to output. :UTF-32LE [Aliases: :UCS-4LE] A 32-bit, fixed-length encoding in which all Unicode characters can encoded in a single 32-bit word. The encoded data is implicitly little-endian; byte-order-mark characters are not interpreted on input or prepended to output. :UTF-8 [Aliases: :MULE-UTF-8] An 8-bit, variable-length character encoding in which characters with CHAR-CODEs in the range #x00-#x7f can be encoded in a single octet; characters with larger code values can be encoded in 2 to 4 bytes. :WINDOWS-31J [Aliases: :CP932 :CSWINDOWS31J] An 8-bit, variable-length character encoding in which character code points in the range #x00-#x7f can be encoded in a single octet; characters with larger code values can be encoded in 2 bytes. ") (defun parse-ccl-encodings-desc-first-line (line) "Given a line with :ENCODING [Aliases: :X :Y] return a proper cons." (or (cl-ppcre:register-groups-bind (name aliases) (":([A-Z0-9-]+).*Aliases: (.*)[]]" line) (cons name (mapcar (lambda (alias) (subseq alias 1)) (split-sequence:split-sequence #\Space aliases)))) ;; some of them have no alias (cons (subseq line 1) nil))) (defun parse-ccl-encodings-desc (&optional (desc *ccl-describe-character-encodings*)) "Parse the output of the ccl:describe-character-encodings function." (with-input-from-string (s desc) (loop :for line := (read-line s nil nil) :while line :when (and line (< 0 (length line)) (char= #\: (aref line 0))) :collect (parse-ccl-encodings-desc-first-line line)))) (defun list-encodings-and-aliases () "Return an alist of encoding names supported by the current implementation, associated with a list of encoding name aliases for each of them." (let ((encoding-and-aliases #+ccl (parse-ccl-encodings-desc (with-output-to-string (*standard-output*) (ccl:describe-character-encodings))) #+sbcl (let ((result '())) (maphash (lambda (name encoding) (declare (ignore name)) (pushnew encoding result)) sb-impl::*external-formats*) (mapcar (lambda (encoding) (mapcar (function string-upcase) (slot-value encoding 'sb-impl::names))) result)))) (sort encoding-and-aliases #'string< :key #'car))) (defun show-encodings () "List known encodings names and aliases from charsets::*lisp-encodings*." (format *standard-output* "Name ~30TAliases~%") (format *standard-output* "--------~30T--------------~%") (loop :with encodings := (list-encodings-and-aliases) :for (name . aliases) :in encodings :do (format *standard-output* "~a~30T~{~a~^, ~}~%" name aliases)) (terpri)) (defun make-external-format (name) "Return an object suitable as an external format in the current implementation." (let ((encoding (intern name "KEYWORD"))) #+ccl (ccl:make-external-format :character-encoding encoding) #+sbcl encoding)) pgloader/src/utils/logs.lisp0000644000175000017500000000446413054555616016347 0ustar vagrantvagrant;;; ;;; Logs ;;; (in-package :pgloader.logs) (defcategory :panic) (defcategory :fatal (or :fatal :panic)) (defcategory :log (or :log :fatal)) (defcategory :error (or :error :log)) (defcategory :warning (or :warning :error)) (defcategory :notice (or :notice :warning)) (defcategory :sql (or :sql :notice)) (defcategory :info (or :info :sql)) (defcategory :debug (or :debug :info)) (defcategory :data (or :data :debug)) (defvar *log-messengers* nil "Currently active log-messengers") ;; Start a messenger to store our message into (defun start-logger (&key (log-filename *log-filename*) ((:log-min-messages *log-min-messages*) *log-min-messages*) ((:client-min-messages *client-min-messages*) *client-min-messages*)) "Start the pgloader log manager and messenger." (setf (log-manager) (make-instance 'log-manager :message-class 'formatted-message)) ;; we need an existing place where to log our messages (ensure-directories-exist log-filename) (push (cl-log:start-messenger 'text-file-messenger :name "logfile" :filter *log-min-messages* :filename log-filename :external-format :utf-8) *log-messengers*) (push (cl-log:start-messenger 'text-stream-messenger :name "stdout" :filter *client-min-messages* :stream *standard-output*) *log-messengers*) (cl-log:log-message :notice "Starting pgloader, log system is ready.")) (defun stop-logger () "Stop the pgloader manager and messengers." (loop for messenger = (pop *log-messengers*) while messenger do (cl-log:stop-messenger messenger))) ;; monkey patch the print-object method for cl-log timestamp (defconstant +nsec+ (* 1000 1000 1000) "How many nanoseconds do you find in a second") (defun fraction-to-nsecs (fraction) "FRACTION is a number of internal-time-units-per-second, return nsecs" (declare (inline fraction-to-nsecs) (fixnum fraction)) (floor (/ (* fraction +nsec+) internal-time-units-per-second))) (defmethod print-object ((self cl-log:timestamp) stream) "we want to print human readable timestamps" (let ((log-local-time (local-time:universal-to-timestamp (cl-log:timestamp-universal-time self) :nsec (fraction-to-nsecs (cl-log:timestamp-fraction self))))) (local-time:format-timestring stream log-local-time))) pgloader/src/utils/connection.lisp0000644000175000017500000001741013047375022017526 0ustar vagrantvagrant;; ;; Abstract classes to define the API to connect to a data source ;; (in-package :pgloader.connection) ;;; ;;; Generic API ;;; (defclass connection () ((type :initarg :type :accessor conn-type) (handle :initarg :conn :accessor conn-handle :initform nil)) (:documentation "pgloader connection parameters, base class")) (define-condition connection-error (error) ((type :initarg :type :reader connection-error-type) (mesg :initarg :mesg :reader connection-error-mesg))) (defgeneric open-connection (connection &key) (:documentation "Open a connection to the data source.")) (defgeneric close-connection (connection) (:documentation "Close a connection to the data source.")) (defgeneric check-connection (connection) (:documentation "Check that we can actually connect.")) (defgeneric clone-connection (connection) (:documentation "Instanciate a new connection object with similar properties.")) ;;; ;;; File based objects ;;; (defclass fd-connection (connection) ((uri :initarg :uri :accessor fd-uri) (arch :initarg :arch :accessor fd-arch) (path :initarg :path :accessor fd-path)) (:documentation "pgloader connection parameters for a file based data source.")) (defmethod clone-connection ((fd fd-connection)) (let ((clone (make-instance 'fd-connection :type (conn-type fd)))) (loop :for slot :in '(uri arch path) :do (when (slot-boundp fd slot) (setf (slot-value clone slot) (slot-value fd slot)))) clone)) (define-condition fd-connection-error (connection-error) ((path :initarg :path :reader connection-error-path)) (:report (lambda (err stream) (format stream "Failed to open ~a file ~s: ~a" (connection-error-type err) (connection-error-path err) (connection-error-mesg err))))) (defmethod print-object ((fd fd-connection) stream) (print-unreadable-object (fd stream :type t :identity t) (let ((url (cond ((and (slot-boundp fd 'path) (slot-value fd 'path)) (slot-value fd 'path)) ((and (slot-boundp fd 'arch) (slot-value fd 'arch)) (slot-value fd 'arch)) ((and (slot-boundp fd 'uri) (slot-value fd 'uri)) (slot-value fd 'uri))))) (with-slots (type) fd (format stream "~a://~a" type url))))) (defgeneric fetch-file (fd-connection) (:documentation "Support for HTTP URI for files.")) (defgeneric expand (fd-connection) (:documentation "Support for file archives.")) (defmethod expand ((fd fd-connection)) "Expand the archive for the FD connection." (when (and (slot-boundp fd 'arch) (slot-value fd 'arch)) (let ((archive-directory (expand-archive (fd-arch fd)))) ;; if there's a single file in the archive, it must the the path (let ((files (uiop:directory-files archive-directory))) (if (= 1 (length files)) (setf (fd-path fd) (first files)) (setf (fd-path fd) archive-directory))))) fd) (defmethod fetch-file ((fd fd-connection)) "When the fd-connection has an URI slot, download its file." (when (and (slot-boundp fd 'uri) (slot-value fd 'uri)) (let ((local-filename (http-fetch-file (fd-uri fd)))) (if (archivep local-filename) (setf (fd-arch fd) local-filename) (setf (fd-path fd) local-filename)))) fd) ;;; ;;; database connections ;;; (defclass db-connection (connection) ((name :initarg :name :accessor db-name) (host :initarg :host :accessor db-host) (port :initarg :port :accessor db-port) (user :initarg :user :accessor db-user) (pass :initarg :pass :accessor db-pass)) (:documentation "pgloader connection parameters for a database service.")) (defmethod clone-connection ((c db-connection)) (make-instance 'db-connection :type (conn-type c) :name (db-name c) :host (db-host c) :port (db-port c) :user (db-user c) :pass (db-pass c))) (defmethod print-object ((c db-connection) stream) (print-unreadable-object (c stream :type t :identity t) (with-slots (type name host port user) c (format stream "~a://~a@~a:~a/~a" type user host port name)))) (define-condition db-connection-error (connection-error) ((host :initarg :host :reader connection-error-host) (port :initarg :port :reader connection-error-port) (user :initarg :user :reader connection-error-user)) (:report (lambda (err stream) (format stream "Failed to connect to ~a at ~s ~@[(port ~d)~]~@[ as user ~s~]: ~a" (connection-error-type err) (connection-error-host err) (connection-error-port err) (connection-error-user err) (connection-error-mesg err))))) (defgeneric query (db-connection sql &key) (:documentation "Query DB-CONNECTION with SQL query")) ;;; ;;; Tools for every connection classes ;;; (defmacro with-connection ((var connection &rest args &key &allow-other-keys) &body forms) "Connect to DB-CONNECTION and handle any condition when doing so, and when connected execute FORMS in a protected way so that we always disconnect at the end." (let ((conn (gensym "conn"))) `(let* ((,conn ,connection) (,var (handler-case ;; in some cases (client_min_messages set to debug5 ;; for example), PostgreSQL might send us some ;; WARNINGs already when opening a new connection (handler-bind ((cl-postgres:postgresql-warning #'(lambda (w) (log-message :warning "~a" w) (muffle-warning)))) (apply #'open-connection ,conn (list ,@args))) (condition (e) (cond ((typep ,connection 'fd-connection) (error 'fd-connection-error :mesg (format nil "~a" e) :type (conn-type ,conn) :path (fd-path ,conn))) ((typep ,connection 'db-connection) (error 'db-connection-error :mesg (format nil "~a" e) :type (conn-type ,conn) :host (db-host ,conn) :port (db-port ,conn) :user (db-user ,conn))) (t (error 'connection-error :mesg (format nil "~a" e) :type (conn-type ,conn)))))))) (unwind-protect (progn ,@forms) (close-connection ,var))))) (defmethod check-connection ((fd fd-connection)) "Check that it is possible to connect to db-connection C." (log-message :log "Attempting to open ~a" fd) (handler-case (with-connection (cnx fd) (log-message :log "Success, opened ~a." fd)) (condition (e) (log-message :fatal "Failed to connect to ~a: ~a" fd e)))) (defmethod check-connection ((c db-connection)) "Check that it is possible to connect to db-connection C." (log-message :log "Attempting to connect to ~a" c) (handler-case (with-connection (cnx c) (log-message :log "Success, opened ~a." c) (let ((sql "SELECT 1;")) (log-message :log "Running a simple query: ~a" sql) (handler-case (query cnx sql) (condition (e) (log-message :fatal "SQL failed on ~a: ~a" c e))))) (condition (e) (log-message :fatal "Failed to connect to ~a: ~a" c e)))) pgloader/src/utils/quoting.lisp0000644000175000017500000000526413127307525017063 0ustar vagrantvagrant;;; ;;; Manage PostgreSQL specific quoting of identifiers. ;;; ;;; We use this facility as early as possible (in schema-structs), so we ;;; need those bits of code in utils/ rather than pgsql/. ;;; (in-package :pgloader.quoting) (defun quoted-p (s) "Return true if s is a double-quoted string" (and (eq (char s 0) #\") (eq (char s (- (length s) 1)) #\"))) (defun apply-identifier-case (identifier) "Return given IDENTIFIER with CASE handled to be PostgreSQL compatible." (let* ((lowercase-identifier (cl-ppcre:regex-replace-all "[^a-zA-Z0-9.]" (string-downcase identifier) "_")) (*identifier-case* ;; we might need to force to :quote in some cases ;; ;; http://www.postgresql.org/docs/9.1/static/sql-syntax-lexical.html ;; ;; SQL identifiers and key words must begin with a letter (a-z, but ;; also letters with diacritical marks and non-Latin letters) or an ;; underscore (_). (cond ((quoted-p identifier) :none) ((not (cl-ppcre:scan "^[A-Za-z_][A-Za-z0-9_$]*$" identifier)) :quote) ((member lowercase-identifier *pgsql-reserved-keywords* :test #'string=) (progn ;; we need to both downcase and quote here (when (eq :downcase *identifier-case*) (setf identifier lowercase-identifier)) :quote)) ;; in other cases follow user directive (t *identifier-case*)))) (ecase *identifier-case* (:downcase lowercase-identifier) (:quote (format nil "~s" (cl-ppcre:regex-replace-all "\"" identifier "\"\""))) (:none identifier)))) (defun ensure-unquoted (identifier) (cond ((quoted-p identifier) ;; when the table name comes from the user (e.g. in the ;; load file) then we might have to unquote it: the ;; PostgreSQL catalogs does not store object names in ;; their quoted form. (subseq identifier 1 (1- (length identifier)))) (t identifier))) (defun build-identifier (sep &rest parts) "Concatenante PARTS into a PostgreSQL identifier, with SEP in between parts. That's useful for creating an index name from a table's oid and name." (apply-identifier-case (apply #'concatenate 'string (loop :for (part . more?) :on parts :collect (ensure-unquoted (typecase part (string part) (t (princ-to-string part)))) :when more? :collect sep)))) pgloader/src/utils/state.lisp0000644000175000017500000001344713101406116016503 0ustar vagrantvagrant;;; ;;; Global state maintenance, which includes statistics about each target of ;;; the load: number of lines read, imported and number of errors found ;;; along the way. ;;; (in-package :pgloader.state) ;;; ;;; Data Structures to maintain information about loading state ;;; (defstruct pgtable name (read 0 :type fixnum) ; how many rows did we read (rows 0 :type fixnum) ; how many rows did we write (errs 0 :type fixnum) ; how many errors did we see (secs 0.0 :type float) ; how many seconds did it take (rs 0.0 :type float) ; seconds spent reading (ws 0.0 :type float) ; seconds spent writing (start 0 :type integer) ; internal real time when we started (stop 0 :type integer) ; internal real time when we finished reject-data reject-logs) ; files where to find reject data (defstruct pgstate (tables (make-hash-table :test 'equal)) (tabnames nil) ; we want to keep the ordering (read 0 :type fixnum) (rows 0 :type fixnum) (errs 0 :type fixnum) (secs 0.0 :type float) (rs 0.0 :type float) (ws 0.0 :type float)) (defun relative-pathname (filename type &optional dbname) "Return the pathname of a file of type TYPE (dat or log) under *ROOT-DIR*" (let ((dir (if dbname (uiop:merge-pathnames* (uiop:make-pathname* :directory `(:relative ,dbname)) *root-dir*) *root-dir*))) (make-pathname :defaults dir :name filename :type type))) (defun reject-data-file (table-name dbname) "Return the pathname to the reject file for STATE entry." (relative-pathname table-name "dat" dbname)) (defun reject-log-file (table-name dbname) "Return the pathname to the reject file for STATE entry." (relative-pathname table-name "log" dbname)) (defmethod pgtable-initialize-reject-files ((table pgtable) dbname) "Prepare TABLE for being able to deal with rejected rows (log them)." (let* ((table-name (format-table-name (pgtable-name table))) (data-pathname (reject-data-file table-name dbname)) (logs-pathname (reject-log-file table-name dbname))) ;; we also use that facility for things that are not tables ;; such as "fetch" or "before load" or "Create Indexes" (when dbname ;; create the per-database directory if it does not exists yet (ensure-directories-exist (uiop:pathname-directory-pathname data-pathname)) ;; rename the existing files if there are some (when (probe-file data-pathname) (with-open-file (data data-pathname :direction :output :if-exists :rename :if-does-not-exist nil))) (when (probe-file logs-pathname) (with-open-file (logs logs-pathname :direction :output :if-exists :rename :if-does-not-exist nil))) ;; set the properties to the right pathnames (setf (pgtable-reject-data table) data-pathname (pgtable-reject-logs table) logs-pathname)))) (defun pgstate-get-label (pgstate name) (gethash name (pgstate-tables pgstate))) (defun pgstate-new-label (pgstate label) "Instanciate a new pgtable structure to hold our stats, and return it." (or (pgstate-get-label pgstate label) (let* ((pgtable (setf (gethash label (pgstate-tables pgstate)) (make-pgtable :name label :start (get-internal-real-time))))) ;; maintain the ordering (push label (pgstate-tabnames pgstate)) (when (typep label 'table) (pgtable-initialize-reject-files pgtable (table-name label))) pgtable))) (defun pgstate-setf (pgstate name &key read rows errs secs rs ws) (let ((pgtable (pgstate-get-label pgstate name))) (when read (setf (pgtable-read pgtable) read) (incf (pgstate-read pgstate) read)) (when rows (setf (pgtable-rows pgtable) rows) (incf (pgstate-rows pgstate) rows)) (when errs (setf (pgtable-errs pgtable) errs) (incf (pgstate-errs pgstate) errs)) (when secs (setf (pgtable-secs pgtable) secs) (incf (pgstate-secs pgstate) secs)) (when rs (setf (pgtable-rs pgtable) rs) (incf (pgstate-rs pgstate) rs)) (when ws (setf (pgtable-ws pgtable) ws) (incf (pgstate-ws pgstate) ws)) pgtable)) (defun pgstate-incf (pgstate name &key read rows errs secs rs ws) (let ((pgtable (pgstate-get-label pgstate name))) (when read (incf (pgtable-read pgtable) read) (incf (pgstate-read pgstate) read)) (when rows (incf (pgtable-rows pgtable) rows) (incf (pgstate-rows pgstate) rows)) (when errs (incf (pgtable-errs pgtable) errs) (incf (pgstate-errs pgstate) errs)) (when secs (incf (pgtable-secs pgtable) secs) (incf (pgstate-secs pgstate) secs)) (when rs (incf (pgtable-rs pgtable) rs) (incf (pgstate-rs pgstate) rs)) (when ws (incf (pgtable-ws pgtable) ws) (incf (pgstate-ws pgstate) ws)) pgtable)) (defun pgstate-decf (pgstate name &key read rows errs secs rs ws) (let ((pgtable (pgstate-get-label pgstate name))) (when read (decf (pgtable-read pgtable) read) (decf (pgstate-read pgstate) read)) (when rows (decf (pgtable-rows pgtable) rows) (decf (pgstate-rows pgstate) rows)) (when errs (decf (pgtable-errs pgtable) errs) (decf (pgstate-errs pgstate) errs)) (when rs (decf (pgtable-rs pgtable) rs) (decf (pgstate-rs pgstate) rs)) (when ws (decf (pgtable-ws pgtable) ws) (decf (pgstate-ws pgstate) ws)) (when secs (decf (pgtable-secs pgtable) secs) (decf (pgstate-secs pgstate) secs)) pgtable)) pgloader/src/utils/threads.lisp0000644000175000017500000000277513127254251017030 0ustar vagrantvagrant;;; ;;; For communication purposes, the lparallel kernel must be created with ;;; access to some common bindings. ;;; (in-package :pgloader.utils) (defun make-kernel (worker-count &key (bindings `((*monitoring-queue* . ,*monitoring-queue*) (*copy-batch-rows* . ,*copy-batch-rows*) (*copy-batch-size* . ,*copy-batch-size*) (*rows-per-range* . ,*rows-per-range*) (*prefetch-rows* . ,*prefetch-rows*) (*pg-settings* . ',*pg-settings*) (*mysql-settings* . ',*mysql-settings*) (*root-dir* . ,*root-dir*) (*fd-path-root* . ,*fd-path-root*) (*client-min-messages* . ,*client-min-messages*) (*log-min-messages* . ,*log-min-messages*) ;; needed in create index specific kernels (*pgsql-reserved-keywords* . ',*pgsql-reserved-keywords*) (*preserve-index-names* . ,*preserve-index-names*) ;; bindings updates for libs ;; CFFI is used by the SQLite lib (cffi:*default-foreign-encoding* . ,cffi:*default-foreign-encoding*)))) "Wrapper around lparallel:make-kernel that sets our usual bindings." (lp:make-kernel worker-count :bindings bindings)) pgloader/src/utils/reject.lisp0000644000175000017500000000331213047375022016637 0ustar vagrantvagrant;;; ;;; Implement bad row reject processing ;;; (in-package :pgloader.monitor) ;;; ;;; When a batch has been refused by PostgreSQL with a data-exception, that ;;; means it contains non-conforming data. Log the error message in a log ;;; file and the erroneous data in a rejected data file for further ;;; processing. ;;; (defun %process-bad-row (table-name condition row) "Add the row to the reject file, in PostgreSQL COPY TEXT format" ;; first, update the stats. (let ((state (getf *sections* :data))) (pgstate-incf state table-name :errs 1) ;; now, the bad row processing (let* ((table (pgstate-get-label state table-name)) (data (pgtable-reject-data table)) (logs (pgtable-reject-logs table))) ;; first log the rejected data (with-open-file (reject-data-stream data :direction :output :element-type '(unsigned-byte 8) :if-exists :append :if-does-not-exist :create) ;; the row has already been processed when we get here (write-sequence row reject-data-stream) (write-byte #. (char-code #\Newline) reject-data-stream)) ;; now log the condition signaled to reject the data (with-open-file (reject-log-stream logs :direction :output :if-exists :append :if-does-not-exist :create :external-format :utf-8) ;; the row has already been processed when we get here (format reject-log-stream "~a~%" condition))))) pgloader/src/utils/read-sql-files.lisp0000644000175000017500000002220413112775242020175 0ustar vagrantvagrant;;; ;;; Tools to get the list of query from the model.sql, api.sql and sql/*.sql ;;; files, which remains usable as-is interactively (hence the injecting ;;; trick) ;;; (in-package #:pgloader.sql) (defstruct parser filename (stream (make-string-output-stream)) (state :eat) tags) (defmethod print-object ((p parser) stream) (print-unreadable-object (p stream :type t :identity t) (with-slots (state tags) p (format stream "~a {~{~s~^ ~}}" state tags)))) (defmethod push-new-tag ((p parser)) "Add a new element on the TAGS slot, a stack" (let ((tag (make-array 42 :fill-pointer 0 :adjustable t :element-type 'character))) (push tag (parser-tags p)))) (defmethod extend-current-tag ((p parser) char) "The TAGS slot of the parser is a stack, maintain it properly." (declare (type character char)) (assert (not (null (parser-tags p)))) (vector-push-extend char (first (parser-tags p)))) (defmethod format-current-tag ((p parser) &optional (stream (parser-stream p))) "Output the current tag to the current stream." (format stream "$~a$" (coerce (first (parser-tags p)) 'string))) (defmethod maybe-close-tags ((p parser) &optional (stream (parser-stream p))) "If the two top tags in the TAGS slot of the parser P are the same (compared using EQUALP), then pop them out of the stack and print the closing tag to STREAM." (when (and (< 1 (length (parser-tags p))) (equalp (first (parser-tags p)) (second (parser-tags p)))) ;; format the tag in the stream and POP both entries (format-current-tag p stream) (pop (parser-tags p)) (pop (parser-tags p)) ;; and return t t)) (defmethod pop-current-tag ((p parser)) "Remove current tag entry" (pop (parser-tags p))) (defmethod reset-state ((p parser)) "Depending on the current tags stack, set P state to either :eat or :eqt" (setf (parser-state p) (if (null (parser-tags p)) :eat :eqt))) #| Here's a test case straigth from the PostgreSQL docs: (with-input-from-string (s " create function f(text) returns bool language sql as $function$ BEGIN RETURN ($1 ~ $q$[\\t\\r\\n\\v\\\\]$q$); END; $function$;") (parse-query s (make-parser))) Another test case for the classic quotes: (with-pgsql-connection ("pgsql:///pginstall") (query (with-input-from-string (s "select E'\\';' as \";\";") (parse-query s)) :alists)) should return (((:|;| . "';"))) |# (defun parse-query (stream &optional (state (make-parser))) "Read a SQL query from STREAM, starting at whatever the current position is. Returns another SQL query each time it's called, or NIL when EOF is reached expectedly. Signal end-of-file condition when reaching EOF in the middle of a query. See the following docs for some of the parser complexity background: http://www.postgresql.org/docs/9.3/static/sql-syntax-lexical.html#SQL-SYNTAX-DOLLAR-QUOTING Parser states are: - EAT reading the query - TAG reading a tag that could be an embedded $x$ tag or a closing tag - EOT End Of Tag - EQT Eat Quoted Text - EDQ Eat Double-Quoted Text (identifiers) - EOQ done reading the query - ESC read espaced text (with backslash)" (handler-case (loop :until (eq :eoq (parser-state state)) :for char := (read-char stream) :do (case char (#\\ (case (parser-state state) (:esc (setf (parser-state state) :eqt)) (:eqt (setf (parser-state state) :esc))) (write-char char (parser-stream state))) (#\' (case (parser-state state) (:eat (setf (parser-state state) :eqt)) (:esc (setf (parser-state state) :eqt)) (:eqt (setf (parser-state state) :eat)) (:tag (progn ;; a tag name can't contain a single-quote ;; get back to previous state (let ((tag (pop-current-tag state))) (format (parser-stream state) "$~a" tag)) (reset-state state)))) (write-char char (parser-stream state))) (#\" (case (parser-state state) (:eat (setf (parser-state state) :edq)) (:edq (setf (parser-state state) :eat))) (write-char char (parser-stream state))) (#\$ (case (parser-state state) (:eat (setf (parser-state state) :tag)) (:eqt (setf (parser-state state) :tag)) (:tag (setf (parser-state state) :eot))) ;; we act depending on the NEW state (case (parser-state state) (:eat (write-char char (parser-stream state))) (:edq (write-char char (parser-stream state))) (:tag (push-new-tag state)) (:eot ; check the tag stack (cond ((= 1 (length (parser-tags state))) ;; it's an opening tag, collect the text now (format-current-tag state) (reset-state state)) (t ; are we closing the current tag? (if (maybe-close-tags state) (reset-state state) ;; not the same tags, switch state back ;; don't forget to add the opening tag (progn (format-current-tag state) (setf (parser-state state) :eqt)))))))) (#\; (case (parser-state state) (:eat (setf (parser-state state) :eoq)) (otherwise (write-char char (parser-stream state))))) (otherwise (cond ((member (parser-state state) '(:eat :eqt :edq)) (write-char char (parser-stream state))) ;; see ;; http://www.postgresql.org/docs/9.4/static/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS-ESCAPE ;; we re-inject whatever we read in the \x ;; syntax into the stream and let PostgreSQL ;; be the judge of what it means. ((member (parser-state state) '(:esc)) (write-char char (parser-stream state)) (setf (parser-state state) :eqt)) ((member (parser-state state) '(:tag)) ;; only letters are allowed in tags (if (alpha-char-p char) (extend-current-tag state char) (progn ;; not a tag actually: remove the ;; parser-tags entry and push back its ;; contents to the main output stream (let ((tag (pop-current-tag state))) (format (parser-stream state) "$~a~c" tag char)) (reset-state state))))))) :finally (return (get-output-stream-string (parser-stream state)))) (end-of-file (e) (unless (eq :eat (parser-state state)) (error e))))) (defun read-lines (filename &optional (q (make-string-output-stream))) "Read lines from given filename and return them in a stream. Recursively apply \i include instructions." (with-open-file (s filename :direction :input) (loop for line = (read-line s nil) while line do (if (or (and (> (length line) 3) (string= "\\i " (subseq line 0 3))) (and (> (length line) 4) (string= "\\ir " (subseq line 0 4)))) (let ((include-filename (merge-pathnames (subseq line 3) (directory-namestring filename)))) (read-lines include-filename q)) (format q "~a~%" line)) finally (return q)))) (defun read-queries (filename) "read SQL queries in given file and split them, returns a list" (let ((file-content (get-output-stream-string (read-lines filename)))) (with-input-from-string (s file-content) (loop :for query := (parse-query s) :while query :collect query)))) pgloader/src/utils/transforms.lisp0000644000175000017500000003112613047375022017565 0ustar vagrantvagrant;;; ;;; Tools to handle data conversion to PostgreSQL format ;;; ;;; Any function that you want to use to transform data with will get looked ;;; up in the pgloader.transforms package, when using the default USING ;;; syntax for transformations. (in-package :pgloader.transforms) ;;; ;;; This package is used to generate symbols in the CL code that ;;; project-fields produces, allowing to use symbols such as t. It's ;;; important that the user-symbols package doesn't :use cl. ;;; (defpackage #:pgloader.user-symbols (:use)) (defun intern-symbol (symbol-name &optional (overrides '())) "Return a symbol in either PGLOADER.TRANSFORMS if it exists there already (it's a user provided function) or a PGLOADER.USER-SYMBOLS package. OVERRIDES is an alist of symbol . value, allowing called to force certain values: the classic example is how to parse the \"nil\" symbol-name. Given OVERRIDES as '((nil . nil)) the returned symbol will be cl:nil rather than pgloader.user-symbols::nil." (let ((overriden (assoc symbol-name overrides :test #'string-equal))) (if overriden (cdr overriden) (multiple-value-bind (symbol status) (find-symbol (string-upcase symbol-name) (find-package "PGLOADER.TRANSFORMS")) ;; pgloader.transforms package (:use :cl) so we might find variable ;; names in there that we want to actually intern in ;; pgloader.user-symbols so that users may use e.g. t as a column name... ;; so only use transform symbol when it denotes a function (cond ((and status (fboundp symbol)) symbol) ; a transform function (t (intern (string-upcase symbol-name) (find-package "PGLOADER.USER-SYMBOLS")))))))) (defun typemod-expr-to-function (expr) "Transform given EXPR into a callable function object." `(lambda (typemod) (destructuring-bind (precision &optional (scale 0)) typemod (declare (ignorable precision scale)) ,expr))) ;;; ;;; Some optimisation stanza ;;; (declaim (inline intern-symbol zero-dates-to-null date-with-no-separator time-with-no-separator tinyint-to-boolean bits-to-boolean int-to-ip ip-range convert-mysql-point integer-to-string float-to-string empty-string-to-null set-to-enum-array right-trim byte-vector-to-bytea sqlite-timestamp-to-timestamp sql-server-uniqueidentifier-to-uuid sql-server-bit-to-boolean varbinary-to-string)) ;;; ;;; Transformation functions ;;; (defun zero-dates-to-null (date-string) "MySQL accepts '0000-00-00' as a date, we want NIL (SQL NULL) instead." (cond ((null date-string) nil) ((string= date-string "") nil) ;; day is 00 ((string= date-string "0000-00-00" :start1 8 :end1 10 :start2 8 ) nil) ;; month is 00 ((string= date-string "0000-00-00" :start1 5 :end1 7 :start2 5 :end2 7) nil) ;; year is 0000 ((string= date-string "0000-00-00" :start1 0 :end1 3 :start2 0 :end2 3) nil) (t date-string))) (defun date-with-no-separator (date-string &optional (format '((:year 0 4) (:month 4 6) (:day 6 8) (:hour 8 10) (:minute 10 12) (:seconds 12 14)))) "Apply this function when input date in like '20041002152952'" ;; only process non-zero dates (declare (type (or null string) date-string)) (cond ((null date-string) nil) ((string= date-string "") nil) ((not (= 14 (length date-string))) nil) (t (destructuring-bind (&key year month day hour minute seconds &allow-other-keys) (loop for (name start end) in format append (list name (subseq date-string start end))) (if (or (string= year "0000") (string= month "00") (string= day "00")) nil (format nil "~a-~a-~a ~a:~a:~a" year month day hour minute seconds)))))) (defun time-with-no-separator (time-string &optional (format '((:hour 0 2) (:minute 2 4) (:seconds 4 6) (:msecs 6 nil)))) "Apply this function when input date in like '08231560'" (declare (type (or null string) time-string)) (when time-string (destructuring-bind (&key hour minute seconds msecs &allow-other-keys) (loop for (name start end) in format append (list name (subseq time-string start end))) (format nil "~a:~a:~a.~a" hour minute seconds msecs)))) (defun tinyint-to-boolean (integer-string) "When using MySQL, strange things will happen, like encoding booleans into tinyiny that are either 0 (false) or 1 (true). Of course PostgreSQL wants 'f' and 't', respectively." (when integer-string (if (string= "0" integer-string) "f" "t"))) (defun bits-to-boolean (bit-vector) "When using MySQL, strange things will happen, like encoding booleans into bit(1). Of course PostgreSQL wants 'f' and 't'." (when (and bit-vector (= 1 (length bit-vector))) (if (= 0 (aref bit-vector 0)) "f" "t"))) (defun int-to-ip (int) "Transform an IP as integer into its dotted notation, optimised code from stassats." (declare (optimize speed) (type (unsigned-byte 32) int)) (let ((table (load-time-value (let ((vec (make-array (+ 1 #xFFFF)))) (loop for i to #xFFFF do (setf (aref vec i) (coerce (format nil "~a.~a" (ldb (byte 8 8) i) (ldb (byte 8 0) i)) 'simple-base-string))) vec) t))) (declare (type (simple-array simple-base-string (*)) table)) (concatenate 'simple-base-string (aref table (ldb (byte 16 16) int)) "." (aref table (ldb (byte 16 0) int))))) (defun ip-range (start-integer-string end-integer-string) "Transform a couple of integers to an IP4R ip range notation." (declare (optimize speed) (type (or null string) start-integer-string end-integer-string)) (when (and start-integer-string end-integer-string) (let ((ip-start (int-to-ip (parse-integer start-integer-string))) (ip-end (int-to-ip (parse-integer end-integer-string)))) (concatenate 'simple-base-string ip-start "-" ip-end)))) (defun convert-mysql-point (mysql-point-as-string) "Transform the MYSQL-POINT-AS-STRING into a suitable representation for PostgreSQL. Input: \"POINT(48.5513589 7.6926827)\" ; that's using astext(column) Output: (48.5513589,7.6926827)" (when mysql-point-as-string (let* ((point (subseq mysql-point-as-string 5))) (setf (aref point (position #\Space point)) #\,) point))) (defun integer-to-string (integer-string) "Transform INTEGER-STRING parameter into a proper string representation of it. In particular be careful of quoted-integers, thanks to SQLite default values." (declare (type (or null string fixnum) integer-string)) (when integer-string (princ-to-string (typecase integer-string (integer integer-string) (string (handler-case (parse-integer integer-string :start 0) (condition (c) (declare (ignore c)) (parse-integer integer-string :start 1 :end (- (length integer-string) 1))))))))) (defun float-to-string (float) "Transform a Common Lisp float value into its string representation as accepted by PostgreSQL, that is 100.0 rather than 100.0d0." (declare (type (or null fixnum float string) float)) (when float (typecase float (double-float (let ((*read-default-float-format* 'double-float)) (princ-to-string float))) (string float) (t (princ-to-string float))))) (defun set-to-enum-array (set-string) "Transform a MySQL SET value into a PostgreSQL ENUM Array" (when set-string (format nil "{~a}" set-string))) (defun empty-string-to-null (string) "MySQL ENUM sometimes return an empty string rather than a NULL." (when string (if (string= string "") nil string))) (defun right-trim (string) "Remove whitespaces at end of STRING." (declare (type (or null simple-string) string)) (when string (string-right-trim '(#\Space) string))) (defun remove-null-characters (string) "Remove NULL-characters (0x00) from STRING" (when string (remove #\Nul string))) (defun byte-vector-to-bytea (vector) "Transform a simple array of unsigned bytes to the PostgreSQL bytea representation as documented at http://www.postgresql.org/docs/9.3/interactive/datatype-binary.html Note that we choose here the bytea Hex Format." (declare (type (or null string (simple-array (unsigned-byte 8) (*))) vector)) (etypecase vector (null nil) (string (if (string= "" vector) nil (error "byte-vector-to-bytea called on a string: ~s" vector))) (simple-array (let ((hex-digits "0123456789abcdef") (bytea (make-array (+ 2 (* 2 (length vector))) :initial-element #\0 :element-type 'standard-char))) ;; The entire string is preceded by the sequence \x (to distinguish it ;; from the escape format). (setf (aref bytea 0) #\\) (setf (aref bytea 1) #\x) (loop for pos from 2 by 2 for byte across vector do (let ((high (ldb (byte 4 4) byte)) (low (ldb (byte 4 0) byte))) (setf (aref bytea pos) (aref hex-digits high)) (setf (aref bytea (+ pos 1)) (aref hex-digits low))) finally (return bytea)))))) (defun ensure-parse-integer (string-or-integer) "Return an integer value if string-or-integer is an integer or a string containing only an integer value, in all other cases return nil." (typecase string-or-integer (string (multiple-value-bind (integer position) (parse-integer string-or-integer :junk-allowed t) (when (= (length string-or-integer) position) integer))) (integer string-or-integer))) (defun sqlite-timestamp-to-timestamp (date-string-or-integer) (declare (type (or null integer simple-string) date-string-or-integer)) (when date-string-or-integer (cond ((and (typep date-string-or-integer 'integer) (= 0 date-string-or-integer)) nil) ((typep date-string-or-integer 'integer) ;; a non-zero integer is a year (format nil "~a-01-01" date-string-or-integer)) ((stringp date-string-or-integer) ;; default values are sent as strings (let ((maybe-integer (ensure-parse-integer date-string-or-integer))) (cond ((and maybe-integer (= 0 maybe-integer)) nil) (maybe-integer (format nil "~a-01-01" maybe-integer)) (t date-string-or-integer))))))) (defun sql-server-uniqueidentifier-to-uuid (id) (declare (type (or null (array (unsigned-byte 8) (16))) id)) (when id (format nil "~a" (uuid:byte-array-to-uuid id)))) (defun unix-timestamp-to-timestamptz (unixtime-string) "Takes a unix timestamp (seconds since beginning of 1970) and converts it into a string of format \"YYYY-MM-DD hh:mm:ssZ\". Assumes that the unix timestamp is in UTC time." (when unixtime-string (let ((unixtime (ensure-parse-integer unixtime-string)) ;; Universal time uses a different epoch than unix time (unix-universal-diff (load-time-value (encode-universal-time 0 0 0 1 1 1970 0)))) (multiple-value-bind (second minute hour date month year) (decode-universal-time (+ unixtime unix-universal-diff) 0) (format nil "~d-~2,'0d-~2,'0d ~2,'0d:~2,'0d:~2,'0dZ" year month date hour minute second))))) (defun sql-server-bit-to-boolean (bit-string-or-integer) "We might receive bits as '((0))'" (typecase bit-string-or-integer (integer (if (= 0 bit-string-or-integer) "f" "t")) (string (cond ((string= "0" bit-string-or-integer) "f") ((string= "1" bit-string-or-integer) "t") ((string= "((0))" bit-string-or-integer) "f") ((string= "((1))" bit-string-or-integer) "t") (t nil))))) (defun varbinary-to-string (string) (let ((babel::*default-character-encoding* (or qmynd::*mysql-encoding* babel::*default-character-encoding*))) (etypecase string (string string) (vector (babel:octets-to-string string))))) pgloader/src/utils/report.lisp0000644000175000017500000002246313124737076016715 0ustar vagrantvagrant;;; ;;; Pretty print a report while doing bulk operations ;;; (in-package :pgloader.state) (defvar *header-line* "~&~v@{~A~:*~} --------- --------- --------- -------------- --------- ---------") (defvar *header* "~&") (defvar *footer* "~&") (defvar *end-of-line-format* "~%") (defvar *max-length-table-name* 30) (defvar *header-tname-format* "~&~v@a") (defvar *header-stats-format* " ~9@a ~9@a ~9@a ~14@a ~@[~9@a~] ~@[~9@a~]") (defvar *header-cols-format* (concatenate 'string *header-tname-format* *header-stats-format*)) (defvar *header-cols-names* '("table name" "read" "imported" "errors" "time")) (defvar *header-format-strings* '((:human-readable (:header "~&" :footer "~%" :end-of-line-format "~%" :header-line "~&~v@{~A~:*~} --------- --------- --------- --------------" :header-tname-format "~&~v@a" :header-stats-format " ~9@a ~9@a ~9@a ~14@a ~*~*" :header-cols-format "~&~v@a ~9@a ~9@a ~9@a ~14@a" :header-cols-names ("table name" "read" "imported" "errors" "total time"))) (:human-readable-verbose (:header "~&" :footer "~%" :end-of-line-format "~%" :header-line "~&~v@{~A~:*~} --------- --------- --------- -------------- --------- ---------" :header-tname-format "~&~v@a" :header-stats-format " ~9@a ~9@a ~9@a ~14@a ~:[~9<~>~;~:*~9@a~] ~:[~9<~>~;~:*~9@a~]" :header-cols-format "~&~v@a ~9@a ~9@a ~9@a ~14@a ~9@a ~9@a" :header-cols-names ("table name" "read" "imported" "errors" "total time" "read" "write"))) (:csv (:header "~&" :footer "~%" :end-of-line-format "~%" :header-line "~*~*" :header-tname-format "~&~*~s;" :header-stats-format "~s;~s;~s;~s~*~*" :header-cols-format "~&~*~s;~s;~s;~s;~s" :header-cols-names ("table name" "read" "imported" "errors" "time"))) (:copy (:header "~&" :footer "~%" :end-of-line-format "~%" :header-line "~&~*~*" :header-tname-format "~&~*~a " :header-stats-format "~s ~s ~s ~s~*~*" :header-cols-format "~*~*~*~*~*~*" ; skip it :header-cols-names ("table name" "read" "imported" "errors" "time"))) (:json (:header "~&[" :footer "~&]~%" :end-of-line-format ",~%" :header-line "~&~*~*" :header-tname-format "~& {\"table-name\": ~*~s," :header-stats-format "\"read\":~s,\"imported\":~s,\"errors\":~s,\"time\":~s~@[,\"read\":~s~]~@[,\"write\":~s~]}" :header-cols-format "~*~*~*~*~*~*" ; skip it :header-cols-names ("table name" "read" "imported" "errors" "time"))))) (defun get-format-for (type key) "Return the format string to use for a given TYPE of output and KEY." (getf (cadr (assoc type *header-format-strings*)) key)) ;;; ;;; Timing Formating ;;; (defun format-interval (seconds &optional (stream t)) "Output the number of seconds in a human friendly way" (multiple-value-bind (years months days hours mins secs millisecs) (date:decode-interval (date:encode-interval :second seconds)) (declare (ignore millisecs)) (format stream "~:[~*~;~d years ~]~:[~*~;~d months ~]~:[~*~;~d days ~]~:[~*~;~dh~]~:[~*~;~dm~]~5,3fs" (< 0 years) years (< 0 months) months (< 0 days) days (< 0 hours) hours (< 0 mins) mins (+ secs (- (multiple-value-bind (r q) (truncate seconds 60) (declare (ignore r)) q) secs))))) ;;; ;;; Pretty printing reports in several formats ;;; (defun report-header () ;; (apply #'format *report-stream* *header-cols-format* *header-cols-names*) (format *report-stream* "~{~}" *header-cols-format* (list* *max-length-table-name* *header-cols-names*)) (format *report-stream* *header-line* *max-length-table-name* "-")) (defun report-table-name (table-name) (format *report-stream* *header-tname-format* *max-length-table-name* table-name)) (defun report-results (read rows errors seconds rs ws &optional (eol t)) (format *report-stream* *header-stats-format* read rows errors seconds rs ws) (when eol (format *report-stream* *end-of-line-format*))) (defun report-footer (legend read rows errors seconds &optional rs ws) (format *report-stream* *header-line* *max-length-table-name* "-") (format *report-stream* "~{~}" *header-tname-format* (list* *max-length-table-name* (list legend))) (report-results read rows errors (format-interval seconds nil) (when (and rs (not (= rs 0.0))) (format-interval rs nil)) (when (and ws (not (= rs 0.0))) (format-interval ws nil)) nil) (format *report-stream* *footer*)) ;;; ;;; Pretty print a report from a pgtable and pgstats counters ;;; (defun report-pgtable-stats (pgstate name) (with-slots (read rows errs secs rs ws) (pgstate-get-label pgstate name) (report-results read rows errs (format-interval secs nil) (when (and rs (not (= rs 0.0))) (format-interval rs nil)) (when (and ws (not (= ws 0.0))) (format-interval ws nil))))) (defun report-pgstate-stats (pgstate legend) (with-slots (tabnames read rows errs secs rs ws) pgstate (when tabnames (report-footer legend read rows errs secs rs ws)))) ;;; ;;; Pretty print the whole summary from a state ;;; (defun report-summary (pgstate &key (header t) footer) "Report a whole summary." (when header (report-header)) (loop :for label :in (reverse (pgstate-tabnames pgstate)) :for pgtable := (gethash label (pgstate-tables pgstate)) :do (with-slots (read rows errs secs rs ws) pgtable (format *report-stream* *header-tname-format* *max-length-table-name* (etypecase label (string label) (table (format-table-name label)))) (report-results read rows errs (cond ((> 0 secs) (format-interval secs nil)) ((and rs ws (= 0 secs)) (format-interval (max rs ws) nil)) (t (format-interval secs nil))) (when (and rs (not (= rs 0.0))) (format-interval rs nil)) (when (and ws (not (= ws 0.0))) (format-interval ws nil)))) :finally (when footer (report-pgstate-stats pgstate footer)))) (defun parse-summary-type (&optional (pathname *summary-pathname*)) "Return the summary type we want: human-readable, csv, json." (when pathname (cond ((string= "csv" (pathname-type pathname)) :csv) ((string= "json" (pathname-type pathname)) :json) ((string= "copy" (pathname-type pathname)) :copy) (t :human-readable)))) (defun max-length-table-name (legend data pre post) "Compute the max length of a table-name in the legend." (reduce #'max (mapcar #'length (mapcar (lambda (entry) (etypecase entry (string entry) (table (format-table-name entry)))) (append (pgstate-tabnames data) (pgstate-tabnames pre) (pgstate-tabnames post) (list legend)))) :initial-value 0)) (defun report-full-summary (legend sections total-secs) "Report the full story when given three different sections of reporting." (let* ((data (getf sections :data)) (pre (getf sections :pre)) (post (getf sections :post)) (stype (or (parse-summary-type *summary-pathname*) (if (member *client-min-messages* '(:notice :sql :info :debug :data)) :human-readable-verbose :human-readable))) (*header* (get-format-for stype :header)) (*footer* (get-format-for stype :footer)) (*end-of-line-format* (get-format-for stype :end-of-line-format)) (*header-line* (get-format-for stype :header-line)) (*max-length-table-name* (max-length-table-name legend data pre post)) (*header-tname-format* (get-format-for stype :header-tname-format)) (*header-stats-format* (get-format-for stype :header-stats-format)) (*header-cols-format* (get-format-for stype :header-cols-format)) (*header-cols-names* (get-format-for stype :header-cols-names))) (when *header* (format *report-stream* *header*)) (when (and pre (pgstate-tabnames pre)) (report-summary pre :footer nil) (format *report-stream* *header-line* *max-length-table-name* "-")) (report-summary data :header (null pre) :footer nil) (when (and post (pgstate-tabnames post)) (format *report-stream* *header-line* *max-length-table-name* "-") (report-summary post :header nil :footer nil)) ;; replace the grand total now (setf (pgstate-secs data) total-secs) ;; and report the Grand Total (report-pgstate-stats data legend))) pgloader/src/utils/queries.lisp0000644000175000017500000000522713127307525017051 0ustar vagrantvagrant;;; ;;; Load SQL queries at load-time into an hash table and offer a function to ;;; get the SQL query text from the source code. This allows to maintain ;;; proper .sql files in the source code, for easier maintenance. ;;; (in-package :pgloader.queries) (defparameter *src* (uiop:pathname-directory-pathname (asdf:system-relative-pathname :pgloader "src/")) "Source directory where to look for .sql query files.") (defun load-static-file (fs pathname url) "Load given PATHNAME contents at URL-PATH in FS." (setf (gethash url fs) (alexandria:read-file-into-string pathname))) (defun pathname-to-url (pathname &optional (root *src*)) "Transform given PATHNAME into an URL at which to serve it within URL-PATH." (multiple-value-bind (flag path-list last-component file-namestring-p) (uiop:split-unix-namestring-directory-components (uiop:native-namestring (uiop:enough-pathname pathname root))) (declare (ignore flag file-namestring-p)) ;; ;; we store SQL queries in a sql/ subdirectory because it's easier to ;; manage the code that way, but it's an implementation detail that we ;; are hiding in the query url abstraction... ;; ;; then do the same thing with the "sources" in /src/sources/.../sql/... ;; (let ((no-sql-path-list (remove-if (lambda (path) (member path (list "sources" "sql") :test #'string=)) path-list))) (format nil "~{/~a~}/~a" no-sql-path-list last-component)))) (defun load-static-directory (fs &optional (root *src*)) "Walk PATH and load all files found in there as binary sequence, FS being an hash table referencing the full path against the bytes." (flet ((collectp (dir) (declare (ignore dir)) t) (recursep (dir) (declare (ignore dir)) t) (collector (dir) (loop :for pathname :in (uiop:directory-files dir) :do (when (string= "sql" (pathname-type pathname)) (let ((url (pathname-to-url pathname root))) (load-static-file fs pathname url)))))) (uiop:collect-sub*directories root #'collectp #'recursep #'collector))) (defun walk-sources-and-build-fs () (let ((fs (make-hash-table :test #'equal))) (load-static-directory fs) fs)) (defparameter *fs* (walk-sources-and-build-fs) "File system as an hash-table in memory.") (defun sql (url) "Abstract the hash-table based implementation of our SQL file system." (restart-case (or (gethash url *fs*) (error "URL ~s not found!" url)) (recompute-fs-and-retry () (setf *fs* (walk-sources-and-build-fs)) (sql url)))) pgloader/src/utils/catalog.lisp0000644000175000017500000003753213127257577017025 0ustar vagrantvagrant;;; ;;; PostgreSQL catalogs data structures ;;; ;;; Advanced (database) pgloader data source have to provide facilities to ;;; introspect themselves and CAST their catalogs into PostgreSQL compatible ;;; catalogs as defined here. ;;; ;;; Utility function using those definitions are found in schema.lisp in the ;;; same directory. ;;; (in-package :pgloader.catalog) ;;; ;;; A macro to ease writing the catalog handling API ;;; (defmacro push-to-end (item place) `(progn (setf ,place (nconc ,place (list ,item))) ;; and return the item we just pushed at the end of the place ,item)) ;;; ;;; One interesting thing to do to all those catalog objects is to be able ;;; to print the DDL commands out: CREATE and DROP SQL statements. ;;; (defgeneric format-create-sql (object &key stream if-not-exists) (:documentation "Generate proper SQL command to create OBJECT in PostgreSQL. The output is written to STREAM.")) (defgeneric format-drop-sql (object &key stream cascade if-exists) (:documentation "Generate proper SQL command to drop OBJECT in PostgreSQL. The output is written to STREAM.")) (defgeneric format-default-value (column &key stream) (:documentation "Generate proper value to be used as a default value for given COLUMN in PostgreSQL. The output is written to STREAM.")) ;;; ;;; A database catalog is a list of schema each containing a list of tables, ;;; each being a list of columns. ;;; ;;; Column structures details depend on the specific source type and are ;;; implemented in each source separately. ;;; (defstruct catalog name schema-list types-without-btree) (defstruct schema source-name name catalog table-list view-list) (defstruct table source-name name schema oid comment storage-parameter-list ;; field is for SOURCE ;; column is for TARGET field-list column-list index-list fkey-list trigger-list) ;;; ;;; When migrating from another database to PostgreSQL some data types might ;;; need to be tranformed dynamically into User Defined Types: ENUMs, SET, ;;; etc. ;;; (defstruct sqltype name type source-def extra) ;;; ;;; The generic PostgreSQL column that the CAST generic function is asked to ;;; produce, so that we know how to CREATE TABLEs in PostgreSQL whatever the ;;; source is. ;;; (defstruct column name type-name type-mod nullable default comment transform extra) ;;; ;;; Index and Foreign Keys ;;; (defstruct fkey name oid table columns foreign-table foreign-columns condef update-rule delete-rule match-rule deferrable initially-deferred) ;;; ;;; An index, that might be underlying a e.g. UNIQUE constraint conname, in ;;; which case we need to use condef to build the index again from its ;;; definition, and drop the conname to drop the index. ;;; ;;; Also, primary keys might be dependencies of foreign keys, including ones ;;; that are out of scope for our load specifications and hence, catalog. We ;;; keep track of them in fk-deps so that we know to remove them then ;;; install them again at proper times. ;;; (defstruct index name oid schema table primary unique columns sql conname condef filter fk-deps) ;;; ;;; Triggers and trigger procedures, no args support (yet?) ;;; (defstruct trigger name table action procedure-name procedure) (defstruct procedure name returns language body) ;;; ;;; Main data collection API ;;; (defgeneric add-schema (object schema-name &key)) (defgeneric add-table (object table-name &key)) (defgeneric add-view (object view-name &key)) (defgeneric add-column (object column &key)) (defgeneric add-index (object index &key)) (defgeneric add-fkey (object fkey &key)) (defgeneric add-comment (object comment &key)) (defgeneric table-list (object &key) (:documentation "Return the list of tables found in OBJECT.")) (defgeneric view-list (object &key) (:documentation "Return the list of views found in OBJECT.")) (defgeneric find-schema (object schema-name &key) (:documentation "Find a schema by SCHEMA-NAME in a catalog OBJECT and return the schema")) (defgeneric find-table (object table-name &key) (:documentation "Find a table by TABLE-NAME in a schema OBJECT and return the table")) (defgeneric find-view (object view-name &key) (:documentation "Find a table by TABLE-NAME in a schema OBJECT and return the table")) (defgeneric find-index (object index-name &key key test) (:documentation "Find an index by INDEX-NAME in a table OBJECT and return the index")) (defgeneric find-fkey (object fkey-name &key key test) (:documentation "Find a foreign key by FKEY-NAME in a table OBJECT and return the fkey")) (defgeneric maybe-add-schema (object schema-name &key) (:documentation "Add a new schema or return existing one.")) (defgeneric maybe-add-table (object table-name &key) (:documentation "Add a new table or return existing one.")) (defgeneric maybe-add-view (object view-name &key) (:documentation "Add a new view or return existing one.")) (defgeneric maybe-add-index (object index-name index &key key test) (:documentation "Add a new index or return existing one.")) (defgeneric maybe-add-fkey (object fkey-name fkey &key key test) (:documentation "Add a new fkey or return existing one.")) (defgeneric count-tables (object &key) (:documentation "Count how many tables we have in total in OBJECT.")) (defgeneric count-views (object &key) (:documentation "Count how many views we have in total in OBJECT.")) (defgeneric count-indexes (object &key) (:documentation "Count how many indexes we have in total in OBJECT.")) (defgeneric count-fkeys (object &key) (:documentation "Count how many forein keys we have in total in OBJECT.")) (defgeneric max-indexes-per-table (schema &key) (:documentation "Count how many indexes we have maximum per table in SCHEMA.")) (defgeneric cast (object) (:documentation "Cast a FIELD definition from a source database into a PostgreSQL COLUMN definition.")) ;;; ;;; Implementation of the methods ;;; (defmethod table-list ((schema schema) &key) "Return the list of tables for SCHEMA." (schema-table-list schema)) (defmethod table-list ((catalog catalog) &key) "Return the list of tables for table." (apply #'append (mapcar #'table-list (catalog-schema-list catalog)))) (defmethod view-list ((schema schema) &key) "Return the list of views for SCHEMA." (schema-view-list schema)) (defmethod view-list ((catalog catalog) &key) "Return the list of views for cATALOG." (apply #'append (mapcar #'view-list (catalog-schema-list catalog)))) (defun create-table (maybe-qualified-name) "Create a table instance from the db-uri component, either a string or a cons of two strings: (schema . table)." (typecase maybe-qualified-name (string (make-table :source-name maybe-qualified-name :name (apply-identifier-case maybe-qualified-name))) (cons (make-table :source-name maybe-qualified-name :name (apply-identifier-case (cdr maybe-qualified-name)) :schema (let ((sname (car maybe-qualified-name))) (make-schema :catalog nil :source-name sname :name (apply-identifier-case sname))))))) (defmethod add-schema ((catalog catalog) schema-name &key) "Add SCHEMA-NAME to CATALOG and return the new schema instance." (let ((schema (make-schema :catalog catalog :source-name schema-name :name (when schema-name (apply-identifier-case schema-name))))) (push-to-end schema (catalog-schema-list catalog)))) (defmethod add-table ((schema schema) table-name &key comment oid) "Add TABLE-NAME to SCHEMA and return the new table instance." (let ((table (make-table :source-name table-name :name (apply-identifier-case table-name) :schema schema :oid oid :comment (unless (or (null comment) (string= "" comment)) comment)))) (push-to-end table (schema-table-list schema)))) (defmethod add-view ((schema schema) view-name &key comment) "Add TABLE-NAME to SCHEMA and return the new table instance." (let ((view (make-table :source-name view-name :name (apply-identifier-case view-name) :schema schema :comment (unless (or (null comment) (string= "" comment)) comment)))) (push-to-end view (schema-view-list schema)))) (defmethod find-schema ((catalog catalog) schema-name &key) "Find SCHEMA-NAME in CATALOG and return the SCHEMA object of this name." (find schema-name (catalog-schema-list catalog) :key #'schema-source-name :test 'string=)) (defmethod find-table ((schema schema) table-name &key) "Find TABLE-NAME in SCHEMA and return the TABLE object of this name." (find table-name (schema-table-list schema) :key #'table-source-name :test 'string=)) (defmethod find-view ((schema schema) view-name &key) "Find TABLE-NAME in SCHEMA and return the TABLE object of this name." (find view-name (schema-view-list schema) :key #'table-source-name :test 'string=)) (defmethod maybe-add-schema ((catalog catalog) schema-name &key) "Add SCHEMA-NAME to the schema-list for CATALOG, or return the existing schema of the same name if it already exists in the catalog schema-list" (let ((schema (find-schema catalog schema-name))) (or schema (add-schema catalog schema-name)))) (defmethod maybe-add-table ((schema schema) table-name &key comment oid) "Add TABLE-NAME to the table-list for SCHEMA, or return the existing table of the same name if it already exists in the schema table-list." (let ((table (find-table schema table-name))) (or table (add-table schema table-name :oid oid :comment comment)))) (defmethod maybe-add-view ((schema schema) view-name &key comment) "Add TABLE-NAME to the table-list for SCHEMA, or return the existing table of the same name if it already exists in the schema table-list." (let ((table (find-view schema view-name))) (or table (add-view schema view-name :comment comment)))) (defmethod add-field ((table table) field &key) "Add COLUMN to TABLE and return the TABLE." (push-to-end field (table-field-list table))) (defmethod add-column ((table table) column &key) "Add COLUMN to TABLE and return the TABLE." (push-to-end column (table-column-list table))) (defmethod add-column ((index index) column &key) "Add COLUMN name to INDEX and return the INDEX." (push-to-end (apply-identifier-case column) (index-columns index))) (defmethod cast ((table table)) "Cast all fields in table into columns." (setf (table-column-list table) (mapcar #'cast (table-field-list table)))) (defmethod cast ((schema schema)) "Cast all fields of all tables in SCHEMA into columns." (loop :for table :in (schema-table-list schema) :do (cast table)) (loop :for view :in (schema-view-list schema) :do (cast view))) (defmethod cast ((catalog catalog)) "Cast all fields of all tables in all schemas in CATALOG into columns." (loop :for schema :in (catalog-schema-list catalog) :do (cast schema))) ;;; ;;; There's no simple equivalent to array_agg() in MS SQL, so the index and ;;; fkey queries return a row per index|fkey column rather than per ;;; index|fkey. Hence this extra API: ;;; (defmethod add-index ((table table) index &key) "Add INDEX to TABLE and return the TABLE." (push-to-end index (table-index-list table))) (defmethod find-index ((table table) index-name &key key (test #'string=)) "Find INDEX-NAME in TABLE and return the INDEX object of this name." (find index-name (table-index-list table) :key key :test test)) (defmethod maybe-add-index ((table table) index-name index &key key (test #'string=)) "Add the index INDEX to the table-index-list of TABLE unless it already exists, and return the INDEX object." (let ((current-index (find-index table index-name :key key :test test))) (or current-index (add-index table index)))) (defmethod add-fkey ((table table) fkey &key) "Add FKEY to TABLE and return the TABLE." (push-to-end fkey (table-fkey-list table))) (defmethod find-fkey ((table table) fkey-name &key key (test #'string=)) "Find FKEY-NAME in TABLE and return the FKEY object of this name." (find fkey-name (table-fkey-list table) :key key :test test)) (defmethod maybe-add-fkey ((table table) fkey-name fkey &key key (test #'string=)) "Add the foreign key FKEY to the table-fkey-list of TABLE unless it already exists, and return the FKEY object." (let ((current-fkey (find-fkey table fkey-name :key key :test test))) (or current-fkey (add-fkey table fkey)))) ;;; ;;; To report stats to the user, count how many objects we are taking care ;;; of. ;;; (defmethod count-tables ((schema schema) &key) "Count tables in given SCHEMA." (length (schema-table-list schema))) (defmethod count-tables ((catalog catalog) &key) (reduce #'+ (mapcar #'count-tables (catalog-schema-list catalog)))) (defmethod count-views ((schema schema) &key) "Count tables in given SCHEMA." (length (schema-view-list schema))) (defmethod count-views ((catalog catalog) &key) (reduce #'+ (mapcar #'count-views (catalog-schema-list catalog)))) (defmethod count-indexes ((table table) &key) "Count indexes in given TABLE." (length (table-index-list table))) (defmethod count-indexes ((schema schema) &key) "Count indexes in given SCHEMA." (reduce #'+ (mapcar #'count-indexes (schema-table-list schema)))) (defmethod count-indexes ((catalog catalog) &key) "Count indexes in given SCHEMA." (reduce #'+ (mapcar #'count-indexes (catalog-schema-list catalog)))) (defmethod count-fkeys ((table table) &key) "Count fkeys in given TABLE." (length (table-fkey-list table))) (defmethod count-fkeys ((schema schema) &key) "Count fkeys in given SCHEMA." (reduce #'+ (mapcar #'count-fkeys (schema-table-list schema)))) (defmethod count-fkeys ((catalog catalog) &key) "Count fkeys in given SCHEMA." (reduce #'+ (mapcar #'count-fkeys (catalog-schema-list catalog)))) (defmethod max-indexes-per-table ((schema schema) &key) "Count how many indexes maximum per table are listed in SCHEMA." (reduce #'max (mapcar #'length (mapcar #'table-index-list (schema-table-list schema))) :initial-value 0)) "Count how many indexes maximum per table are listed in SCHEMA." (defmethod max-indexes-per-table ((catalog catalog) &key) "Count how many indexes maximum per table are listed in SCHEMA." (reduce #'max (mapcar #'max-indexes-per-table (catalog-schema-list catalog)) :initial-value 0)) ;;; ;;; Not a generic/method because only used for the table object, and we want ;;; to use the usual structure print-method in stack traces. ;;; (defgeneric format-table-name (object) (:documentation "Format the OBJECT name for PostgreSQL.")) (defmethod format-table-name ((table table)) "TABLE should be a table instance, but for hysterical raisins might be a CONS of a schema name and a table name, or just the table name as a string." (format nil "~@[~a.~]~a" (when (table-schema table) (schema-name (table-schema table))) (table-name table))) (defmacro with-schema ((var table-name) &body body) "When table-name is a CONS, SET search_path TO its CAR and return its CDR, otherwise just return the TABLE-NAME. A PostgreSQL connection must be established when calling this function." (let ((schema-name (gensym "SCHEMA-NAME"))) `(let* ((,schema-name (when (table-schema ,table-name) (schema-name (table-schema ,table-name)))) (,var (progn (if ,schema-name (let ((sql (format nil "SET search_path TO ~a;" ,schema-name))) (pgloader.pgsql:pgsql-execute sql))) (table-name ,table-name)))) ,@body))) pgloader/src/regress/0000755000175000017500000000000013125003010014763 5ustar vagrantvagrantpgloader/src/regress/regress.lisp0000644000175000017500000001300313125003010017323 0ustar vagrantvagrant;;; ;;; Regression tests driver. ;;; ;;; We're using SQL EXCEPT to compare what we loaded with what we expected ;;; to load. ;;; (in-package #:pgloader) (defun process-regression-test (load-file &key start-logger) "Run a regression test for given LOAD-FILE." (unless (probe-file load-file) (format t "Regression testing ~s: file does not exists." load-file) #-pgloader-image (values nil +os-code-error-regress+) #+pgloader-image (uiop:quit +os-code-error-regress+)) ;; now do our work (with-monitor (:start-logger start-logger) (log-message :log "Regression testing: ~s" load-file) (process-command-file (list load-file) :flush-summary nil) ;; once we are done running the load-file, compare the loaded data with ;; our expected data file (bind ((expected-subdir (directory-namestring (asdf:system-relative-pathname :pgloader "test/regress/expected/"))) (expected-data-file (make-pathname :defaults load-file :type "out" :directory expected-subdir)) ((target-conn gucs) (parse-target-pg-db-uri load-file)) (*pg-settings* (pgloader.pgsql:sanitize-user-gucs gucs)) (*pgsql-reserved-keywords* (list-reserved-keywords target-conn)) (target-table (create-table (pgconn-table-name target-conn))) (expected-data-source (parse-source-string-for-type :copy (uiop:native-namestring expected-data-file))) ;; change target table-name schema (expected-data-target (let ((e-d-t (clone-connection target-conn))) (setf (pgconn-table-name e-d-t) ;; ;; The connection facility still works with cons here, ;; rather than table structure instances, because of ;; depedencies as explained in ;; src/parsers/command-db-uri.lisp ;; (cons "expected" (table-name target-table))) e-d-t))) (log-message :log "Comparing loaded data against ~s" expected-data-file) ;; prepare expected table in "expected" schema (with-pgsql-connection (target-conn) (with-schema (unqualified-table-name target-table) (let* ((tname (apply-identifier-case unqualified-table-name)) (drop (format nil "drop table if exists expected.~a;" tname)) (create (format nil "create table expected.~a(like ~a);" tname tname))) (log-message :notice "~a" drop) (pomo:query drop) (log-message :notice "~a" create) (pomo:query create)))) ;; load expected data (load-data :from expected-data-source :into expected-data-target :options '(:truncate t) :start-logger nil :flush-summary t) ;; now compare both (with-pgsql-connection (target-conn) (with-schema (unqualified-table-name target-table) (let* ((tname (apply-identifier-case unqualified-table-name)) (cols (loop :for (name type) :in (list-columns tname) ;; ;; We can't just use table names here, because ;; PostgreSQL support for the POINT datatype fails ;; to implement EXCEPT support, and the query then ;; fails with: ;; ;; could not identify an equality operator for type point ;; :collect (if (string= "point" type) (format nil "~s::text" name) (format nil "~s" name)))) (sql (format nil "select count(*) from (select ~{~a~^, ~} from expected.~a except select ~{~a~^, ~} from ~a) ss" cols tname cols tname)) (diff-count (pomo:query sql :single))) (log-message :notice "~a" sql) (log-message :notice "Got a diff of ~a rows" diff-count) (if (= 0 diff-count) (progn (log-message :log "Regress pass.") #-pgloader-image (values diff-count +os-code-success+) #+pgloader-image (uiop:quit +os-code-success+)) (progn (log-message :log "Regress fail.") #-pgloader-image (values diff-count +os-code-error-regress+) #+pgloader-image (uiop:quit +os-code-error-regress+))))))))) ;;; ;;; TODO: use the catalogs structures and introspection facilities. ;;; (defun list-columns (table-name &optional schema) "Returns the list of columns for table TABLE-NAME in schema SCHEMA, and must be run with an already established PostgreSQL connection." (pomo:query (format nil " select attname, t.oid::regtype from pg_class c join pg_namespace n on n.oid = c.relnamespace left join pg_attribute a on c.oid = a.attrelid join pg_type t on t.oid = a.atttypid where c.oid = '~:[~*~a~;~a.~a~]'::regclass and attnum > 0 order by attnum" schema schema table-name))) pgloader/src/package.lisp0000644000175000017500000005275213127307525015634 0ustar vagrantvagrant;;;; package.lisp ;;; ;;; To avoid circular files dependencies, define all the packages here ;;; (eval-when (:compile-toplevel :load-toplevel :execute) (defun cl-user::export-inherited-symbols (source target) (let ((pkg-source (find-package (string-upcase source))) (pkg-target (find-package (string-upcase target)))) (do-external-symbols (s pkg-source) (export s pkg-target))))) (defpackage #:pgloader.transforms (:use #:cl) (:export #:precision #:scale #:intern-symbol #:typemod-expr-to-function)) (defpackage #:pgloader.logs (:use #:cl #:pgloader.params) (:import-from #:cl-log #:defcategory #:log-manager #:start-messenger #:ring-messenger #:text-file-messenger #:text-stream-messenger #:formatted-message) (:export #:*log-messengers* #:start-logger #:stop-logger)) (defpackage #:pgloader.quoting (:use #:cl #:pgloader.params) (:export #:apply-identifier-case #:build-identifier #:quoted-p #:ensure-unquoted)) (defpackage #:pgloader.catalog (:use #:cl #:pgloader.params #:pgloader.quoting) (:export #:format-create-sql #:format-drop-sql #:format-default-value #:catalog #:schema #:table #:sqltype #:column #:index #:fkey #:trigger #:procedure #:cast ; generic function for sources #:apply-identifier-case #:make-catalog #:make-schema #:make-table #:create-table #:make-view #:make-sqltype #:make-column #:make-index #:make-fkey #:make-trigger #:make-procedure #:catalog-name #:catalog-schema-list #:catalog-types-without-btree #:schema-name #:schema-catalog #:schema-source-name #:schema-table-list #:schema-view-list #:table-name #:table-source-name #:table-schema #:table-oid #:table-comment #:table-storage-parameter-list #:table-field-list #:table-column-list #:table-index-list #:table-fkey-list #:table-trigger-list #:sqltype-name #:sqltype-type #:sqltype-source-def #:sqltype-extra #:column-name #:column-type-name #:column-type-mod #:column-nullable #:column-default #:column-comment #:column-transform #:column-extra #:index-name #:index-oid #:index-schema #:index-table #:index-primary #:index-unique #:index-columns #:index-sql #:index-conname #:index-condef #:index-filter #:index-fk-deps #:fkey-name #:fkey-oid #:fkey-foreign-table #:fkey-foreign-columns #:fkey-table #:fkey-columns #:fkey-condef #:fkey-update-rule #:fkey-delete-rule #:fkey-match-rule #:fkey-deferrable #:fkey-initially-deferred #:trigger-name #:trigger-table #:trigger-action #:trigger-procedure-name #:trigger-procedure #:procedure-name #:procedure-returns #:procedure-language #:procedure-body #:table-list #:view-list #:add-schema #:find-schema #:maybe-add-schema #:add-table #:find-table #:maybe-add-table #:add-view #:find-view #:maybe-add-view #:add-field #:add-column #:add-index #:find-index #:maybe-add-index #:add-fkey #:find-fkey #:maybe-add-fkey #:count-tables #:count-views #:count-indexes #:count-fkeys #:max-indexes-per-table #:push-to-end #:with-schema #:alter-table #:alter-schema #:string-match-rule #:make-string-match-rule #:string-match-rule-target #:regex-match-rule #:make-regex-match-rule #:regex-match-rule-target #:matches #:match-rule #:make-match-rule #:match-rule-rule #:match-rule-schema #:match-rule-action #:match-rule-args #:format-table-name)) (defpackage #:pgloader.state (:use #:cl #:pgloader.params #:pgloader.catalog) (:export #:make-pgstate #:pgstate-tabnames #:pgstate-tables #:pgstate-read #:pgstate-rows #:pgstate-errs #:pgstate-secs #:pgstate-get-label #:pgstate-new-label #:pgstate-setf #:pgstate-incf #:pgstate-decf #:pgtable-initialize-reject-files #:pgtable-secs #:pgtable-start #:pgtable-stop #:pgtable-reject-data #:pgtable-reject-logs #:report-pgtable-stats #:report-pgstate-stats ;; report #:report-header #:report-table-name #:report-results #:report-footer #:report-summary #:report-full-summary)) (defpackage #:pgloader.monitor (:use #:cl #:pgloader.params #:pgloader.state) (:export #:with-monitor #:*monitoring-kernel* #:*monitoring-queue* #:log-message #:new-label #:update-stats #:process-bad-row #:flush-summary #:with-stats-collection #:send-event #:start-monitor #:stop-monitor #:elapsed-time-since #:timing)) (defpackage #:pgloader.batch (:use #:cl #:pgloader.params #:pgloader.monitor) (:export #:make-batch #:batch-p #:batch-start #:batch-data #:batch-count #:batch-max-count #:batch-max-count #:batch-bytes #:push-row #:batch-oversized-p #:batch-full-p)) (defpackage #:pgloader.queries (:use #:cl #:pgloader.params) (:export #:*queries* #:sql)) (defpackage #:pgloader.utils (:use #:cl #:pgloader.params #:pgloader.queries #:pgloader.quoting #:pgloader.catalog #:pgloader.monitor #:pgloader.state #:pgloader.batch) (:import-from #:alexandria #:appendf #:read-file-into-string) (:export ;; bits from alexandria #:appendf #:read-file-into-string ;; utils #:format-interval #:camelCase-to-colname #:unquote #:expand-user-homedir-pathname #:pretty-print-bytes #:split-range #:distribute ;; threads #:make-kernel ;; charsets #:list-encodings-and-aliases #:show-encodings #:make-external-format)) (cl-user::export-inherited-symbols "pgloader.queries" "pgloader.utils") (cl-user::export-inherited-symbols "pgloader.quoting" "pgloader.utils") (cl-user::export-inherited-symbols "pgloader.catalog" "pgloader.utils") (cl-user::export-inherited-symbols "pgloader.monitor" "pgloader.utils") (cl-user::export-inherited-symbols "pgloader.state" "pgloader.utils") (cl-user::export-inherited-symbols "pgloader.batch" "pgloader.utils") ;; ;; Not really a source, more a util package to deal with http and zip ;; (defpackage #:pgloader.archive (:use #:cl #:pgloader.params) (:import-from #:pgloader.monitor #:log-message) (:export #:*supporter-archive-types* #:archivep #:http-fetch-file #:expand-archive #:get-matching-filenames)) ;;; ;;; PostgreSQL COPY support, and generic sources API. ;;; (defpackage #:pgloader.parse-date (:use #:cl #:esrap) (:export #:parse-date-string #:parse-date-format)) (defpackage #:pgloader.connection (:use #:cl #:pgloader.archive) (:import-from #:pgloader.monitor #:log-message) (:export #:connection #:open-connection #:close-connection #:clone-connection #:fd-connection #:db-connection #:connection-error #:fd-connection-error #:db-connection-error #:with-connection #:query #:check-connection ;; also export slot names #:type #:handle #:uri #:arch #:path ;; file based connections API for HTTP and Archives support #:fetch-file #:expand ;; connection classes accessors #:conn-type #:conn-handle #:db-conn #:fd-path #:db-name #:db-host #:db-port #:db-user #:db-pass)) (defpackage #:pgloader.pgsql (:use #:cl #:pgloader.params #:pgloader.utils #:pgloader.connection #:pgloader.catalog) (:import-from #:cl-postgres #:database-error-context) (:export #:pgsql-connection #:pgconn-use-ssl #:pgconn-table-name #:with-pgsql-transaction #:with-pgsql-connection #:pgsql-execute #:pgsql-execute-with-timing #:pgsql-connect-and-execute-with-timing #:postgresql-unavailable ;; postgresql schema facilities #:truncate-tables #:copy-from-file #:copy-from-queue #:copy-from-batch #:set-table-oids #:create-sqltypes #:create-schemas #:create-tables #:create-views #:drop-pgsql-fkeys #:create-pgsql-fkeys #:create-triggers #:translate-index-filter #:process-index-definitions #:fetch-pgsql-catalog #:merge-catalogs #:create-indexes-in-kernel #:drop-indexes #:maybe-drop-indexes #:create-indexes-again #:reset-sequences #:comment-on-tables-and-columns ;; index filter rewriting support #:translate-index-filter #:process-index-definitions ;; postgresql introspection queries #:list-all-columns #:list-all-indexes #:list-all-fkeys #:list-missing-fk-deps #:list-schemas #:list-table-oids ;; postgresql identifiers #:list-reserved-keywords #:list-typenames-without-btree-support ;; postgresql user provided gucs #:sanitize-user-gucs ;; postgresql data format #:get-date-columns #:format-vector-row)) (defpackage #:pgloader.sources (:use #:cl #:pgloader.params #:pgloader.utils #:pgloader.connection #:pgloader.pgsql #:pgloader.batch) (:import-from #:pgloader.transforms #:precision #:scale #:intern-symbol #:typemod-expr-to-function) (:import-from #:pgloader.parse-date #:parse-date-string #:parse-date-format) (:export #:copy #:md-copy #:db-copy ;; accessors #:source-db #:target-db #:source #:target #:fields #:columns #:transforms #:encoding #:skip-lines #:header ;; main protocol/api #:concurrency-support #:map-rows #:copy-column-list #:queue-raw-data #:data-is-preformatted-p #:copy-from #:copy-to #:copy-database ;; md-copy protocol/api #:parse-header #:process-rows ;; the md-connection facilities #:md-connection #:md-spec #:md-strm #:expand-spec #:clone-copy-for ;; the db-methods #:fetch-metadata #:prepare-pgsql-database #:cleanup #:instanciate-table-copy-object #:complete-pgsql-database #:end-kernels ;; file based utils for csv, fixed etc #:with-open-file-or-stream #:get-pathname #:project-fields #:reformat-then-process ;; database cast machinery #:*default-cast-rules* #:*cast-rules* #:apply-casting-rules #:format-pgsql-type)) ;;; ;;; other utilities ;;; (defpackage #:pgloader.ini (:use #:cl #:pgloader.params #:pgloader.utils #:pgloader.connection) (:import-from #:alexandria #:read-file-into-string) (:import-from #:pgloader.pgsql #:with-pgsql-transaction #:pgsql-execute) (:export #:read-ini-file #:parse-ini-file #:write-command-to-string #:convert-ini-into-commands #:convert-ini-into-files)) (defpackage #:pgloader.sql (:use #:cl) (:export #:read-queries)) ;; ;; specific source handling ;; (defpackage #:pgloader.csv (:use #:cl #:pgloader.params #:pgloader.utils #:pgloader.connection #:pgloader.sources) (:import-from #:pgloader.pgsql #:maybe-drop-indexes #:create-indexes-again) (:export #:csv-connection #:specs #:csv-specs #:get-pathname #:copy-csv #:copy-from #:import-database #:guess-csv-params #:guess-all-csv-params)) (defpackage #:pgloader.fixed (:use #:cl #:pgloader.params #:pgloader.utils #:pgloader.connection #:pgloader.sources) (:import-from #:pgloader.csv #:csv-connection #:specs #:csv-specs) (:import-from #:pgloader.pgsql #:maybe-drop-indexes #:create-indexes-again) (:export #:fixed-connection #:copy-fixed #:copy-from)) (defpackage #:pgloader.copy (:use #:cl #:pgloader.params #:pgloader.utils #:pgloader.connection #:pgloader.sources) (:import-from #:pgloader.csv #:csv-connection #:specs #:csv-specs) (:import-from #:pgloader.pgsql #:maybe-drop-indexes #:create-indexes-again) (:export #:copy-connection #:copy-copy #:copy-from)) (defpackage #:pgloader.ixf (:use #:cl #:pgloader.params #:pgloader.utils #:pgloader.connection #:pgloader.sources) (:import-from #:pgloader.pgsql #:with-pgsql-transaction #:pgsql-execute #:pgsql-execute-with-timing #:create-tables #:format-vector-row) (:export #:ixf-connection #:copy-ixf #:map-rows #:copy-from)) (defpackage #:pgloader.db3 (:use #:cl #:pgloader.params #:pgloader.utils #:pgloader.connection #:pgloader.sources) (:import-from #:pgloader.pgsql #:with-pgsql-transaction #:pgsql-execute #:pgsql-execute-with-timing #:create-tables #:format-vector-row) (:export #:dbf-connection #:copy-db3 #:map-rows #:copy-to #:copy-from)) (defpackage #:pgloader.mysql (:use #:cl #:pgloader.params #:pgloader.utils #:pgloader.connection #:pgloader.sources) (:import-from #:pgloader.transforms #:precision #:scale) (:import-from #:pgloader.pgsql #:with-pgsql-connection #:with-pgsql-transaction #:pgsql-execute #:pgsql-execute-with-timing #:list-table-oids #:create-tables #:create-views #:truncate-tables #:drop-pgsql-fkeys #:create-pgsql-fkeys #:create-indexes-in-kernel #:format-vector-row #:reset-sequences #:comment-on-tables-and-columns) (:export #:mysql-connection #:copy-mysql #:*decoding-as* #:*mysql-default-cast-rules* #:with-mysql-connection #:map-rows #:copy-to #:copy-from #:copy-database #:list-databases #:export-database #:export-import-database)) (defpackage #:pgloader.sqlite (:use #:cl #:pgloader.params #:pgloader.utils #:pgloader.connection #:pgloader.sources) (:import-from #:pgloader.transforms #:precision #:scale) (:import-from #:pgloader.pgsql #:with-pgsql-transaction #:pgsql-execute #:pgsql-execute-with-timing #:create-tables #:truncate-tables #:create-indexes-in-kernel #:reset-sequences #:comment-on-tables-and-columns) (:export #:sqlite-connection #:copy-sqlite #:*sqlite-default-cast-rules* #:map-rows #:copy-to #:copy-from #:copy-database)) (defpackage #:pgloader.mssql (:use #:cl #:pgloader.params #:pgloader.utils #:pgloader.connection #:pgloader.sources) (:import-from #:pgloader.transforms #:precision #:scale) (:import-from #:pgloader.pgsql #:with-pgsql-connection #:with-pgsql-transaction #:pgsql-execute #:pgsql-execute-with-timing #:pgsql-connect-and-execute-with-timing #:list-table-oids #:create-tables #:create-views #:drop-pgsql-fkeys #:create-pgsql-fkeys #:create-indexes-in-kernel #:format-vector-row #:reset-sequences) (:export #:mssql-connection #:copy-mssql #:*mssql-default-cast-rules* #:map-rows #:copy-to #:copy-from #:copy-database)) (defpackage #:pgloader.mssql.index-filter (:use #:cl #:esrap #:pgloader.utils #:pgloader.mssql) (:import-from #:pgloader.pgsql #:translate-index-filter)) (defpackage #:pgloader.syslog (:use #:cl #:pgloader.params #:pgloader.utils) (:import-from #:pgloader.pgsql #:with-pgsql-transaction #:pgsql-execute) (:export #:stream-messages #:start-syslog-server #:send-message)) ;;; ;;; the command parser ;;; (defpackage #:pgloader.parser (:use #:cl #:esrap #:metabang.bind #:pgloader.params #:pgloader.utils #:pgloader.sql #:pgloader.connection) (:shadow #:namestring #:number #:inline) (:import-from #:alexandria #:read-file-into-string) (:import-from #:pgloader.sources #:md-connection #:md-spec) (:import-from #:pgloader.pgsql #:pgsql-connection #:with-pgsql-transaction #:pgsql-execute #:pgconn-use-ssl #:pgconn-table-name #:make-table) (:import-from #:pgloader.csv #:csv-connection #:specs #:csv-specs) (:import-from #:pgloader.fixed #:fixed-connection) (:import-from #:pgloader.copy #:copy-connection) (:import-from #:pgloader.sources #:*default-cast-rules* #:*cast-rules*) (:import-from #:pgloader.mysql #:mysql-connection #:*decoding-as* #:*mysql-default-cast-rules*) (:import-from #:pgloader.mssql #:mssql-connection #:*mssql-default-cast-rules*) (:import-from #:pgloader.sqlite #:sqlite-connection #:*sqlite-default-cast-rules*) (:import-from #:pgloader.db3 #:dbf-connection) (:import-from #:pgloader.ixf #:ixf-connection) (:export #:parse-commands #:parse-commands-from-file ;; tools to enable complete cli parsing in main.lisp #:process-relative-pathnames #:parse-source-string #:parse-source-string-for-type #:parse-target-string #:parse-cli-options #:parse-cli-gucs #:parse-cli-type #:parse-cli-encoding #:parse-cli-fields #:parse-cli-casts #:parse-sql-file #:parse-target-pg-db-uri ;; connection types / classes symbols for use in main #:connection #:conn-type #:csv-connection #:fixed-connection #:copy-connection #:dbf-connection #:ixf-connection #:sqlite-connection #:mysql-connection #:mssql-connection ;; functions to generate lisp code from parameters #:lisp-code-for-loading-from-mysql #:lisp-code-for-loading-from-csv #:lisp-code-for-loading-from-fixed #:lisp-code-for-loading-from-copy #:lisp-code-for-loading-from-dbf #:lisp-code-for-loading-from-ixf #:lisp-code-for-loading-from-sqlite #:lisp-code-for-loading-from-mssql)) ;; ;; main package ;; (defpackage #:pgloader (:use #:cl #:pgloader.params #:pgloader.utils #:pgloader.parser #:pgloader.connection #:metabang.bind) (:import-from #:pgloader.pgsql #:pgconn-table-name #:pgsql-connection #:copy-from-file) (:import-from #:pgloader.pgsql #:with-pgsql-connection #:with-schema #:list-reserved-keywords) (:export #:*version-string* #:*state* #:*fd-path-root* #:*root-dir* #:*pg-settings* #:*dry-run* #:*on-error-stop* #:load-data #:parse-source-string #:parse-source-string-for-type #:parse-target-string #:run-commands #:parse-commands #:with-database-uri #:slurp-file-into-string #:copy-from-file)) (in-package #:pgloader) ;;; ;;; Some package names are a little too long to my taste and don't ship with ;;; nicknames, so use `rename-package' here to give them some new nicknames. ;;; (loop for (package . nicknames) in '((lparallel lp) (lparallel.queue lq) (simple-date date) (split-sequence sq) (py-configparser ini)) do (rename-package package package nicknames)) pgloader/src/sources/0000755000175000017500000000000013124502441015007 5ustar vagrantvagrantpgloader/src/sources/ixf/0000755000175000017500000000000013103345261015577 5ustar vagrantvagrantpgloader/src/sources/ixf/ixf.lisp0000644000175000017500000000500113047375022017257 0ustar vagrantvagrant;;; ;;; Tools to handle IBM PC version of IXF file format ;;; ;;; http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.admin.dm.doc/doc/r0004667.html (in-package :pgloader.ixf) ;;; ;;; Integration with pgloader ;;; (defclass copy-ixf (db-copy) ((timezone :accessor timezone ; timezone :initarg :timezone :initform local-time:+utc-zone+)) (:documentation "pgloader IXF Data Source")) (defmethod initialize-instance :after ((source copy-ixf) &key) "Add a default value for transforms in case it's not been provided." (setf (slot-value source 'source) (let ((table-name (pathname-name (fd-path (source-db source))))) (make-table :source-name table-name :name (apply-identifier-case table-name)))) ;; force default timezone when nil (when (null (timezone source)) (setf (timezone source) local-time:+utc-zone+))) (defmethod map-rows ((copy-ixf copy-ixf) &key process-row-fn) "Extract IXF data and call PROCESS-ROW-FN function with a single argument (a list of column values) for each row." (let ((local-time:*default-timezone* (timezone copy-ixf))) (log-message :notice "Parsing IXF with TimeZone: ~a" (local-time::timezone-name local-time:*default-timezone*)) (with-connection (conn (source-db copy-ixf)) (let ((ixf (ixf:make-ixf-file :stream (conn-handle conn)))) (ixf:read-headers ixf) (ixf:map-data ixf process-row-fn))))) (defmethod instanciate-table-copy-object ((ixf copy-ixf) (table table)) "Create an new instance for copying TABLE data." (let ((new-instance (change-class (call-next-method ixf table) 'copy-ixf))) (setf (timezone new-instance) (timezone ixf)) new-instance)) (defmethod fetch-metadata ((ixf copy-ixf) (catalog catalog) &key materialize-views only-tables create-indexes foreign-keys including excluding) "Collect IXF metadata and prepare our catalog from that." (declare (ignore materialize-views only-tables create-indexes foreign-keys including excluding)) (let* ((table (or (target ixf) (source ixf))) (schema (add-schema catalog (table-name table)))) (push-to-end table (schema-table-list schema)) (with-connection (conn (source-db ixf)) (list-all-columns (conn-handle conn) table)) catalog)) pgloader/src/sources/ixf/ixf-schema.lisp0000644000175000017500000000705013103345261020516 0ustar vagrantvagrant;;; ;;; Tools to handle IBM PC version of IXF file format ;;; ;;; http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.admin.dm.doc/doc/r0004667.html (in-package :pgloader.ixf) (defclass ixf-connection (fd-connection) () (:documentation "pgloader connection parameters for IXF files.")) (defmethod initialize-instance :after ((ixfconn ixf-connection) &key) "Assign the type slot to dbf." (setf (slot-value ixfconn 'type) "ixf")) (defmethod open-connection ((ixfconn ixf-connection) &key) (setf (conn-handle ixfconn) (open (fd-path ixfconn) :direction :input :element-type '(unsigned-byte 8))) ixfconn) (defmethod close-connection ((ixfconn ixf-connection)) (close (conn-handle ixfconn)) (setf (conn-handle ixfconn) nil) ixfconn) (defmethod clone-connection ((c ixf-connection)) (change-class (call-next-method c) 'ixf-connection)) (defvar *ixf-pgsql-type-mapping* '((#. ixf:+smallint+ . "smallint") (#. ixf:+integer+ . "integer") (#. ixf:+bigint+ . "bigint") (#. ixf:+decimal+ . "numeric") (#. ixf:+float+ . "double precision") (#. ixf:+timestamp+ . "timestamptz") (#. ixf:+date+ . "date") (#. ixf:+time+ . "time") (#. ixf:+char+ . "text") (#. ixf:+varchar+ . "text") (#. ixf:+blob-location-spec+ . "bytea") (#. ixf:+dbblob-location-spec+ . "bytea") (#. ixf:+dbclob-location-spec+ . "text"))) (defun cast-ixf-type (ixf-type) "Return the PostgreSQL type name for a given IXF type name." (let ((pgtype (cdr (assoc ixf-type *ixf-pgsql-type-mapping*)))) (unless pgtype (error "IXF Type mapping unknown for: ~d" ixf-type)) pgtype)) (defun transform-function (field) "Return the transformation functions needed to cast from ixf-column data." (let ((coltype (cast-ixf-type (ixf:ixf-column-type field)))) ;; ;; The IXF driver we use maps the data type and gets ;; back proper CL typed objects, where we only want to ;; deal with text. ;; (cond ((or (string-equal "float" coltype) (string-equal "real" coltype) (string-equal "double precision" coltype) (and (<= 7 (length coltype)) (string-equal "numeric" coltype :end2 7))) #'pgloader.transforms::float-to-string) ((string-equal "text" coltype) nil) ((string-equal "bytea" coltype) #'pgloader.transforms::byte-vector-to-bytea) (t (lambda (c) (when c (princ-to-string c))))))) (defmethod cast ((col ixf:ixf-column)) "Return the PostgreSQL type definition from given IXF column definition." (make-column :name (apply-identifier-case (ixf:ixf-column-name col)) :type-name (cast-ixf-type (ixf:ixf-column-type col)) :nullable (ixf:ixf-column-nullable col) :default (when (ixf:ixf-column-has-default col) (format-default-value (ixf:ixf-column-default col))) :transform (transform-function col) :comment (let ((comment (ixf:ixf-column-desc col))) (unless (or (null comment) (string= comment "")) comment)))) (defun list-all-columns (ixf-stream table) "Return the list of columns for the given IXF-FILE-NAME." (ixf:with-ixf-stream (ixf ixf-stream) (loop :for field :across (ixf:ixf-table-columns (ixf:ixf-file-table ixf)) :do (add-field table field)))) pgloader/src/sources/common/0000755000175000017500000000000013127365036016311 5ustar vagrantvagrantpgloader/src/sources/common/files-and-pathnames.lisp0000644000175000017500000001062113047375022023017 0ustar vagrantvagrant;;; ;;; Some common tools for file based sources, such as CSV and FIXED ;;; (in-package #:pgloader.sources) (defclass md-connection (fd-connection) ((spec :initarg :spec :accessor md-spec) (strm :initarg :strm :accessor md-strm)) (:documentation "pgloader connection parameters for a multi-files source.")) (defmethod print-object ((c md-connection) stream) (print-unreadable-object (c stream :type t :identity t) (with-slots (type spec) c (let ((path (when (slot-boundp c 'path) (slot-value c 'path)))) (etypecase path (string (format stream "~a://~a:~a" type (first spec) path)) (list (format stream "~a://~a:~{~a~^,~}" type (first spec) path))))))) (defmethod expand :after ((md md-connection)) "Expand the archive for the MD connection." (when (and (slot-boundp md 'pgloader.connection::path) (slot-value md 'pgloader.connection::path) (uiop:file-pathname-p (fd-path md))) (setf (md-spec md) `(:filename ,(fd-path md))))) (defmethod fetch-file :after ((md md-connection)) "When the fd-connection has an URI slot, download its file." (when (and (slot-boundp md 'pgloader.connection::path) (slot-value md 'pgloader.connection::path)) (setf (md-spec md) `(:filename ,(fd-path md))))) (defgeneric expand-spec (md-connection) (:documentation "Expand specification for an FD source.")) (defmethod expand-spec ((md md-connection)) "Given fd spec as a CONS of a source type and a tagged object, expand the tagged object depending on the source type and return a list of pathnames." (destructuring-bind (type &rest part) (md-spec md) (ecase type (:inline (list (md-spec md))) (:stdin (list *standard-input*)) (:regex (destructuring-bind (keep regex root) part (filter-directory regex :keep keep :root (or *fd-path-root* root)))) (:filename (let* ((filename (first part)) (realname (if (fad:pathname-absolute-p filename) filename (merge-pathnames filename *fd-path-root*)))) (if (probe-file realname) (list realname) (error "File does not exists: '~a'." realname))))))) (defmethod open-connection ((md md-connection) &rest args &key &allow-other-keys) "We know how to open several kinds of specs here, all that target a single file as input. The multi-file specs must have been expanded before trying to open the connection." (when (fd-path md) (log-message :notice "Opening ~s" (fd-path md)) ; info (cond ;; inline ((and (listp (fd-path md)) (eq :inline (first (fd-path md)))) (destructuring-bind (filename . position) (second (fd-path md)) ;; open the filename with given extra args (setf (md-strm md) (apply #'open filename args)) ;; and position the stream as expected (file-position (md-strm md) position))) ;; stdin ((streamp (fd-path md)) (setf (md-strm md) (fd-path md))) ;; other cases should be filenames (t (setf (md-strm md) (apply #'open (fd-path md) args))))) md) (defmethod close-connection ((md md-connection)) "Reset." (when (and (slot-boundp md 'strm) (md-strm md)) (close (md-strm md))) (setf (md-strm md) nil)) (defun get-pathname (dbname table-name &key (fd-path-root *fd-path-root*)) "Return a pathname where to read or write the file data" (make-pathname :directory (pathname-directory (merge-pathnames (format nil "~a/" dbname) fd-path-root)) :name table-name :type "csv")) (defun filter-directory (regex &key (keep :first) ; or :all (root *fd-path-root*)) "Walk the ROOT directory and KEEP either the :first or :all the matches against the given regexp." (let* ((candidates (pgloader.archive:get-matching-filenames root regex)) (candidates (ecase keep (:first (when candidates (list (first candidates)))) (:all candidates)))) (unless candidates (error "No file matching '~a' in expanded archive in '~a'" regex root)) (loop for candidate in candidates do (if (probe-file candidate) candidate (error "File does not exists: '~a'." candidate)) finally (return candidates)))) pgloader/src/sources/common/casting-rules.lisp0000644000175000017500000001473513047375022021771 0ustar vagrantvagrant;;; ;;; Type casting machinery, to share among all database kind sources. ;;; (in-package #:pgloader.sources) ;; ;; The special variables *default-cast-rules* and *cast-rules* must be bound ;; by specific database commands with proper values at run-time. ;; (defvar *default-cast-rules* nil "Default casting rules.") (defvar *cast-rules* nil "Specific casting rules added in the command.") ;;; ;;; Handling typmod in the general case, don't apply to ENUM types ;;; (defun parse-column-typemod (data-type column-type) "Given int(7), returns the number 7. Beware that some data-type are using a typmod looking definition for things that are not typmods at all: enum." (unless (or (string= "enum" data-type) (string= "set" data-type)) (let ((start-1 (position #\( column-type)) ; just before start position (end (position #\) column-type))) ; just before end position (when start-1 (destructuring-bind (a &optional b) (mapcar #'parse-integer (sq:split-sequence #\, column-type :start (+ 1 start-1) :end end)) (list a b)))))) (defun typemod-expr-matches-p (rule-typemod-expr typemod) "Check if an expression such as (< 10) matches given typemod." (funcall (compile nil (typemod-expr-to-function rule-typemod-expr)) typemod)) (defun cast-rule-matches (rule source) "Returns the target datatype if the RULE matches the SOURCE, or nil" (destructuring-bind (&key ((:source rule-source)) ((:target rule-target)) using) rule (destructuring-bind ;; it's either :type or :column, just cope with both thanks to ;; &allow-other-keys (&key ((:type rule-source-type) nil t-s-p) ((:column rule-source-column) nil c-s-p) ((:typemod typemod-expr) nil tm-s-p) ((:default rule-source-default) nil d-s-p) ((:not-null rule-source-not-null) nil n-s-p) ((:auto-increment rule-source-auto-increment)) &allow-other-keys) rule-source (destructuring-bind (&key table-name column-name type ctype typemod default not-null auto-increment) source (declare (ignore ctype)) (when (and (or (and t-s-p (string= type rule-source-type)) (and c-s-p (string-equal table-name (car rule-source-column)) (string-equal column-name (cdr rule-source-column)))) (or (null tm-s-p) (typemod-expr-matches-p typemod-expr typemod)) (or (null d-s-p) (string= default rule-source-default)) (or (null n-s-p) (eq not-null rule-source-not-null)) ;; current RULE only matches SOURCE when both have an ;; auto_increment property, or none have it. (or (and auto-increment rule-source-auto-increment) (and (not auto-increment) (not rule-source-auto-increment)))) (list :using using :target rule-target)))))) (defun make-pgsql-type (source target using) "Returns a COLUMN struct suitable for a PostgreSQL type definition" (destructuring-bind (&key ((:table-name source-table-name)) ((:column-name source-column-name)) ((:type source-type)) ((:ctype source-ctype)) ((:typemod source-typemod)) ((:default source-default)) ((:not-null source-not-null)) &allow-other-keys) source (if target (destructuring-bind (&key type drop-default drop-not-null set-not-null (drop-typemod t) &allow-other-keys) target (let ((type-name (typecase type (function (funcall type source-table-name source-column-name source-type source-ctype source-typemod)) (t type))) (pg-typemod (when source-typemod (destructuring-bind (a &optional b) source-typemod (format nil "(~a~:[~*~;,~a~])" a b b))))) (make-column :name (apply-identifier-case source-column-name) :type-name type-name :type-mod (when (and source-typemod (not drop-typemod)) pg-typemod) :nullable (and (not set-not-null) (or (not source-not-null) drop-not-null)) :default (when (and source-default (not drop-default)) source-default) :transform using))) ;; NO MATCH ;; ;; prefer char(24) over just char, that is the column type over the ;; data type. (make-column :name (apply-identifier-case source-column-name) :type-name source-ctype :nullable (not source-not-null) :default source-default :transform using)))) (defun apply-casting-rules (table-name column-name dtype ctype default nullable extra &key (rules (append *cast-rules* *default-cast-rules*))) "Apply the given RULES to the MySQL SOURCE type definition" (let* ((typemod (parse-column-typemod dtype ctype)) (not-null (string-equal nullable "NO")) (auto-increment (string= "auto_increment" extra)) (source `(:table-name ,table-name :column-name ,column-name :type ,dtype :ctype ,ctype ,@(when typemod (list :typemod typemod)) :default ,default :not-null ,not-null :auto-increment ,auto-increment))) (let (first-match-using) (loop :for rule :in rules :for (target using) := (destructuring-bind (&key target using) (cast-rule-matches rule source) (list target using)) :do (when (and (null target) using (null first-match-using)) (setf first-match-using using)) :until target :finally (let ((coldef (make-pgsql-type source target using))) (log-message :info "CAST ~a.~a ~a [~s, ~:[NULL~;NOT NULL~]~:[~*~;, ~a~]] TO ~a~@[ USING ~a~]" table-name column-name ctype default (string= "NO" nullable) (string/= "" extra) extra (format-create-sql coldef) using) (return coldef)))))) pgloader/src/sources/common/db-methods.lisp0000644000175000017500000004613713127365036021243 0ustar vagrantvagrant;;; ;;; Generic API for pgloader sources ;;; Methods for database source types (with introspection) ;;; (in-package :pgloader.sources) ;;; ;;; Prepare the PostgreSQL database before streaming the data into it. ;;; (defmethod prepare-pgsql-database ((copy db-copy) (catalog catalog) &key truncate create-tables create-schemas drop-indexes set-table-oids materialize-views foreign-keys include-drop) "Prepare the target PostgreSQL database: create tables casting datatypes from the MySQL definitions, prepare index definitions and create target tables for materialized views. That function mutates index definitions in ALL-INDEXES." (log-message :notice "Prepare PostgreSQL database.") (with-pgsql-transaction (:pgconn (target-db copy)) (setf (catalog-types-without-btree catalog) (list-typenames-without-btree-support)) (if create-tables (progn (when create-schemas (with-stats-collection ("Create Schemas" :section :pre :use-result-as-read t :use-result-as-rows t) (create-schemas catalog :include-drop include-drop :client-min-messages :error))) ;; create new SQL types (ENUMs, SETs) if needed and before we ;; get to the table definitions that will use them (with-stats-collection ("Create SQL Types" :section :pre :use-result-as-read t :use-result-as-rows t) (create-sqltypes catalog :include-drop include-drop :client-min-messages :error)) ;; now the tables (with-stats-collection ("Create tables" :section :pre :use-result-as-read t :use-result-as-rows t) (create-tables catalog :include-drop include-drop :client-min-messages :error))) (progn ;; if we're not going to create the tables, now is the time to ;; remove the constraints: indexes, primary keys, foreign keys ;; ;; to be able to do that properly, get the constraints from ;; the pre-existing target database catalog (let ((pgsql-catalog (fetch-pgsql-catalog (db-name (target-db copy)) :source-catalog catalog))) (merge-catalogs catalog pgsql-catalog)) ;; now the foreign keys and only then the indexes, because a ;; drop constraint on a primary key cascades to the drop of ;; any foreign key that targets the primary key (when foreign-keys (with-stats-collection ("Drop Foreign Keys" :section :pre :use-result-as-read t :use-result-as-rows t) (drop-pgsql-fkeys catalog))) (when drop-indexes (with-stats-collection ("Drop Indexes" :section :pre :use-result-as-read t :use-result-as-rows t) ;; we want to error out early in case we can't DROP the ;; index, don't CASCADE (drop-indexes catalog :cascade nil))) (when truncate (with-stats-collection ("Truncate" :section :pre :use-result-as-read t :use-result-as-rows t) (truncate-tables catalog))))) ;; Some database sources allow the same index name being used ;; against several tables, so we add the PostgreSQL table OID in the ;; index name, to differenciate. Set the table oids now. (when (and create-tables set-table-oids) (with-stats-collection ("Set Table OIDs" :section :pre :use-result-as-read t :use-result-as-rows t) (set-table-oids catalog))) ;; We might have to MATERIALIZE VIEWS (when materialize-views (with-stats-collection ("Create MatViews Tables" :section :pre :use-result-as-read t :use-result-as-rows t) (create-views catalog :include-drop include-drop :client-min-messages :error)))) ;; log the catalog we just fetched and (maybe) merged (log-message :data "CATALOG: ~s" catalog)) (defmethod cleanup ((copy db-copy) (catalog catalog) &key materialize-views) "In case anything wrong happens at `prepare-pgsql-database' step, this function will be called to clean-up the mess left behind, if any." (declare (ignorable materialize-views)) t) (defmethod complete-pgsql-database ((copy db-copy) (catalog catalog) pkeys &key foreign-keys create-indexes create-triggers reset-sequences) "After loading the data into PostgreSQL, we can now reset the sequences and declare foreign keys." ;; ;; Now Reset Sequences, the good time to do that is once the whole data ;; has been imported and once we have the indexes in place, as max() is ;; able to benefit from the indexes. In particular avoid doing that step ;; while CREATE INDEX statements are in flight (avoid locking). ;; (log-message :notice "Complete PostgreSQL database.") (when reset-sequences (reset-sequences (clone-connection (target-db copy)) catalog)) (handler-case (with-pgsql-transaction (:pgconn (clone-connection (target-db copy))) ;; ;; Turn UNIQUE indexes into PRIMARY KEYS now ;; (when create-indexes (pgsql-execute-with-timing :post "Primary Keys" pkeys) ;; ;; Foreign Key Constraints ;; ;; We need to have finished loading both the reference and the ;; refering tables to be able to build the foreign keys, so wait ;; until all tables and indexes are imported before doing that. ;; (when foreign-keys (create-pgsql-fkeys catalog :section :post :label "Create Foreign Keys")) ;; ;; Triggers and stored procedures -- includes special default values ;; (when create-triggers (create-triggers catalog :section :post :label "Create Triggers"))) ;; ;; And now, comments on tables and columns. ;; (comment-on-tables-and-columns catalog :section :post :label "Install Comments")) (postgresql-unavailable (condition) (log-message :error "~a" condition) (log-message :error "Complete PostgreSQL database reconnecting to PostgreSQL.") ;; in order to avoid Socket error in "connect": ECONNREFUSED if we ;; try just too soon, wait a little (sleep 2) ;; ;; Reset Sequence can be done several times safely, and the rest of the ;; operations run in a single transaction, so if the connection was lost, ;; nothing has been done. Retry. ;; (complete-pgsql-database copy catalog pkeys :foreign-keys foreign-keys :create-indexes create-indexes :create-triggers create-triggers :reset-sequences reset-sequences)))) (defmethod instanciate-table-copy-object ((copy db-copy) (table table)) "Create an new instance for copying TABLE data." (let* ((fields (table-field-list table)) (columns (table-column-list table)) (transforms (mapcar #'column-transform columns))) (make-instance (class-of copy) :source-db (clone-connection (source-db copy)) :target-db (clone-connection (target-db copy)) :source table :target table :fields fields :columns columns :transforms transforms))) (defun process-catalog (copy catalog &key alter-table alter-schema) "Do all the PostgreSQL catalog tweaking here: casts, index WHERE clause rewriting, pgloader level alter schema and alter table commands." ;; cast the catalog into something PostgreSQL can work on (cast catalog) ;; support code for index filters (where clauses) (process-index-definitions catalog :sql-dialect (class-name (class-of copy))) ;; we may have to alter schemas (when alter-schema (alter-schema catalog alter-schema)) ;; if asked, now alter the catalog with given rules: the alter-table ;; keyword parameter actually contains a set of alter table rules. (when alter-table (alter-table catalog alter-table))) ;;; ;;; Generic enough implementation of the copy-database method. ;;; (defmethod copy-database ((copy db-copy) &key (on-error-stop *on-error-stop*) (worker-count 4) (concurrency 1) (multiple-readers nil) max-parallel-create-index (truncate nil) (disable-triggers nil) (data-only nil) (schema-only nil) (create-schemas t) (create-tables t) (include-drop t) (create-indexes t) (index-names :uniquify) (reset-sequences t) (foreign-keys t) (reindex nil) only-tables including excluding set-table-oids alter-table alter-schema materialize-views) "Export database source data and Import it into PostgreSQL" (let* ((*on-error-stop* on-error-stop) (copy-data (or data-only (not schema-only))) (create-ddl (or schema-only (not data-only))) (create-tables (and create-tables create-ddl)) (create-schemas (and create-schemas create-ddl)) (foreign-keys (and foreign-keys create-ddl)) (drop-indexes (or reindex (and include-drop create-ddl))) (create-indexes (or reindex (and create-indexes drop-indexes create-ddl))) (*preserve-index-names* (or (eq :preserve index-names) ;; if we didn't create the tables, we are re-installing the ;; pre-existing indexes (not create-tables))) (copy-kernel (make-kernel worker-count)) (copy-channel (let ((lp:*kernel* copy-kernel)) (lp:make-channel))) (catalog (fetch-metadata copy (make-catalog :name (typecase (source-db copy) (db-connection (db-name (source-db copy))) (fd-connection (pathname-name (fd-path (source-db copy)))))) :materialize-views materialize-views :create-indexes create-indexes :foreign-keys foreign-keys :only-tables only-tables :including including :excluding excluding)) pkeys (writers-count (make-hash-table :size (count-tables catalog))) (max-indexes (when create-indexes (max-indexes-per-table catalog))) (idx-kernel (when (and max-indexes (< 0 max-indexes)) (make-kernel (or max-parallel-create-index max-indexes)))) (idx-channel (when idx-kernel (let ((lp:*kernel* idx-kernel)) (lp:make-channel)))) (task-count 0)) ;; apply catalog level transformations to support the database migration ;; that's CAST rules, index WHERE clause rewriting and ALTER commands (process-catalog copy catalog :alter-table alter-table :alter-schema alter-schema) ;; if asked, first drop/create the tables on the PostgreSQL side (handler-case (prepare-pgsql-database copy catalog :truncate truncate :create-tables create-tables :create-schemas create-schemas :drop-indexes drop-indexes :include-drop include-drop :foreign-keys foreign-keys :set-table-oids set-table-oids :materialize-views materialize-views) ;; ;; In case some error happens in the preparatory transaction, we ;; need to stop now and refrain from trying to load the data into ;; an incomplete schema. ;; (cl-postgres:database-error (e) (declare (ignore e)) ; a log has already been printed (log-message :fatal "Failed to create the schema, see above.") ;; we might have some cleanup to do... (cleanup copy catalog :materialize-views materialize-views) (return-from copy-database))) (loop :for table :in (append (table-list catalog) ;; when materialized views are not supported, ;; view-list is empty here (view-list catalog)) :do (let ((table-source (instanciate-table-copy-object copy table))) ;; first COPY the data from source to PostgreSQL, using copy-kernel (if (not copy-data) ;; start indexing straight away then (when create-indexes (alexandria:appendf pkeys (create-indexes-in-kernel (target-db copy) table idx-kernel idx-channel))) ;; prepare the writers-count hash-table, as we start ;; copy-from, we have concurrency tasks writing. (progn ; when copy-data (setf (gethash table writers-count) concurrency) (incf task-count (copy-from table-source :concurrency concurrency :multiple-readers multiple-readers :kernel copy-kernel :channel copy-channel :on-error-stop on-error-stop :disable-triggers disable-triggers)))))) ;; now end the kernels ;; and each time a table is done, launch its indexing (when copy-data (let ((lp:*kernel* copy-kernel)) (with-stats-collection ("COPY Threads Completion" :section :post :use-result-as-read t :use-result-as-rows t) (loop :repeat task-count :do (destructuring-bind (task table seconds) (lp:receive-result copy-channel) (log-message :debug "Finished processing ~a for ~s ~50T~6$s" task (format-table-name table) seconds) (when (eq :writer task) ;; ;; Start the CREATE INDEX parallel tasks only when ;; the data has been fully copied over to the ;; corresponding table, that's when the writers ;; count is down to zero. ;; (decf (gethash table writers-count)) (log-message :debug "writers-counts[~a] = ~a" (format-table-name table) (gethash table writers-count)) (when (and create-indexes (zerop (gethash table writers-count))) (alexandria:appendf pkeys (create-indexes-in-kernel (target-db copy) table idx-kernel idx-channel))))) :finally (progn (lp:end-kernel :wait nil) (return worker-count)))))) (log-message :info "Done with COPYing data, waiting for indexes") (when create-indexes (let ((lp:*kernel* idx-kernel)) ;; wait until the indexes are done being built... ;; don't forget accounting for that waiting time. (with-stats-collection ("Index Build Completion" :section :post :use-result-as-read t :use-result-as-rows t) (loop :for count :below (count-indexes catalog) :do (lp:receive-result idx-channel)) (lp:end-kernel :wait t) (count-indexes catalog)))) ;; ;; Complete the PostgreSQL database before handing over. ;; (complete-pgsql-database copy catalog pkeys :foreign-keys foreign-keys :create-indexes create-indexes ;; only create triggers (for default values) ;; when we've been responsible for creating the ;; tables -- otherwise assume the schema is ;; good as it is :create-triggers create-tables :reset-sequences reset-sequences) ;; ;; Time to cleanup! ;; (cleanup copy catalog :materialize-views materialize-views))) pgloader/src/sources/common/project-fields.lisp0000644000175000017500000001354213056551453022122 0ustar vagrantvagrant;;; ;;; Project fields into columns ;;; (in-package #:pgloader.sources) (defun project-fields (&key fields columns (compile t)) "The simplest projection happens when both FIELDS and COLS are nil: in this case the projection is an identity, we simply return what we got. Other forms of projections consist of forming columns with the result of applying a transformation function. In that case a cols entry is a list of '(colname type expression), the expression being the (already compiled) function to use here." (labels ((null-as-processing-fn (null-as) "return a lambda form that will process a value given NULL-AS." (if (eq null-as :blanks) (lambda (col) (declare (optimize speed)) (if (every (lambda (char) (char= char #\Space)) col) nil col)) (lambda (col) (declare (optimize speed)) (if (string= null-as col) nil col)))) (field-name-as-symbol (field-name-or-list) "we need to deal with symbols as we generate code" (typecase field-name-or-list (list (intern-symbol (car field-name-or-list))) (t (intern-symbol field-name-or-list)))) (process-field (field-name-or-list) "Given a field entry, return a function dealing with nulls for it" (destructuring-bind (&key null-as date-format trim-both trim-left trim-right &allow-other-keys) (typecase field-name-or-list (list (cdr field-name-or-list)) (t (cdr (assoc field-name-or-list fields :test #'string-equal)))) ;; now prepare a function of a column (lambda (col) (let ((value-or-null (if (null null-as) col (funcall (null-as-processing-fn null-as) col)))) (when value-or-null (let ((value-or-null (cond (trim-both (string-trim '(#\Space) value-or-null)) (trim-left (string-left-trim '(#\Space) value-or-null)) (trim-right (string-right-trim '(#\Space) value-or-null)) (t value-or-null)))) ;; now apply the date format, when given (if date-format (parse-date-string value-or-null (parse-date-format date-format)) value-or-null)))))))) (let* ((projection (cond ;; when no specific information has been given on FIELDS and ;; COLUMNS, just apply generic NULL-AS processing ((and (null fields) (null columns)) (lambda (row) (coerce row 'vector))) ((null columns) ;; when no specific information has been given on COLUMNS, ;; use the information given for FIELDS and apply per-field ;; null-as, or the generic one if none has been given for ;; that field. (let ((process-nulls (mapcar (function process-field) fields))) `(lambda (row) (let ((v (make-array (length row)))) (loop :for i :from 0 :for col :in row :for fn :in ',process-nulls :do (setf (aref v i) (funcall fn col))) v)))) (t ;; project some number of FIELDS into a possibly different ;; number of COLUMNS, using given transformation functions, ;; processing NULL-AS represented values. (let* ((args (if fields (mapcar (function field-name-as-symbol) fields) (mapcar (function field-name-as-symbol) columns))) (values ;; make sure we apply fields level processing before ;; we pass in the processed field values to the ;; transformation functions, if any (null if blanks) (loop for field-name in args collect (list field-name `(funcall ,(process-field field-name) ,field-name)))) (newrow (loop for (name type fn) in columns collect ;; we expect the name of a COLUMN to be the same ;; as the name of its derived FIELD when we ;; don't have any transformation function (or fn (field-name-as-symbol name))))) `(lambda (row) (declare (optimize speed) (type list row)) (destructuring-bind (&optional ,@args &rest extra) row (declare (ignorable ,@args) (ignore extra)) (let ,values (declare (ignorable ,@args)) (vector ,@newrow))))))))) ;; allow for some debugging (if compile (compile nil projection) projection)))) (defun reformat-then-process (&key fields columns target) "Return a lambda form to apply to each row we read. The lambda closes over the READ paramater, which is a counter of how many lines we did read in the file." (let ((projection (project-fields :fields fields :columns columns))) (lambda (row) ;; cl-csv returns (nil) for an empty line (if (or (null row) (and (null (car row)) (null (cdr row)))) (log-message :notice "Skipping empty line.") (handler-case (funcall projection row) (condition (e) (update-stats :data target :errs 1) (log-message :error "Could not read input: ~a" e))))))) pgloader/src/sources/common/api.lisp0000644000175000017500000001747113124536544017766 0ustar vagrantvagrant;;; ;;; Generic API for pgloader sources ;;; (in-package :pgloader.sources) ;; Abstract classes to define the data loading API with ;; ;; The source name might be a table name (database server source) or a ;; filename (csv, dbase, etc), or something else entirely, like e.g. mongodb ;; collection. (defclass copy () ((source-db :accessor source-db ; source database name :initarg :source-db) (target-db :accessor target-db ; target database name :initarg :target-db) ; (source :accessor source ; source name :initarg :source) ; (target :accessor target ; target table name :initarg :target) ; (fields :accessor fields ; list of fields, or nil :initarg :fields) ; (columns :accessor columns ; list of columns, or nil :initarg :columns) ; (transforms :accessor transforms ; per-column transform functions :initarg :transforms)) ; (:documentation "pgloader Generic Data Source")) (defmethod initialize-instance :after ((source copy) &key) "Add a default value for transforms in case it's not been provided." (when (slot-boundp source 'columns) (let ((transforms (when (slot-boundp source 'transforms) (slot-value source 'transforms)))) (unless transforms (setf (slot-value source 'transforms) (make-list (length (slot-value source 'columns)))))))) (defgeneric concurrency-support (copy concurrency) (:documentation "Returns nil when no concurrency is supported, or a list of copy ojbects prepared to run concurrently.")) (defgeneric map-rows (source &key process-row-fn) (:documentation "Load data from SOURCE and funcall PROCESS-ROW-FUN for each row found in the SOURCE data. Each ROW is passed as a vector of objects.")) (defgeneric proprocess-row (source) (:documentation "Some source readers have pre-processing to do on the raw data, such as CSV user-defined field projections to PostgreSQL columns. This function returns the pre-processing function, which must be a funcallable object.")) (defgeneric queue-raw-data (source queue concurrency) (:documentation "Send raw data from the reader to the worker queue.")) (defgeneric data-is-preformatted-p (source) (:documentation "Process raw data from RAW-QUEUE and prepare batches of formatted text to send down to PostgreSQL with the COPY protocol in FORMATTED-QUEUE.")) (defgeneric copy-column-list (source) (:documentation "Return the list of column names for the data sent in the queue.")) (defgeneric copy-from (source &key) (:documentation "Load data from SOURCE into its target as defined by the SOURCE object.")) ;; That one is more an export than a load. It always export to a single very ;; well defined format, the importing utility is defined in ;; src/pgsql-copy-format.lisp (defgeneric copy-to (source filename) (:documentation "Load data from SOURCE and serialize it into FILENAME, using PostgreSQL COPY TEXT format.")) ;; The next generic function is only to get instanciated for sources ;; actually containing more than a single source item (tables, collections, ;; etc) (defgeneric copy-database (source &key worker-count concurrency max-parallel-create-index truncate data-only schema-only create-tables include-drop foreign-keys create-indexes reset-sequences disable-triggers materialize-views set-table-oids including excluding) (:documentation "Auto-discover source schema, convert it to PostgreSQL, migrate the data from the source definition to PostgreSQL for all the discovered items (tables, collections, etc), then reset the PostgreSQL sequences created by SERIAL columns in the first step. The target tables are automatically discovered, the only-tables parameter allows to filter them out.")) ;;; ;;; Common API to introspec a data source, when that's possible. Typically ;;; when the source is a database system. ;;; ;; (defgeneric list-all-columns (connection &key) ;; (:documentation "Discover all columns in CONNECTION source.")) ;; (defgeneric list-all-indexes (connection &key) ;; (:documentation "Discover all indexes in CONNECTION source.")) ;; (defgeneric list-all-fkeys (connection &key) ;; (:documentation "Discover all foreign keys in CONNECTION source.")) ;; (defgeneric fetch-metadata (connection &key) ;; (:documentation "Full discovery of the CONNECTION data source.")) ;;; ;;; Class hierarchy allowing to share features among a subcategory of ;;; pgloader sources. Those subcategory are divided in about the same set as ;;; the connection types. ;;; ;;; fd-connection: single file reader, copy ;;; md-connection: multiple file reader, md-copy ;;; db-connection: database connection reader, with introspection, db-copy ;;; ;;; Of those only md-copy objects share a lot in common, so we have another ;;; layer of protocols just for them here, and the shared implementation ;;; lives in md-methods.lisp in this directory. ;;; (defclass md-copy (copy) ((encoding :accessor encoding ; file encoding :initarg :encoding) ; (skip-lines :accessor skip-lines ; skip firt N lines :initarg :skip-lines ; :initform 0) ; (header :accessor header ; CSV headers are col names :initarg :header ; :initform nil)) ; (:documentation "pgloader Multiple Files Data Source (csv, fixed, copy).")) (defgeneric parse-header (md-copy header) (:documentation "Parse the file header and return a list of fields.")) (defgeneric process-rows (md-copy stream process-fn) (:documentation "Process rows from a given input stream.")) (defgeneric clone-copy-for (md-copy path-spec) (:documentation "Create a new instance for copying PATH-SPEC data.")) ;;; ;;; Class hierarchy allowing to share features for database sources, where ;;; we do introspection to prepare an internal catalog and then cast that ;;; catalog to PostgreSQL before copying the data over. ;;; (defclass db-copy (copy) () (:documentation "pgloader Database Data Source (MySQL, SQLite, MS SQL).")) (defgeneric fetch-metadata (db-copy catalog &key materialize-views only-tables create-indexes foreign-keys including excluding)) (defgeneric prepare-pgsql-database (db-copy catalog &key truncate create-tables create-schemas drop-indexes set-table-oids materialize-views foreign-keys include-drop) (:documentation "Prepare the target PostgreSQL database.")) (defgeneric cleanup (db-copy catalog &key materialize-views) (:documentation "Clean-up after prepare-pgsql-database failure.")) (defgeneric complete-pgsql-database (db-copy catalog pkeys &key foreign-keys create-indexes create-triggers reset-sequences) (:documentation "Alter load duties for database sources copy support.")) (defgeneric instanciate-table-copy-object (db-copy table) (:documentation "Create a new instance for copying TABLE data.")) pgloader/src/sources/common/methods.lisp0000644000175000017500000001464113126545565020661 0ustar vagrantvagrant;;; ;;; Generic API for pgloader sources ;;; (in-package :pgloader.sources) ;;; ;;; Common API implementation ;;; (defmethod queue-raw-data ((copy copy) rawq concurrency) "Stream data as read by the map-queue method on the COPY argument into QUEUE, as given." (log-message :debug "Reader started for ~a" (format-table-name (target copy))) (let* ((start-time (get-internal-real-time)) (row-count 0) (process-row (if (or (eq :data *log-min-messages*) (eq :data *client-min-messages*)) ;; when debugging, use a lambda with debug traces (lambda (row) (log-message :data "< ~s" row) (lq:push-queue row rawq) (incf row-count)) ;; usual non-debug case (lambda (row) (lq:push-queue row rawq) (incf row-count))))) ;; signal we are starting (update-stats :data (target copy) :start start-time) ;; call the source-specific method for reading input data (map-rows copy :process-row-fn process-row) ;; process last batches and send them to queues ;; and mark end of stream (loop :repeat concurrency :do (lq:push-queue :end-of-data rawq)) (let ((seconds (elapsed-time-since start-time))) (log-message :debug "Reader for ~a is done in ~6$s" (format-table-name (target copy)) seconds) (update-stats :data (target copy) :read row-count :rs seconds) (list :reader (target copy) seconds)))) (defmethod data-is-preformatted-p ((copy copy)) "By default, data is not preformatted." nil) (defmethod preprocess-row ((copy copy)) "The default preprocessing of raw data is to do nothing." nil) (defmethod copy-column-list ((copy copy)) "Default column list is an empty list." nil) (defmethod copy-to ((copy copy) pgsql-copy-filename) "Extract data from COPY file into a PotgreSQL COPY TEXT formated file" (with-open-file (text-file pgsql-copy-filename :direction :output :if-exists :supersede :external-format :utf-8) (let ((row-fn (lambda (row) (format-vector-row text-file row (transforms copy))))) (map-rows copy :process-row-fn row-fn)))) (defmethod copy-from ((copy copy) &key (kernel nil k-s-p) (channel nil c-s-p) (worker-count 8) (concurrency 2) (multiple-readers nil) (on-error-stop *on-error-stop*) disable-triggers) "Copy data from COPY source into PostgreSQL." (let* ((table-name (format-table-name (target copy))) (lp:*kernel* (or kernel (make-kernel worker-count))) (channel (or channel (lp:make-channel))) (readers nil) (task-count 0)) (flet ((submit-task (channel function &rest args) (apply #'lp:submit-task channel function args) (incf task-count))) (lp:task-handler-bind ((on-error-stop #'(lambda (condition) ;; everything has been handled already (lp:invoke-transfer-error condition))) #+pgloader-image (error #'(lambda (condition) (log-message :error "A thread failed with error: ~a" condition) (log-message :error "~a" (trivial-backtrace:print-backtrace condition :output nil)) (lp::invoke-transfer-error condition)))) (log-message :notice "COPY ~a" table-name) ;; Check for Read Concurrency Support from our source (when (and multiple-readers (< 1 concurrency)) (let ((label "Check Concurrency Support")) (with-stats-collection (label :section :pre) (setf readers (concurrency-support copy concurrency)) (update-stats :pre label :read 1 :rows (if readers 1 0)) (when readers (log-message :notice "Multiple Readers Enabled for ~a" (format-table-name (target copy))))))) ;; when reader is non-nil, we have reader concurrency support! (if readers ;; here we have detected Concurrency Support: we create as many ;; readers as writers and create associated couples, each couple ;; shares its own queue (let ((rawqs (loop :repeat concurrency :collect (lq:make-queue :fixed-capacity *prefetch-rows*)))) (log-message :info "Read Concurrency Enabled for ~s" (format-table-name (target copy))) (loop :for rawq :in rawqs :for reader :in readers :do ;; each reader pretends to be alone, pass 1 as concurrency (submit-task channel #'queue-raw-data reader rawq 1) (submit-task channel #'pgloader.pgsql::copy-rows-from-queue copy rawq :on-error-stop on-error-stop :disable-triggers disable-triggers))) ;; no Read Concurrency Support detected, start a single reader ;; task, using a single data queue that is read by multiple ;; writers. (let ((rawq (lq:make-queue :fixed-capacity *prefetch-rows*))) (submit-task channel #'queue-raw-data copy rawq concurrency) ;; start a task to transform the raw data in the copy format ;; and send that data down to PostgreSQL (loop :repeat concurrency :do (submit-task channel #'pgloader.pgsql::copy-rows-from-queue copy rawq :on-error-stop on-error-stop :disable-triggers disable-triggers)))) ;; now wait until both the tasks are over, and kill the kernel (unless c-s-p (log-message :debug "waiting for ~d tasks" task-count) (loop :repeat task-count :do (lp:receive-result channel)) (log-message :notice "COPY ~s done." table-name) (unless k-s-p (lp:end-kernel :wait t))) ;; return task-count, which is how many tasks we submitted to our ;; lparallel kernel. task-count)))) pgloader/src/sources/common/md-methods.lisp0000644000175000017500000001707113127307525021250 0ustar vagrantvagrant;;; ;;; Generic API for pgloader sources ;;; Methods for source types with multiple files input ;;; (in-package :pgloader.sources) (defmethod parse-header ((copy md-copy) header) "Unsupported by default, to be implemented in each md-copy subclass." (error "Parsing the header of a ~s is not implemented yet." (type-of copy))) (defmethod map-rows ((copy md-copy) &key process-row-fn) "Load data from a text file in CSV format, with support for advanced projecting capabilities. See `project-fields' for details. Each row is pre-processed then PROCESS-ROW-FN is called with the row as a list as its only parameter. Finally returns how many rows where read and processed." (with-connection (cnx (source copy) :direction :input :external-format (encoding copy) :if-does-not-exist nil) (let ((input (md-strm cnx))) ;; we handle skipping more than one line here, as cl-copy only knows ;; about skipping the first line (loop :repeat (skip-lines copy) :do (read-line input nil nil)) ;; we might now have to read the fields from the header line (when (header copy) (setf (fields copy) (parse-header copy (read-line input nil nil))) (log-message :debug "Parsed header columns ~s" (fields copy))) ;; read in the text file, split it into columns (process-rows copy input process-row-fn)))) (defmethod preprocess-row ((copy md-copy)) "The file based readers possibly have extra work to do with user defined fields to columns projections (mapping)." (reformat-then-process :fields (fields copy) :columns (columns copy) :target (target copy))) (defmethod copy-column-list ((copy md-copy)) "We did reformat-then-process the column list, so we now send them in the COPY buffer as found in (columns fixed)." (mapcar (lambda (col) ;; always double quote column names (format nil "~s" (car col))) (columns copy))) (defmethod clone-copy-for ((copy md-copy) path-spec) "Create a copy of CSV for loading data from PATH-SPEC." (make-instance (class-of copy) ;; source-db is expected unbound here, so bypassed :target-db (clone-connection (target-db copy)) :source (make-instance (class-of (source copy)) :spec (md-spec (source copy)) :type (conn-type (source copy)) :path path-spec) :target (target copy) :fields (fields copy) :columns (columns copy) :transforms (or (transforms copy) (make-list (length (columns copy)))) :encoding (encoding copy) :skip-lines (skip-lines copy) :header (header copy))) (defmethod copy-database ((copy md-copy) &key (on-error-stop *on-error-stop*) truncate disable-triggers drop-indexes max-parallel-create-index ;; generic API, but ignored here (worker-count 4) (concurrency 1) data-only schema-only create-tables include-drop foreign-keys create-indexes reset-sequences materialize-views set-table-oids including excluding) "Copy the contents of the COPY formated file to PostgreSQL." (declare (ignore data-only schema-only create-tables include-drop foreign-keys create-indexes reset-sequences materialize-views set-table-oids including excluding)) (let* ((*on-error-stop* on-error-stop) (pgconn (target-db copy)) pgsql-catalog) (handler-case (with-pgsql-connection (pgconn) (setf pgsql-catalog (fetch-pgsql-catalog (db-name pgconn) :table (target copy))) ;; if the user didn't tell us the column list of the table, now is ;; a proper time to set it in the copy object (unless (and (slot-boundp copy 'columns) (slot-value copy 'columns)) (setf (columns copy) (mapcar (lambda (col) ;; we need to handle the md-copy format for the ;; column list, which allow for user given ;; options: each column is a list which car is ;; the column name. (list (column-name col))) (table-field-list (first (table-list pgsql-catalog)))))) (log-message :data "CATALOG: ~s" pgsql-catalog) ;; this sets (table-index-list (target copy)) (maybe-drop-indexes pgsql-catalog :drop-indexes drop-indexes) ;; now is the proper time to truncate, before parallel operations (when truncate (truncate-tables pgsql-catalog))) (cl-postgres:database-error (e) (log-message :fatal "Failed to prepare target PostgreSQL table.") (log-message :fatal "~a" e) (return-from copy-database))) ;; expand the specs of our source, we might have to care about several ;; files actually. (let* ((lp:*kernel* (make-kernel worker-count)) (channel (lp:make-channel)) (path-list (expand-spec (source copy))) (task-count 0)) (with-stats-collection ("Files Processed" :section :post :use-result-as-read t :use-result-as-rows t) (loop :for path-spec :in path-list :count t :do (let ((table-source (clone-copy-for copy path-spec))) (incf task-count (copy-from table-source :concurrency concurrency :kernel lp:*kernel* :channel channel :on-error-stop on-error-stop :disable-triggers disable-triggers))))) ;; end kernel (with-stats-collection ("COPY Threads Completion" :section :post :use-result-as-read t :use-result-as-rows t) (loop :repeat task-count :do (handler-case (destructuring-bind (task table seconds) (lp:receive-result channel) (log-message :debug "Finished processing ~a for ~s ~50T~6$s" task (format-table-name table) seconds)) (condition (e) (log-message :fatal "~a" e))) :finally (progn (lp:end-kernel :wait nil) (return task-count)))) (lp:end-kernel :wait t)) ;; re-create the indexes from the target table entry (create-indexes-again (target-db copy) pgsql-catalog :max-parallel-create-index max-parallel-create-index :drop-indexes drop-indexes))) pgloader/src/sources/csv/0000755000175000017500000000000013056353323015611 5ustar vagrantvagrantpgloader/src/sources/csv/csv.lisp0000644000175000017500000000732413056353323017303 0ustar vagrantvagrant;;; ;;; Tools to handle MySQL data fetching ;;; (in-package :pgloader.csv) (defclass csv-connection (md-connection) ()) (defmethod initialize-instance :after ((csv csv-connection) &key) "Assign the type slot to sqlite." (setf (slot-value csv 'type) "csv")) ;;; ;;; Implementing the pgloader source API ;;; (defclass copy-csv (md-copy) ((source-type :accessor source-type ; one of :inline, :stdin, :regex :initarg :source-type) ; or :filename (separator :accessor csv-separator ; CSV separator :initarg :separator ; :initform #\Tab) ; (newline :accessor csv-newline ; CSV line ending :initarg :newline ; :initform #\Newline) (quote :accessor csv-quote ; CSV quoting :initarg :quote ; :initform cl-csv:*quote*) ; (escape :accessor csv-escape ; CSV quote escaping :initarg :escape ; :initform cl-csv:*quote-escape*) (escape-mode :accessor csv-escape-mode ; CSV quote escaping mode :initarg :escape-mode ; :initform cl-csv::*escape-mode*) (trim-blanks :accessor csv-trim-blanks ; CSV blank and NULLs :initarg :trim-blanks ; :initform t)) (:documentation "pgloader CSV Data Source")) (defmethod clone-copy-for ((csv copy-csv) path-spec) "Create a copy of CSV for loading data from PATH-SPEC." (let ((csv-for-path-spec (change-class (call-next-method csv path-spec) 'copy-csv))) (loop :for slot-name :in '(source-type separator newline quote escape escape-mode trim-blanks) :do (when (slot-boundp csv slot-name) (setf (slot-value csv-for-path-spec slot-name) (slot-value csv slot-name)))) ;; return the new instance! csv-for-path-spec)) ;;; ;;; Read a file format in CSV format, and call given function on each line. ;;; (defmethod parse-header ((csv copy-csv) header) "Parse the header line given csv setup." ;; a field entry is a list of field name and options (mapcar #'list (car ; parsing a single line (cl-csv:read-csv header :separator (csv-separator csv) :quote (csv-quote csv) :escape (csv-escape csv) :unquoted-empty-string-is-nil t :quoted-empty-string-is-nil nil :trim-outer-whitespace (csv-trim-blanks csv) :newline (csv-newline csv))))) (defmethod process-rows ((csv copy-csv) stream process-fn) "Process rows from STREAM according to COPY specifications and PROCESS-FN." (handler-case (handler-bind ((cl-csv:csv-parse-error #'(lambda (c) (log-message :error "~a" c) (update-stats :data (target csv) :errs 1) (cl-csv::continue)))) (cl-csv:read-csv stream :row-fn process-fn :separator (csv-separator csv) :quote (csv-quote csv) :escape (csv-escape csv) :escape-mode (csv-escape-mode csv) :unquoted-empty-string-is-nil t :quoted-empty-string-is-nil nil :trim-outer-whitespace (csv-trim-blanks csv) :newline (csv-newline csv))) (condition (e) (progn (log-message :fatal "~a" e) (update-stats :data (target csv) :errs 1))))) pgloader/src/sources/csv/csv-database.lisp0000644000175000017500000000320313047375022021035 0ustar vagrantvagrant;;; ;;; Experimental code, used to be used a long time ago, before this lisp ;;; code became pgloader. The idea is to use it again sometimes, someway. ;;; (in-package #:pgloader.csv) ;;; ;;; When you exported a whole database as a bunch of CSV files to be found ;;; in the same directory, each file name being the name of the target ;;; table, then this function allows to import them all at once. ;;; ;;; TODO: expose it from the command language, and test it. ;;; (defun import-database (dbname &key (fd-path-root *fd-path-root*) (skip-lines 0) (separator #\Tab) (quote cl-csv:*quote*) (escape cl-csv:*quote-escape*) (truncate t) only-tables) "Export MySQL data and Import it into PostgreSQL" (let ((*state* (pgloader.utils:make-pgstate))) (report-header) (loop for (table-name . date-columns) in (pgloader.pgsql:list-tables dbname) for filename = (get-pathname dbname table-name :fd-path-root fd-path-root) when (or (null only-tables) (member table-name only-tables :test #'equal)) do (let ((source (make-instance 'copy-csv :target-db dbname :source (list :filename filename) :target table-name :skip-lines skip-lines :separator separator :quote quote :escape escape))) (copy-from source :truncate truncate)) finally (report-pgstate-stats *state* "Total import time")))) pgloader/src/sources/csv/csv-guess.lisp0000644000175000017500000000343213047375022020423 0ustar vagrantvagrant;;; ;;; Automatic guess the CSV format parameters ;;; (in-package #:pgloader.csv) (defparameter *separators* '(#\Tab #\, #\; #\| #\% #\^ #\! #\$) "Common CSV separators to try when guessing file parameters.") (defparameter *escape-quotes* '("\\\"" "\"\"") "Common CSV quotes to try when guessing file parameters.") (defun get-file-sample (filename &key (sample-size 10)) "Return the first SAMPLE-SIZE lines in FILENAME (or less), or nil if the file does not exists." (with-open-file ;; we just ignore files that don't exist (input filename :direction :input :external-format :utf-8 :if-does-not-exist nil) (when input (loop for line = (read-line input nil) while line repeat sample-size collect line)))) (defun try-csv-params (lines cols &key separator quote escape) "Read LINES as CSV with SEPARATOR and ESCAPE params, and return T when each line in LINES then contains exactly COLS columns" (let ((rows (loop for line in lines append (handler-case (cl-csv:read-csv line :quote quote :separator separator :escape escape) ((or cl-csv:csv-parse-error type-error) () nil))))) (and rows (every (lambda (row) (= cols (length row))) rows)))) (defun guess-csv-params (filename cols &key (sample-size 10)) "Try a bunch of field separators with LINES and return the first one that returns COLS number of columns" (let ((sample (get-file-sample filename :sample-size sample-size))) (loop for sep in *separators* for esc = (loop for escape in *escape-quotes* when (try-csv-params sample cols :quote #\" :separator sep :escape escape) do (return escape)) when esc do (return (list :separator sep :quote #\" :escape esc))))) pgloader/src/sources/mysql/0000755000175000017500000000000013127307525016165 5ustar vagrantvagrantpgloader/src/sources/mysql/mysql-cast-rules.lisp0000644000175000017500000002703713116323313022303 0ustar vagrantvagrant;;; ;;; Tools to handle MySQL data type casting rules ;;; (in-package :pgloader.mysql) (defun enum-or-set-name (table-name column-name type ctype typemod) (declare (ignore type ctype typemod)) (apply-identifier-case (format nil "~a_~a" (unquote table-name #\") (unquote column-name #\")))) ;;; ;;; The default MySQL Type Casting Rules ;;; (defparameter *mysql-default-cast-rules* `((:source (:type "int" :auto-increment t :typemod (< precision 10)) :target (:type "serial")) (:source (:type "int" :auto-increment t :typemod (<= 10 precision)) :target (:type "bigserial")) (:source (:type "int" :auto-increment nil :typemod (< precision 10)) :target (:type "int")) (:source (:type "int" :auto-increment nil :typemod (<= 10 precision)) :target (:type "bigint")) ;; bigint mediumint smallint and tinyint with auto_increment always are [big]serial (:source (:type "tinyint" :auto-increment t) :target (:type "serial")) (:source (:type "smallint" :auto-increment t) :target (:type "serial")) (:source (:type "mediumint" :auto-increment t) :target (:type "serial")) (:source (:type "bigint" :auto-increment t) :target (:type "bigserial")) ;; actually tinyint(1) is most often used as a boolean (:source (:type "tinyint" :typemod (= 1 precision)) :target (:type "boolean" :drop-typemod t) :using pgloader.transforms::tinyint-to-boolean) (:source (:type "bit" :typemod (= 1 precision)) :target (:type "boolean" :drop-typemod t) :using pgloader.transforms::bits-to-boolean) ;; bigint(20) unsigned (or not, actually) does not fit into PostgreSQL ;; bigint (-9223372036854775808 to +9223372036854775807): (:source (:type "bigint" :typemod (< 19 precision)) :target (:type "numeric" :drop-typemod t)) ;; we need the following to benefit from :drop-typemod (:source (:type "tinyint") :target (:type "smallint" :drop-typemod t)) (:source (:type "smallint") :target (:type "smallint" :drop-typemod t)) (:source (:type "mediumint") :target (:type "integer" :drop-typemod t)) (:source (:type "integer") :target (:type "integer" :drop-typemod t)) (:source (:type "float") :target (:type "float" :drop-typemod t)) (:source (:type "bigint") :target (:type "bigint" :drop-typemod t)) (:source (:type "double") :target (:type "double precision" :drop-typemod t)) (:source (:type "numeric") :target (:type "numeric" :drop-typemod nil)) (:source (:type "decimal") :target (:type "decimal" :drop-typemod nil)) ;; the text based types (:source (:type "tinytext") :target (:type "text") :using pgloader.transforms::remove-null-characters) (:source (:type "text") :target (:type "text") :using pgloader.transforms::remove-null-characters) (:source (:type "mediumtext") :target (:type "text") :using pgloader.transforms::remove-null-characters) (:source (:type "longtext") :target (:type "text") :using pgloader.transforms::remove-null-characters) (:source (:type "varchar") :target (:type "varchar" :drop-typemod nil) :using pgloader.transforms::remove-null-characters) (:source (:type "char") :target (:type "char" :drop-typemod nil) :using pgloader.transforms::remove-null-characters) ;; ;; cl-mysql returns binary values as a simple-array of bytes (as in ;; '(UNSIGNED-BYTE 8)), that we then need to represent as proper ;; PostgreSQL bytea input. ;; (:source (:type "binary") :target (:type "bytea") :using pgloader.transforms::byte-vector-to-bytea) (:source (:type "varbinary") :target (:type "bytea") :using pgloader.transforms::byte-vector-to-bytea) (:source (:type "tinyblob") :target (:type "bytea") :using pgloader.transforms::byte-vector-to-bytea) (:source (:type "blob") :target (:type "bytea") :using pgloader.transforms::byte-vector-to-bytea) (:source (:type "mediumblob") :target (:type "bytea") :using pgloader.transforms::byte-vector-to-bytea) (:source (:type "longblob") :target (:type "bytea") :using pgloader.transforms::byte-vector-to-bytea) (:source (:type "datetime" :default "0000-00-00 00:00:00" :not-null t) :target (:type "timestamptz" :drop-default t :drop-not-null t) :using pgloader.transforms::zero-dates-to-null) (:source (:type "datetime" :default "0000-00-00 00:00:00") :target (:type "timestamptz" :drop-default t) :using pgloader.transforms::zero-dates-to-null) (:source (:type "timestamp" :default "0000-00-00 00:00:00" :not-null t) :target (:type "timestamptz" :drop-default t :drop-not-null t) :using pgloader.transforms::zero-dates-to-null) (:source (:type "timestamp" :default "0000-00-00 00:00:00") :target (:type "timestamptz" :drop-default t) :using pgloader.transforms::zero-dates-to-null) (:source (:type "date" :default "0000-00-00") :target (:type "date" :drop-default t) :using pgloader.transforms::zero-dates-to-null) ;; date types without strange defaults (:source (:type "date") :target (:type "date")) (:source (:type "year") :target (:type "integer" :drop-typemod t)) (:source (:type "datetime") :target (:type "timestamptz") :using pgloader.transforms::zero-dates-to-null) (:source (:type "timestamp") :target (:type "timestamptz") :using pgloader.transforms::zero-dates-to-null) ;; Inline MySQL "interesting" datatype (:source (:type "enum") :target (:type ,#'enum-or-set-name)) (:source (:type "set") :target (:type ,#'enum-or-set-name) :using pgloader.transforms::set-to-enum-array) ;; geometric data types, just POINT for now (:source (:type "geometry") :target (:type "point") :using pgloader.transforms::convert-mysql-point) (:source (:type "point") :target (:type "point") :using pgloader.transforms::convert-mysql-point)) "Data Type Casting rules to migrate from MySQL to PostgreSQL") ;;; ;;; MySQL specific fields representation and low-level ;;; (defstruct (mysql-column (:constructor make-mysql-column (table-name name comment dtype ctype default nullable extra))) table-name name dtype ctype default nullable extra comment) (defun explode-mysql-enum (ctype) "Convert MySQL ENUM expression into a list of labels." (cl-ppcre:register-groups-bind (list) ("(?i)(?:ENUM|SET)\\s*\\((.*)\\)" ctype) (first (cl-csv:read-csv list :separator #\, :quote #\' :escape "\\")))) (defmethod cast ((col mysql-column)) "Return the PostgreSQL type definition from given MySQL column definition." (with-slots (table-name name dtype ctype default nullable extra comment) col (let* ((pgcol (apply-casting-rules table-name name dtype ctype default nullable extra))) (setf (column-comment pgcol) comment) ;; normalize default values (setf (column-default pgcol) (cond ((and (stringp default) (string= "NULL" default)) :null) ((and (stringp default) ;; address CURRENT_TIMESTAMP(6) and other spellings (or (uiop:string-prefix-p "CURRENT_TIMESTAMP" default) (string= "CURRENT TIMESTAMP" default))) :current-timestamp) (t (column-default pgcol)))) ;; extra user-defined data types (when (or (string-equal "set" dtype) (string-equal "enum" dtype)) ;; ;; SET and ENUM both need more care, if the target is PostgreSQL we ;; need to create per-schema user defined data types that match the ;; column local definition here. ;; (let ((sqltype-name (enum-or-set-name table-name (column-name pgcol) dtype ctype nil))) (setf (column-type-name pgcol) (make-sqltype :name sqltype-name :type (intern (string-upcase dtype) (find-package "KEYWORD")) :source-def ctype :extra (explode-mysql-enum ctype))))) ;; extra triggers ;; ;; See src/pgsql/pgsql-trigger.lisp ;; (when (string= extra "on update CURRENT_TIMESTAMP") (let* ((pro-name (format nil "on_update_current_timestamp_~a" (unquote (column-name pgcol) #\")))) (setf (column-extra pgcol) (make-trigger :name :on-update-current-timestamp :action "BEFORE UPDATE" :procedure-name pro-name)))) pgcol))) ;;; ;;; MySQL specific testing. ;;; ;;; TODO: move that to general testing. ;;; (defun test-casts () "Just test some cases for the casts" (let ((*cast-rules* '( ;; (:source (:column "col1" :auto-increment nil) ;; :target (:type "timestamptz" ;; :drop-default nil ;; :drop-not-null nil) ;; :using nil) (:source (:type "varchar" :auto-increment nil) :target (:type "text" :drop-default nil :drop-not-null nil) :using nil) (:source (:type "char" :typemod (= precision 1)) :target (:type "char" :drop-typemod nil)) (:source (:column ("table" . "g")) :target nil :using pgloader.transforms::empty-string-to-null))) (columns ;; name dtype ctype default nullable extra '(("a" "int" "int(7)" nil "NO" "auto_increment") ("b" "int" "int(10)" nil "NO" "auto_increment") ("c" "varchar" "varchar(25)" nil nil nil) ("d" "tinyint" "tinyint(4)" "0" nil nil) ("e" "datetime" "datetime" "0000-00-00 00:00:00" nil nil) ("f" "date" "date" "0000-00-00" "NO" nil) ("g" "enum" "ENUM('a', 'b')" nil nil nil) ("h" "set" "SET('a', 'b')" nil nil nil) ("i" "int" "int(11)" nil nil nil) ("j" "float" "float(12,2)" nil nil nil) ("k" "double" "double unsigned" nil nil nil) ("l" "bigint" "bigint(20)" nil nil nil) ("m" "numeric" "numeric(18,3)" nil nil nil) ("n" "decimal" "decimal(15,5)" nil nil nil) ("o" "timestamp" "timestamp" "CURRENT_TIMESTAMP" "NO" "on update CURRENT_TIMESTAMP") ("p" "point" "point" nil "YES" nil) ("q" "char" "char(5)" nil "YES" nil) ("l" "char" "char(1)" nil "YES" nil) ("m" "integer" "integer(4)" nil "YES" nil) ("o" "tinyint" "tinyint(1)" "0" nil nil) ("p" "smallint" "smallint(5) unsigned" nil "no" "auto_increment") ("q" "mediumint" "integer" nil "NO" "auto_increment") ("r" "tinyint" "integer" nil "NO" "auto_increment")))) ;; ;; format-pgsql-column when given a mysql-column would call `cast' for ;; us, but here we want more control over the ouput, so we call it ;; ourselves. ;; (format t " ~a~30T~a~65T~a~%" "MySQL ctype" "PostgreSQL type" "transform") (format t " ~a~30T~a~65T~a~%" "-----------" "---------------" "---------") (loop :for (name dtype ctype nullable default extra) :in columns :for mycol := (make-mysql-column "table" name nil dtype ctype nullable default extra) :for pgcol := (cast mycol) :do (format t "~a: ~a~30T~a~65T~:[~;using ~a~]~%" name ctype (format-column pgcol) (pgloader.pgsql::column-transform pgcol) (pgloader.pgsql::column-transform pgcol))))) pgloader/src/sources/mysql/mysql-schema.lisp0000644000175000017500000003563013127307525021470 0ustar vagrantvagrant;;; ;;; Tools to query the MySQL Schema to reproduce in PostgreSQL ;;; (in-package :pgloader.mysql) (defvar *connection* nil "Current MySQL connection") ;;; ;;; General utility to manage MySQL connection ;;; (defclass mysql-connection (db-connection) ()) (defmethod initialize-instance :after ((myconn mysql-connection) &key) "Assign the type slot to mysql." (setf (slot-value myconn 'type) "mysql")) (defmethod open-connection ((myconn mysql-connection) &key) (setf (conn-handle myconn) (if (and (consp (db-host myconn)) (eq :unix (car (db-host myconn)))) (qmynd:mysql-local-connect :path (cdr (db-host myconn)) :username (db-user myconn) :password (db-pass myconn) :database (db-name myconn)) (qmynd:mysql-connect :host (db-host myconn) :port (db-port myconn) :username (db-user myconn) :password (db-pass myconn) :database (db-name myconn)))) (log-message :debug "CONNECTED TO ~a" myconn) ;; apply mysql-settings, if any (loop :for (name . value) :in *mysql-settings* :for sql := (format nil "set ~a = ~a;" name value) :do (query myconn sql)) ;; return the connection object myconn) (defmethod close-connection ((myconn mysql-connection)) (qmynd:mysql-disconnect (conn-handle myconn)) (setf (conn-handle myconn) nil) myconn) (defmethod clone-connection ((c mysql-connection)) (change-class (call-next-method c) 'mysql-connection)) (defmethod query ((myconn mysql-connection) sql &key row-fn (as-text t) (result-type 'list)) "Run SQL query against MySQL connection MYCONN." (log-message :sql "MySQL: sending query: ~a" sql) (qmynd:mysql-query (conn-handle myconn) sql :row-fn row-fn :as-text as-text :result-type result-type)) ;;; ;;; The generic API query is recent, used to look like this: ;;; (declaim (inline mysql-query)) (defun mysql-query (query &key row-fn (as-text t) (result-type 'list)) "Execute given QUERY within the current *connection*, and set proper defaults for pgloader." (query *connection* query :row-fn row-fn :as-text as-text :result-type result-type)) ;;; ;;; Function for accessing the MySQL catalogs, implementing auto-discovery. ;;; ;;; Interactive use only, will create its own database connection. ;;; ;; (defun list-databases () ;; "Connect to a local database and get the database list" ;; (with-mysql-connection () ;; (mysql-query "show databases"))) ;; (defun list-tables (dbname) ;; "Return a flat list of all the tables names known in given DATABASE" ;; (with-mysql-connection (dbname) ;; (mysql-query (format nil " ;; select table_name ;; from information_schema.tables ;; where table_schema = '~a' and table_type = 'BASE TABLE' ;; order by table_name" dbname)))) ;; (defun list-views (dbname &key only-tables) ;; "Return a flat list of all the view names and definitions known in given DBNAME" ;; (with-mysql-connection (dbname) ;; (mysql-query (format nil " ;; select table_name, view_definition ;; from information_schema.views ;; where table_schema = '~a' ;; ~@[and table_name in (~{'~a'~^,~})~] ;; order by table_name" dbname only-tables)))) ;;; ;;; Those functions are to be called from withing an already established ;;; MySQL Connection. ;;; ;;; Handle MATERIALIZE VIEWS sections, where we need to create the views in ;;; the MySQL database before being able to process them. ;;; (defun create-my-views (views-alist) "VIEWS-ALIST associates view names with their SQL definition, which might be empty for already existing views. Create only the views for which we have an SQL definition." (unless (eq :all views-alist) (let ((views (remove-if #'null views-alist :key #'cdr))) (when views (loop for (name . def) in views for sql = (format nil "CREATE VIEW ~a AS ~a" name def) do (log-message :info "MySQL: ~a" sql) (mysql-query sql)))))) (defun drop-my-views (views-alist) "See `create-my-views' for VIEWS-ALIST description. This time we DROP the views to clean out after our work." (unless (eq :all views-alist) (let ((views (remove-if #'null views-alist :key #'cdr))) (when views (let ((sql (format nil "DROP VIEW ~{~a~^, ~};" (mapcar #'car views)))) (log-message :info "MySQL: ~a" sql) (mysql-query sql)))))) ;;; ;;; Those functions are to be called from withing an already established ;;; MySQL Connection. ;;; ;;; Tools to get MySQL table and columns definitions and transform them to ;;; PostgreSQL CREATE TABLE statements, and run those. ;;; (defvar *table-type* '((:table . "BASE TABLE") (:view . "VIEW")) "Associate internal table type symbol with what's found in MySQL information_schema.tables.table_type column.") (defun filter-list-to-where-clause (filter-list &optional not) "Given an INCLUDING or EXCLUDING clause, turn it into a MySQL WHERE clause." (mapcar (lambda (filter) (typecase filter (string-match-rule (format nil "~:[~;!~]= '~a'" not (string-match-rule-target filter))) (regex-match-rule (format nil "~:[~;NOT ~]REGEXP '~a'" not (regex-match-rule-target filter))))) filter-list)) (defun cleanup-default-value (dtype default) "MySQL catalog query always returns the default value as a string, but in the case of a binary data type we actually want a byte vector." (cond ((string= "binary" dtype) (when default (babel:string-to-octets default))) (t default))) (defun list-all-columns (schema &key (table-type :table) only-tables including excluding &aux (table-type-name (cdr (assoc table-type *table-type*)))) "Get the list of MySQL column names per table." (loop :for (tname tcomment cname ccomment dtype ctype default nullable extra) :in (mysql-query (format nil (sql "/mysql/list-all-columns.sql") (db-name *connection*) table-type-name only-tables ; do we print the clause? only-tables including ; do we print the clause? (filter-list-to-where-clause including) excluding ; do we print the clause? (filter-list-to-where-clause excluding t))) :do (let* ((table (case table-type (:view (maybe-add-view schema tname :comment tcomment)) (:table (maybe-add-table schema tname :comment tcomment)))) (def-val (cleanup-default-value dtype default)) (field (make-mysql-column tname cname (unless (or (null ccomment) (string= "" ccomment)) ccomment) dtype ctype def-val nullable extra))) (add-field table field)) :finally (return schema))) (defun list-all-indexes (schema &key only-tables including excluding) "Get the list of MySQL index definitions per table." (loop :for (table-name name non-unique cols) :in (mysql-query (format nil (sql "/mysql/list-all-indexes.sql") (db-name *connection*) only-tables ; do we print the clause? only-tables including ; do we print the clause? (filter-list-to-where-clause including) excluding ; do we print the clause? (filter-list-to-where-clause excluding t))) :do (let* ((table (find-table schema table-name)) (index (make-index :name name ; further processing is needed :schema schema :table table :primary (string= name "PRIMARY") :unique (string= "0" non-unique) :columns (mapcar #'apply-identifier-case (sq:split-sequence #\, cols))))) (add-index table index)) :finally (return schema))) ;;; ;;; MySQL Foreign Keys ;;; (defun list-all-fkeys (schema &key only-tables including excluding) "Get the list of MySQL Foreign Keys definitions per table." (loop :for (table-name name ftable-name cols fcols update-rule delete-rule) :in (mysql-query (format nil (sql "/mysql/list-all-fkeys.sql") (db-name *connection*) (db-name *connection*) only-tables ; do we print the clause? only-tables including ; do we print the clause? (filter-list-to-where-clause including) excluding ; do we print the clause? (filter-list-to-where-clause excluding t))) :do (let* ((table (find-table schema table-name)) (ftable (find-table schema ftable-name)) (fk (make-fkey :name (apply-identifier-case name) :table table :columns (mapcar #'apply-identifier-case (sq:split-sequence #\, cols)) :foreign-table ftable :foreign-columns (mapcar #'apply-identifier-case (sq:split-sequence #\, fcols)) :update-rule update-rule :delete-rule delete-rule))) (if (and name table ftable) (add-fkey table fk) ;; chances are this comes from the EXCLUDING clause, but ;; we'll make for it in fetching missing dependencies for ;; (unique) indexes (log-message :info "Incomplete Foreign Key definition: constraint ~s on table ~s referencing table ~s" name (when table (format-table-name table)) (when ftable (format-table-name ftable))))) :finally (return schema))) ;;; ;;; Queries to get the MySQL comments. ;;; ;;; As it takes a separate PostgreSQL Query per comment it's useless to ;;; fetch them right into the the more general table and columns lists. ;;; (defun list-table-comments (&key only-tables including excluding) "Return comments on MySQL tables." (loop :for (table-name comment) :in (mysql-query (format nil (sql "/mysql/list-table-comments.sql") (db-name *connection*) only-tables ; do we print the clause? only-tables including ; do we print the clause? (filter-list-to-where-clause including) excluding ; do we print the clause? (filter-list-to-where-clause excluding t))) :when (and comment (not (string= comment ""))) :collect (list table-name comment))) (defun list-columns-comments (&key only-tables including excluding) "Return comments on MySQL tables." (loop :for (table-name column-name comment) :in (mysql-query (format nil (sql "/mysql/list-columns-comments.sql") (db-name *connection*) only-tables ; do we print the clause? only-tables including ; do we print the clause? (filter-list-to-where-clause including) excluding ; do we print the clause? (filter-list-to-where-clause excluding t))) :when (and comment (not (string= comment ""))) :collect (list table-name column-name comment))) ;;; ;;; Tools to handle row queries, issuing separate is null statements and ;;; handling of geometric data types. ;;; (defun get-column-sql-expression (name type) "Return per-TYPE SQL expression to use given a column NAME. Mostly we just use the name, but in case of POINT we need to use astext(name)." (case (intern (string-upcase type) "KEYWORD") (:geometry (format nil "astext(`~a`) as `~a`" name name)) (:point (format nil "astext(`~a`) as `~a`" name name)) (t (format nil "`~a`" name)))) (defun get-column-list (dbname table-name) "Some MySQL datatypes have a meaningless default output representation, we need to process them on the SQL side (geometric data types). This function assumes a valid connection to the MySQL server has been established already." (loop with sql = (format nil (sql "/mysql/get-column-list.sql") dbname table-name) for (name type) in (mysql-query sql :result-type 'list) collect (get-column-sql-expression name type))) (declaim (inline fix-nulls)) (defun fix-nulls (row nulls) "Given a cl-mysql row result and a nulls list as from get-column-list-with-is-nulls, replace NIL with empty strings with when we know from the added 'foo is null' that the actual value IS NOT NULL. See http://bugs.mysql.com/bug.php?id=19564 for context." (loop for (current-col next-col) on row for (current-null next-null) on nulls ;; next-null tells us if next column is an "is-null" col ;; when next-null is true, next-col is true if current-col is actually null for is-null = (and next-null (string= next-col "1")) for is-empty = (and next-null (string= next-col "0") (null current-col)) ;; don't collect columns we added, e.g. "column_name is not null" when (not current-null) collect (cond (is-null :null) (is-empty "") (t current-col)))) pgloader/src/sources/mysql/mysql.lisp0000644000175000017500000002507313124715754020236 0ustar vagrantvagrant;;; ;;; Tools to handle MySQL data fetching ;;; (in-package :pgloader.mysql) (defclass copy-mysql (db-copy) ((encoding :accessor encoding ; allows forcing encoding :initarg :encoding :initform nil) (range-list :accessor range-list :initarg :range-list :initform nil)) (:documentation "pgloader MySQL Data Source")) (defmethod initialize-instance :after ((source copy-mysql) &key) "Add a default value for transforms in case it's not been provided." (let ((transforms (and (slot-boundp source 'transforms) (slot-value source 'transforms)))) (when (and (slot-boundp source 'fields) (slot-value source 'fields)) ;; cast typically happens in copy-database in the schema structure, ;; and the result is then copied into the copy-mysql instance. (unless (and (slot-boundp source 'columns) (slot-value source 'columns)) (setf (slot-value source 'columns) (mapcar #'cast (slot-value source 'fields)))) (unless transforms (setf (slot-value source 'transforms) (mapcar #'column-transform (slot-value source 'columns))))))) ;;; ;;; Implement the specific methods ;;; (defmethod concurrency-support ((mysql copy-mysql) concurrency) "Splits the read work thanks WHERE clauses when possible and relevant, return nil if we decide to read all in a single thread, and a list of as many copy-mysql instances as CONCURRENCY otherwise. Each copy-mysql instance in the returned list embeds specifications about how to read only its partition of the source data." (unless (= 1 concurrency) (let* ((indexes (table-index-list (target mysql))) (pkey (first (remove-if-not #'index-primary indexes))) (pcol (when pkey (first (index-columns pkey)))) (coldef (when pcol (find pcol (table-column-list (target mysql)) :key #'column-name :test #'string=))) (ptype (when (and coldef (stringp (column-type-name coldef))) (column-type-name coldef)))) (when (member ptype (list "integer" "bigint" "serial" "bigserial") :test #'string=) ;; the table has a primary key over a integer data type we are able ;; to generate WHERE clause and range index scans. (with-connection (*connection* (source-db mysql)) (let* ((col pcol) (sql (format nil "select min(`~a`), max(`~a`) from `~a`" col col (table-source-name (source mysql))))) (destructuring-bind (min max) (mapcar #'parse-integer (first (mysql-query sql))) ;; generate a list of ranges from min to max (let ((range-list (split-range min max *rows-per-range*))) (unless (< (length range-list) concurrency) ;; affect those ranges to each reader, we have CONCURRENCY ;; of them (let ((partitions (distribute range-list concurrency))) (loop :for part :in partitions :collect (make-instance 'copy-mysql :source-db (clone-connection (source-db mysql)) :target-db (target-db mysql) :source (source mysql) :target (target mysql) :fields (fields mysql) :columns (columns mysql) :transforms (transforms mysql) :encoding (encoding mysql) :range-list (cons col part))))))))))))) (defmacro with-encoding-handler (&body forms) `(handler-bind ;; avoid trying to fetch the character at end-of-input position... ((babel-encodings:end-of-input-in-character #'(lambda (c) (update-stats :data (target mysql) :errs 1) (log-message :error "~a" c) (invoke-restart 'qmynd-impl::use-nil))) (babel-encodings:character-decoding-error #'(lambda (c) (update-stats :data (target mysql) :errs 1) (let ((encoding (babel-encodings:character-coding-error-encoding c)) (position (babel-encodings:character-coding-error-position c)) (character (aref (babel-encodings:character-coding-error-buffer c) (babel-encodings:character-coding-error-position c)))) (log-message :error "~a: Illegal ~a character starting at position ~a: ~a." table-name encoding position character)) (invoke-restart 'qmynd-impl::use-nil)))) (progn ,@forms))) (defmethod map-rows ((mysql copy-mysql) &key process-row-fn) "Extract MySQL data and call PROCESS-ROW-FN function with a single argument (a list of column values) for each row." (let ((table-name (table-source-name (source mysql))) (qmynd:*mysql-encoding* (when (encoding mysql) #+sbcl (encoding mysql) #+ccl (ccl:external-format-character-encoding (encoding mysql))))) (with-connection (*connection* (source-db mysql)) (when qmynd:*mysql-encoding* (log-message :notice "Force encoding to ~a for ~a" qmynd:*mysql-encoding* table-name)) (let* ((cols (get-column-list (db-name (source-db mysql)) table-name)) (sql (format nil "SELECT ~{~a~^, ~} FROM `~a`" cols table-name))) (if (range-list mysql) ;; read a range at a time, in a loop (destructuring-bind (colname . ranges) (range-list mysql) (loop :for (min max) :in ranges :do (let ((sql (format nil "~a WHERE `~a` >= ~a AND `~a` < ~a" sql colname min colname max))) (with-encoding-handler (mysql-query sql :row-fn process-row-fn :result-type 'vector))))) ;; read it all, no WHERE clause (with-encoding-handler (mysql-query sql :row-fn process-row-fn :result-type 'vector))))))) (defmethod copy-column-list ((mysql copy-mysql)) "We are sending the data in the MySQL columns ordering here." (mapcar #'apply-identifier-case (mapcar #'mysql-column-name (fields mysql)))) (defmethod fetch-metadata ((mysql copy-mysql) (catalog catalog) &key materialize-views only-tables (create-indexes t) (foreign-keys t) including excluding) "MySQL introspection to prepare the migration." (let ((schema (add-schema catalog (catalog-name catalog))) (view-names (unless (eq :all materialize-views) (mapcar #'car materialize-views)))) (with-stats-collection ("fetch meta data" :use-result-as-rows t :use-result-as-read t :section :pre) (with-connection (*connection* (source-db mysql)) ;; If asked to MATERIALIZE VIEWS, now is the time to create them in ;; MySQL, when given definitions rather than existing view names. (when (and materialize-views (not (eq :all materialize-views))) (create-my-views materialize-views)) ;; fetch table and columns metadata, covering table and column comments (list-all-columns schema :only-tables only-tables :including including :excluding excluding) ;; fetch view (and their columns) metadata, covering comments too (cond (view-names (list-all-columns schema :only-tables view-names :table-type :view)) ((eq :all materialize-views) (list-all-columns schema :table-type :view))) (when foreign-keys (list-all-fkeys schema :only-tables only-tables :including including :excluding excluding)) (when create-indexes (list-all-indexes schema :only-tables only-tables :including including :excluding excluding)) ;; return how many objects we're going to deal with in total ;; for stats collection (+ (count-tables catalog) (count-views catalog) (count-indexes catalog) (count-fkeys catalog)))) catalog)) (defmethod cleanup ((mysql copy-mysql) (catalog catalog) &key materialize-views) "When there is a PostgreSQL error at prepare-pgsql-database step, we might need to clean-up any view created in the MySQL connection for the migration purpose." (when materialize-views (with-connection (*connection* (source-db mysql)) (drop-my-views materialize-views)))) (defvar *decoding-as* nil "Special per-table encoding/decoding overloading rules for MySQL.") (defun apply-decoding-as-filters (table-name filters) "Return a generialized boolean which is non-nil only if TABLE-NAME matches one of the FILTERS." (flet ((apply-filter (filter) ;; we close over table-name here. (typecase filter (string (string-equal filter table-name)) (list (destructuring-bind (type val) filter (ecase type (:regex (cl-ppcre:scan val table-name)))))))) (some #'apply-filter filters))) (defmethod instanciate-table-copy-object ((copy copy-mysql) (table table)) "Create an new instance for copying TABLE data." (let ((new-instance (change-class (call-next-method copy table) 'copy-mysql))) (setf (encoding new-instance) ;; force the data encoding when asked to (when *decoding-as* (loop :for (encoding . filters) :in *decoding-as* :when (apply-decoding-as-filters (table-name table) filters) :return encoding))) new-instance)) pgloader/src/sources/mysql/sql/0000755000175000017500000000000013127307525016764 5ustar vagrantvagrantpgloader/src/sources/mysql/sql/list-all-columns.sql0000644000175000017500000000136113127307525022705 0ustar vagrantvagrant-- params: db-name -- table-type-name -- only-tables -- only-tables -- including -- filter-list-to-where-clause incuding -- excluding -- filter-list-to-where-clause excluding select c.table_name, t.table_comment, c.column_name, c.column_comment, c.data_type, c.column_type, c.column_default, c.is_nullable, c.extra from information_schema.columns c join information_schema.tables t using(table_schema, table_name) where c.table_schema = '~a' and t.table_type = '~a' ~:[~*~;and table_name in (~{'~a'~^,~})~] ~:[~*~;and (~{table_name ~a~^ or ~})~] ~:[~*~;and (~{table_name ~a~^ and ~})~] order by table_name, ordinal_position; pgloader/src/sources/mysql/sql/get-column-list.sql0000644000175000017500000000027213127307525022531 0ustar vagrantvagrant-- params: dbname -- table-name select column_name, data_type from information_schema.columns where table_schema = '~a' and table_name = '~a' order by ordinal_position; pgloader/src/sources/mysql/sql/list-all-indexes.sql0000644000175000017500000000113013127307525022656 0ustar vagrantvagrant-- params: db-name -- table-type-name -- only-tables -- only-tables -- including -- filter-list-to-where-clause incuding -- excluding -- filter-list-to-where-clause excluding SELECT table_name, index_name, sum(non_unique), cast(GROUP_CONCAT(column_name order by seq_in_index) as char) FROM information_schema.statistics WHERE table_schema = '~a' ~:[~*~;and table_name in (~{'~a'~^,~})~] ~:[~*~;and (~{table_name ~a~^ or ~})~] ~:[~*~;and (~{table_name ~a~^ and ~})~] GROUP BY table_name, index_name; pgloader/src/sources/mysql/sql/list-all-fkeys.sql0000644000175000017500000000302513127307525022345 0ustar vagrantvagrant-- params: db-name -- table-type-name -- only-tables -- only-tables -- including -- filter-list-to-where-clause incuding -- excluding -- filter-list-to-where-clause excluding SELECT s.table_name, s.constraint_name, s.ft, s.cols, s.fcols, rc.update_rule, rc.delete_rule FROM ( SELECT tc.table_schema, tc.table_name, tc.constraint_name, k.referenced_table_name ft, group_concat( k.column_name order by k.ordinal_position) as cols, group_concat( k.referenced_column_name order by k.position_in_unique_constraint) as fcols FROM information_schema.table_constraints tc LEFT JOIN information_schema.key_column_usage k ON k.table_schema = tc.table_schema AND k.table_name = tc.table_name AND k.constraint_name = tc.constraint_name WHERE tc.table_schema = '~a' AND k.referenced_table_schema = '~a' AND tc.constraint_type = 'FOREIGN KEY' ~:[~*~;and tc.table_name in (~{'~a'~^,~})~] ~:[~*~;and (~{tc.table_name ~a~^ or ~})~] ~:[~*~;and (~{tc.table_name ~a~^ and ~})~] GROUP BY tc.table_schema, tc.table_name, tc.constraint_name, ft ) s JOIN information_schema.referential_constraints rc ON rc.constraint_schema = s.table_schema AND rc.constraint_name = s.constraint_name AND rc.table_name = s.table_name; pgloader/src/sources/mysql/sql/list-columns-comments.sql0000644000175000017500000000122413127307525023760 0ustar vagrantvagrant-- params: db-name -- table-type-name -- only-tables -- only-tables -- including -- filter-list-to-where-clause incuding -- excluding -- filter-list-to-where-clause excluding select c.table_name, c.column_name, c.column_comment from information_schema.columns c join information_schema.tables t using(table_schema, table_name) where c.table_schema = '~a' and t.table_type = 'BASE TABLE' ~:[~*~;and table_name in (~{'~a'~^,~})~] ~:[~*~;and (~{table_name ~a~^ or ~})~] ~:[~*~;and (~{table_name ~a~^ and ~})~] order by table_name, ordinal_position; pgloader/src/sources/mysql/sql/list-table-comments.sql0000644000175000017500000000101713127307525023367 0ustar vagrantvagrant-- params: db-name -- table-type-name -- only-tables -- only-tables -- including -- filter-list-to-where-clause incuding -- excluding -- filter-list-to-where-clause excluding SELECT table_name, table_comment FROM information_schema.tables WHERE table_schema = '~a' and table_type = 'BASE TABLE' ~:[~*~;and table_name in (~{'~a'~^,~})~] ~:[~*~;and (~{table_name ~a~^ or ~})~] ~:[~*~;and (~{table_name ~a~^ and ~})~]; pgloader/src/sources/mysql/mysql-csv.lisp0000644000175000017500000000531013047375022021011 0ustar vagrantvagrant;;; ;;; Tools to handle MySQL data fetching: old code, untested, kept for reference. ;;; (in-package :pgloader.mysql) ;;; ;;; MySQL bulk export to file, in PostgreSQL COPY TEXT format ;;; (defun export-database (dbname &key only-tables) "Export MySQL tables into as many TEXT files, in the PostgreSQL COPY format" (let ((all-columns (list-all-columns :dbname dbname))) (setf *state* (pgloader.utils:make-pgstate)) (report-header) (loop for (table-name . cols) in all-columns for filename = (pgloader.csv:get-pathname dbname table-name) when (or (null only-tables) (member table-name only-tables :test #'equal)) do (pgstate-add-table *state* dbname table-name) (report-table-name table-name) (multiple-value-bind (rows secs) (timing ;; load data (let ((source (make-instance 'copy-mysql :source-db dbname :source table-name :fields cols))) (copy-to source filename))) ;; update and report stats (pgstate-incf *state* table-name :read rows :secs secs) (report-pgtable-stats *state* table-name)) finally (report-pgstate-stats *state* "Total export time")))) ;;; ;;; Copy data from a target database into files in the PostgreSQL COPY TEXT ;;; format, then load those files. Useful mainly to compare timing with the ;;; direct streaming method. If you need to pre-process the files, use ;;; export-database, do the extra processing, then use ;;; pgloader.pgsql:copy-from-file on each file. ;;; (defun export-import-database (dbname &key (pg-dbname dbname) (truncate t) only-tables) "Export MySQL data and Import it into PostgreSQL" ;; get the list of tables and have at it (let ((all-columns (list-all-columns :dbname dbname))) (setf *state* (pgloader.utils:make-pgstate)) (report-header) (loop for (table-name . cols) in all-columns when (or (null only-tables) (member table-name only-tables :test #'equal)) do (pgstate-add-table *state* dbname table-name) (report-table-name table-name) (multiple-value-bind (res secs) (timing (let* ((filename (pgloader.csv:get-pathname dbname table-name))) ;; export from MySQL to file (let ((source (make-instance 'copy-mysql :source-db dbname :source table-name :fields cols))) (copy-to source filename)) ;; import the file to PostgreSQL (pgloader.pgsql:copy-from-file pg-dbname table-name filename :truncate truncate))) (declare (ignore res)) (pgstate-incf *state* table-name :secs secs) (report-pgtable-stats *state* table-name)) finally (report-pgstate-stats *state* "Total export+import time")))) pgloader/src/sources/.DS_Store0000644000175000017500000001400413117302073016472 0ustar vagrantvagrantBud1tevSrnlongsqlitevSrnlong  @ @ @ @ EDSDB ` @ @ @pgloader/src/sources/syslog.lisp0000644000175000017500000001001213047375022017221 0ustar vagrantvagrant;;; ;;; Implement a very simple syslog UDP server in order to be able to stream ;;; syslog messages directly into a PostgreSQL database, using the COPY ;;; protocol. ;;; (in-package #:pgloader.syslog) (defun process-message (data queue) "Process the data: send it in the queue for PostgreSQL COPY handling." (lq:push-queue data queue)) (defun syslog-udp-handler (buffer scanners) "Handler to register to usocket:socket-server call." (declare (type (simple-array (unsigned-byte 8) *) buffer)) (let* ((mesg (map 'string #'code-char buffer))) (loop for scanner in scanners for (parser queue) = (destructuring-bind (&key parser queue &allow-other-keys) scanner (list parser queue)) for (match parts) = (multiple-value-list (cl-ppcre:scan-to-strings parser mesg)) until match finally (when match (process-message (coerce parts 'list) queue))))) (defun start-syslog-server (&key scanners (host nil) (port 10514)) "Start our syslog socket and read messages." (usocket:socket-server host port #'syslog-udp-handler (list scanners) :protocol :datagram :reuse-address t :element-type '(unsigned-byte 8))) (defun copy-from-queue (dbname table-name queue &key truncate transforms ((:host *pgconn-host*) *pgconn-host*) ((:port *pgconn-port*) *pgconn-port*) ((:user *pgconn-user*) *pgconn-user*) ((:pass *pgconn-pass*) *pgconn-pass*) ((:gucs *pg-settings*) *pg-settings*)) "Simple wrapper around pgloader.pgsql.copy-from-queue. We need to set the special parameters from within the thread." (pgloader.pgsql:copy-from-queue dbname table-name queue :truncate truncate :transforms transforms)) (defun stream-messages (&key scanners host port truncate transforms) "Listen for syslog messages on given UDP PORT, and stream them to PostgreSQL" (let* ((nb-tasks (+ 1 (length scanners))) (lp:*kernel* (lparallel:make-kernel nb-tasks)) (channel (lp:make-channel)) ;; add a data queue to each scanner (scanners (loop for scanner in scanners for dataq = (lq:make-queue) collect `(,@scanner :queue ,dataq)))) ;; listen to syslog messages and match them against the scanners (lp:submit-task channel #'start-syslog-server :scanners scanners :host host :port port) ;; and start another task per scanner to pull that data from the queue ;; to PostgreSQL, each will have a specific connection and queue. (loop for scanner in scanners do (destructuring-bind (&key target gucs queue &allow-other-keys) scanner (destructuring-bind (&key host port user password dbname table-name &allow-other-keys) target (lp:submit-task channel (lambda () ;; beware of thread boundaries for binding ;; special variables: we use an helper here (copy-from-queue dbname table-name queue :host host :port port :user user :pass password :gucs gucs :truncate truncate :transforms transforms)))))) ;; now wait until both the tasks are over (loop for tasks below nb-tasks do (lp:receive-result channel)))) ;;; ;;; A test client, with some not-so random messages ;;; (defun send-message (message &key (host "localhost") (port 10514)) (let ((socket (usocket:socket-connect host port :protocol :datagram))) (usocket:socket-send socket message (length message)))) #| (send-message "<165>1 2013-08-29T00:30:12Z Dimitris-MacBook-Air.local coreaudiod[215]: - - Enabled automatic stack shots because audio IO is inactive") (send-message "<0>Aug 31 21:38:28 Dimitris-MacBook-Air.local Google Chrome[236]: notify name \"com.apple.coregraphics.GUIConsoleSessionChanged\" has been registered 20 times - this may be a leak") SYSLOG> (start-syslog-server :scanners (list (abnf:parse-abnf-grammar abnf:*abnf-rsyslog* :rsyslog-msg :registering-rules '(:timestamp :app-name :data)))) data: STYLE-WARNING: redefining PGLOADER.SYSLOG::SYSLOG-UDP-HANDLER in DEFUN |# pgloader/src/sources/copy.lisp0000644000175000017500000000510413124502441016652 0ustar vagrantvagrant;;; ;;; Read a file format in PostgreSQL COPY TEXT format. ;;; (in-package :pgloader.copy) (defclass copy-connection (md-connection) ()) (defmethod initialize-instance :after ((copy copy-connection) &key) "Assign the type slot to sqlite." (setf (slot-value copy 'type) "copy")) (defclass copy-copy (md-copy) ((delimiter :accessor delimiter ; see COPY options for TEXT :initarg :delimiter ; in PostgreSQL docs :initform #\Tab) (null-as :accessor null-as :initarg :null-as :initform "\\N")) (:documentation "pgloader COPY Data Source")) (defmethod clone-copy-for ((copy copy-copy) path-spec) "Create a copy of FIXED for loading data from PATH-SPEC." (let ((copy-for-path-spec (change-class (call-next-method copy path-spec) 'copy-copy))) (loop :for slot-name :in '(delimiter null-as) :do (when (slot-boundp copy slot-name) (setf (slot-value copy-for-path-spec slot-name) (slot-value copy slot-name)))) ;; return the new instance! copy-for-path-spec)) (declaim (inline parse-row)) (defun parse-row (line &key (delimiter #\Tab) (null-as "\\N")) "Parse a single line of COPY input file and return a row of columns." (mapcar (lambda (x) ;; we want Postmodern compliant NULLs (cond ((string= null-as x) :null) ;; and we want to avoid injecting default NULL ;; representation down to PostgreSQL when null-as isn't ;; the default ((and (string/= null-as "\\N") (string= x "\\N")) ;; escape the backslash "\\\\N") ;; default case, just use the value we've just read (t x))) ;; splitting is easy, it's always on #\Tab ;; see format-row-for-copy for details (sq:split-sequence delimiter line))) (defmethod process-rows ((copy copy-copy) stream process-fn) "Process rows from STREAM according to COPY specifications and PROCESS-FN." (loop :with fun := process-fn :for line := (read-line stream nil nil) :counting line :into read :while line :do (handler-case (funcall fun (parse-row line :delimiter (delimiter copy) :null-as (null-as copy))) (condition (e) (progn (log-message :error "~a" e) (update-stats :data (target copy) :errs 1)))))) (defmethod data-is-preformatted-p ((copy copy-copy)) t) pgloader/src/sources/db3/0000755000175000017500000000000013127002527015462 5ustar vagrantvagrantpgloader/src/sources/db3/db3-schema.lisp0000644000175000017500000000663213127002527020270 0ustar vagrantvagrant;;; ;;; Tools to handle the DBF file format ;;; (in-package :pgloader.db3) (defclass dbf-connection (fd-connection) ((db3 :initarg db3 :accessor fd-db3)) (:documentation "pgloader connection parameters for DBF files.")) (defmethod initialize-instance :after ((dbfconn dbf-connection) &key) "Assign the type slot to dbf." (setf (slot-value dbfconn 'type) "dbf")) (defmethod open-connection ((dbfconn dbf-connection) &key) (setf (conn-handle dbfconn) (open (fd-path dbfconn) :direction :input :element-type '(unsigned-byte 8))) (let ((db3 (make-instance 'db3:db3))) (db3:load-header db3 (conn-handle dbfconn)) (setf (fd-db3 dbfconn) db3)) dbfconn) (defmethod close-connection ((dbfconn dbf-connection)) (close (conn-handle dbfconn)) (setf (conn-handle dbfconn) nil (fd-db3 dbfconn) nil) dbfconn) (defmethod clone-connection ((c dbf-connection)) (let ((clone (change-class (call-next-method c) 'dbf-connection))) (setf (fd-db3 clone) (fd-db3 c)) clone)) (defvar *db3-pgsql-type-mapping* '(("C" . "text") ; ignore field-length ("N" . "numeric") ; handle both integers and floats ("L" . "boolean") ; PostgreSQL compatible representation ("D" . "date") ; no TimeZone in DB3 files ("M" . "text"))) ; not handled yet (defstruct (db3-field (:constructor make-db3-field (name type length))) name type length) (defun list-all-columns (db3 table) "Return the list of columns for the given DB3-FILE-NAME." (loop :for field :in (db3::fields db3) :do (add-field table (make-db3-field (db3::field-name field) (db3::field-type field) (db3::field-length field))))) (defmethod cast ((field db3-field)) "Return the PostgreSQL type definition given the DB3 one." (let* ((type (db3-field-type field)) (transform (cond ((string= type "C") #'db3-trim-string) ((string= type "N") #'db3-numeric-to-pgsql-numeric) ((string= type "L") #'logical-to-boolean) ((string= type "D") #'db3-date-to-pgsql-date) (t nil)))) (make-column :name (apply-identifier-case (db3-field-name field)) :type-name (cdr (assoc type *db3-pgsql-type-mapping* :test #'string=)) :transform transform))) (declaim (inline logical-to-boolean db3-trim-string db3-date-to-pgsql-date)) (defun logical-to-boolean (value) "Convert a DB3 logical value to a PostgreSQL boolean." (if (string= value "?") nil value)) (defun db3-trim-string (value) "DB3 Strings a right padded with spaces, fix that." (string-right-trim '(#\Space) value)) (defun db3-numeric-to-pgsql-numeric (value) "DB3 numerics should be good to go, but might contain spaces." (let ((trimmed-string (string-right-trim '(#\Space) value))) (unless (string= "" trimmed-string) trimmed-string))) (defun db3-date-to-pgsql-date (value) "Convert a DB3 date to a PostgreSQL date." (when (and value (string/= "" value) (= 8 (length value))) (let ((year (parse-integer (subseq value 0 4) :junk-allowed t)) (month (parse-integer (subseq value 4 6) :junk-allowed t)) (day (parse-integer (subseq value 6 8) :junk-allowed t))) (when (and year month day) (format nil "~4,'0d-~2,'0d-~2,'0d" year month day))))) pgloader/src/sources/db3/db3.lisp0000644000175000017500000000436613047375022017040 0ustar vagrantvagrant;;; ;;; Tools to handle the DBF file format ;;; (in-package :pgloader.db3) ;;; ;;; Integration with pgloader ;;; (defclass copy-db3 (db-copy) ((encoding :accessor encoding ; file encoding :initarg :encoding)) (:documentation "pgloader DBF Data Source")) (defmethod initialize-instance :after ((db3 copy-db3) &key) "Add a default value for transforms in case it's not been provided." (setf (slot-value db3 'source) (let ((table-name (pathname-name (fd-path (source-db db3))))) (make-table :source-name table-name :name (apply-identifier-case table-name))))) (defmethod map-rows ((copy-db3 copy-db3) &key process-row-fn) "Extract DB3 data and call PROCESS-ROW-FN function with a single argument (a list of column values) for each row." (with-connection (conn (source-db copy-db3)) (let ((stream (conn-handle (source-db copy-db3))) (db3 (fd-db3 (source-db copy-db3))) (db3:*external-format* (encoding copy-db3))) (loop :with count := (db3:record-count db3) :repeat count :for row-array := (db3:load-record db3 stream) :do (funcall process-row-fn row-array) :finally (return count))))) (defmethod instanciate-table-copy-object ((db3 copy-db3) (table table)) "Create an new instance for copying TABLE data." (let ((new-instance (change-class (call-next-method db3 table) 'copy-db3))) (setf (encoding new-instance) (encoding db3)) new-instance)) (defmethod fetch-metadata ((db3 copy-db3) (catalog catalog) &key materialize-views only-tables create-indexes foreign-keys including excluding) "Collect DB3 metadata and prepare our catalog from that." (declare (ignore materialize-views only-tables create-indexes foreign-keys including excluding)) (let* ((table (or (target db3) (source db3))) (schema (add-schema catalog (table-name table)))) (push-to-end table (schema-table-list schema)) (with-connection (conn (source-db db3)) (list-all-columns (fd-db3 conn) table)) catalog)) pgloader/src/sources/mssql/0000755000175000017500000000000013127307525016157 5ustar vagrantvagrantpgloader/src/sources/mssql/sql/0000755000175000017500000000000013127307525016756 5ustar vagrantvagrantpgloader/src/sources/mssql/sql/list-all-columns.sql0000644000175000017500000000460413127307525022702 0ustar vagrantvagrant-- params: dbname -- table-type-name -- including -- filter-list-to-where-clause including -- excluding -- filter-list-to-where-clause excluding select c.table_schema, c.table_name, c.column_name, c.data_type, CASE WHEN c.column_default LIKE '((%' AND c.column_default LIKE '%))' THEN CASE WHEN SUBSTRING(c.column_default,3,len(c.column_default)-4) = 'newid()' THEN 'generate_uuid_v4()' WHEN SUBSTRING(c.column_default,3,len(c.column_default)-4) LIKE 'convert(%varchar%,getdate(),%)' THEN 'today' WHEN SUBSTRING(c.column_default,3,len(c.column_default)-4) = 'getdate()' THEN 'CURRENT_TIMESTAMP' WHEN SUBSTRING(c.column_default,3,len(c.column_default)-4) LIKE '''%''' THEN SUBSTRING(c.column_default,4,len(c.column_default)-6) ELSE SUBSTRING(c.column_default,3,len(c.column_default)-4) END WHEN c.column_default LIKE '(%' AND c.column_default LIKE '%)' THEN CASE WHEN SUBSTRING(c.column_default,2,len(c.column_default)-2) = 'newid()' THEN 'generate_uuid_v4()' WHEN SUBSTRING(c.column_default,2,len(c.column_default)-2) LIKE 'convert(%varchar%,getdate(),%)' THEN 'today' WHEN SUBSTRING(c.column_default,2,len(c.column_default)-2) = 'getdate()' THEN 'CURRENT_TIMESTAMP' WHEN SUBSTRING(c.column_default,2,len(c.column_default)-2) LIKE '''%''' THEN SUBSTRING(c.column_default,3,len(c.column_default)-4) ELSE SUBSTRING(c.column_default,2,len(c.column_default)-2) END ELSE c.column_default END, c.is_nullable, COLUMNPROPERTY(object_id(c.table_name), c.column_name, 'IsIdentity'), c.CHARACTER_MAXIMUM_LENGTH, c.NUMERIC_PRECISION, c.NUMERIC_PRECISION_RADIX, c.NUMERIC_SCALE, c.DATETIME_PRECISION, c.CHARACTER_SET_NAME, c.COLLATION_NAME from information_schema.columns c join information_schema.tables t on c.table_schema = t.table_schema and c.table_name = t.table_name where c.table_catalog = '~a' and t.table_type = '~a' ~:[~*~;and (~{~a~^~&~10t or ~})~] ~:[~*~;and (~{~a~^~&~10t and ~})~] order by c.table_schema, c.table_name, c.ordinal_position; pgloader/src/sources/mssql/sql/list-all-indexes.sql0000644000175000017500000000164313127307525022661 0ustar vagrantvagrant-- params: including -- filter-list-to-where-clause including -- excluding -- filter-list-to-where-clause excluding select schema_name(schema_id) as SchemaName, o.name as TableName, REPLACE(i.name, '.', '_') as IndexName, co.[name] as ColumnName, i.is_unique, i.is_primary_key, i.filter_definition from sys.indexes i join sys.objects o on i.object_id = o.object_id join sys.index_columns ic on ic.object_id = i.object_id and ic.index_id = i.index_id join sys.columns co on co.object_id = i.object_id and co.column_id = ic.column_id where schema_name(schema_id) not in ('dto', 'sys') ~:[~*~;and (~{~a~^ or ~})~] ~:[~*~;and (~{~a~^ and ~})~] order by SchemaName, o.[name], i.[name], ic.is_included_column, ic.key_ordinal; pgloader/src/sources/mssql/sql/list-all-fkeys.sql0000644000175000017500000000313413127307525022340 0ustar vagrantvagrant-- params: dbname -- including -- filter-list-to-where-clause including -- excluding -- filter-list-to-where-clause excluding SELECT REPLACE(KCU1.CONSTRAINT_NAME, '.', '_') AS 'CONSTRAINT_NAME' , KCU1.TABLE_SCHEMA AS 'TABLE_SCHEMA' , KCU1.TABLE_NAME AS 'TABLE_NAME' , KCU1.COLUMN_NAME AS 'COLUMN_NAME' , KCU2.TABLE_SCHEMA AS 'UNIQUE_TABLE_SCHEMA' , KCU2.TABLE_NAME AS 'UNIQUE_TABLE_NAME' , KCU2.COLUMN_NAME AS 'UNIQUE_COLUMN_NAME' , RC.UPDATE_RULE AS 'UPDATE_RULE' , RC.DELETE_RULE AS 'DELETE_RULE' FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU1 ON KCU1.CONSTRAINT_CATALOG = RC.CONSTRAINT_CATALOG AND KCU1.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA AND KCU1.CONSTRAINT_NAME = RC.CONSTRAINT_NAME JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU2 ON KCU2.CONSTRAINT_CATALOG = RC.UNIQUE_CONSTRAINT_CATALOG AND KCU2.CONSTRAINT_SCHEMA = RC.UNIQUE_CONSTRAINT_SCHEMA AND KCU2.CONSTRAINT_NAME = RC.UNIQUE_CONSTRAINT_NAME WHERE KCU1.ORDINAL_POSITION = KCU2.ORDINAL_POSITION AND KCU1.TABLE_CATALOG = '~a' AND KCU1.CONSTRAINT_CATALOG = '~a' AND KCU1.CONSTRAINT_SCHEMA NOT IN ('dto', 'sys') AND KCU1.TABLE_SCHEMA NOT IN ('dto', 'sys') AND KCU2.TABLE_SCHEMA NOT IN ('dto', 'sys') ~:[~*~;and (~{~a~^ or ~})~] ~:[~*~;and (~{~a~^ and ~})~] ORDER BY KCU1.CONSTRAINT_NAME, KCU1.ORDINAL_POSITION; pgloader/src/sources/mssql/mssql-cast-rules.lisp0000644000175000017500000001524713116526364022302 0ustar vagrantvagrant;;; ;;; Tools to handle MS SQL data type casting rules ;;; (in-package :pgloader.mssql) (defparameter *mssql-default-cast-rules* `((:source (:type "char") :target (:type "text" :drop-typemod t)) (:source (:type "nchar") :target (:type "text" :drop-typemod t)) (:source (:type "varchar") :target (:type "text" :drop-typemod t)) (:source (:type "nvarchar") :target (:type "text" :drop-typemod t)) (:source (:type "ntext") :target (:type "text" :drop-typemod t)) (:source (:type "xml") :target (:type "xml" :drop-typemod t)) (:source (:type "int" :auto-increment t) :target (:type "bigserial" :drop-default t)) (:source (:type "tinyint") :target (:type "smallint")) (:source (:type "tinyint" :auto-increment t) :target (:type "serial")) (:source (:type "bit") :target (:type "boolean") :using pgloader.transforms::sql-server-bit-to-boolean) (:source (:type "uniqueidentifier") :target (:type "uuid") :using pgloader.transforms::sql-server-uniqueidentifier-to-uuid) (:source (:type "hierarchyid") :target (:type "bytea") :using pgloader.transforms::byte-vector-to-bytea) (:source (:type "geography") :target (:type "bytea") :using pgloader.transforms::byte-vector-to-bytea) (:source (:type "float") :target (:type "float") :using pgloader.transforms::float-to-string) (:source (:type "real") :target (:type "real") :using pgloader.transforms::float-to-string) (:source (:type "double") :target (:type "double precision") :using pgloader.transforms::float-to-string) (:source (:type "numeric") :target (:type "numeric") :using pgloader.transforms::float-to-string) (:source (:type "decimal") :target (:type "numeric") :using pgloader.transforms::float-to-string) (:source (:type "money") :target (:type "numeric") :using pgloader.transforms::float-to-string) (:source (:type "smallmoney") :target (:type "numeric") :using pgloader.transforms::float-to-string) (:source (:type "binary") :target (:type "bytea") :using pgloader.transforms::byte-vector-to-bytea) (:source (:type "image") :target (:type "bytea") :using pgloader.transforms::byte-vector-to-bytea) (:source (:type "varbinary") :target (:type "bytea") :using pgloader.transforms::byte-vector-to-bytea) (:source (:type "smalldatetime") :target (:type "timestamptz")) (:source (:type "datetime") :target (:type "timestamptz")) (:source (:type "datetime2") :target (:type "timestamptz"))) "Data Type Casting to migrate from MSSQL to PostgreSQL") ;;; ;;; Specific implementation of schema migration, see the API in ;;; src/pgsql/schema.lisp ;;; (defstruct (mssql-column (:constructor make-mssql-column (schema table-name name type default nullable identity character-maximum-length numeric-precision numeric-precision-radix numeric-scale datetime-precision character-set-name collation-name))) schema table-name name type default nullable identity character-maximum-length numeric-precision numeric-precision-radix numeric-scale datetime-precision character-set-name collation-name) (defmethod mssql-column-ctype ((col mssql-column)) "Build the ctype definition from the full mssql-column information." (let ((type (mssql-column-type col))) (cond ((member type '("float" "real") :test #'string=) ;; see https://msdn.microsoft.com/en-us/library/ms173773.aspx ;; scale is supposed to be nil, and useless in PostgreSQL, so we ;; just ignore it (format nil "~a(~a)" type (mssql-column-numeric-precision col))) ((member type '("decimal" "numeric" ) :test #'string=) ;; https://msdn.microsoft.com/en-us/library/ms187746.aspx (cond ((null (mssql-column-numeric-precision col)) type) (t (format nil "~a(~a,~a)" type (mssql-column-numeric-precision col) (or (mssql-column-numeric-scale col) 0))))) ((member type '("char" "nchar" "varchar" "nvarchar" "binary") :test #'string=) ;; the user might have a CAST rule with keep typemod, so we need ;; to deal with character-maximum-length for now (if (= -1 (mssql-column-character-maximum-length col)) type (format nil "~a(~a)" type (mssql-column-character-maximum-length col)))) (t type)))) (defmethod cast ((field mssql-column)) "Return the PostgreSQL type definition from given MS SQL column definition." (with-slots (schema table-name name type default nullable) field (declare (ignore schema)) ; FIXME (let* ((ctype (mssql-column-ctype field)) (extra (when (mssql-column-identity field) "auto_increment")) (pgcol (apply-casting-rules table-name name type ctype default nullable extra))) ;; the MS SQL driver smartly maps data to the proper CL type, but the ;; pgloader API only wants to see text representations to send down the ;; COPY protocol. (unless (column-transform pgcol) (setf (column-transform pgcol) (lambda (val) (if val (format nil "~a" val) :null)))) ;; normalize default values ;; see *pgsql-default-values* (setf (column-default pgcol) (cond ((and (null default) (column-nullable pgcol)) :null) ((and (stringp default) (string= "NULL" default)) :null) ;; fix stupid N'' behavior from MS SQL column default ((and (stringp default) (uiop:string-enclosed-p "N'" default "'")) (subseq default 2 (+ (length default) -1))) ((and (stringp default) ;; address CURRENT_TIMESTAMP(6) and other spellings (or (uiop:string-prefix-p "CURRENT_TIMESTAMP" default) (string= "CURRENT TIMESTAMP" default))) :current-timestamp) ((and (stringp default) (or (string= "newid()" default) (string= "newsequentialid()" default))) :generate-uuid) (t (column-default pgcol)))) pgcol))) pgloader/src/sources/mssql/mssql.lisp0000644000175000017500000001035213047375022020206 0ustar vagrantvagrant;;; ;;; Tools to handle the MS SQL Database ;;; (in-package :pgloader.mssql) (defclass copy-mssql (db-copy) ((encoding :accessor encoding ; allows forcing encoding :initarg :encoding :initform nil)) (:documentation "pgloader MS SQL Data Source")) (defmethod initialize-instance :after ((source copy-mssql) &key) "Add a default value for transforms in case it's not been provided." (let* ((transforms (when (slot-boundp source 'transforms) (slot-value source 'transforms)))) (when (and (slot-boundp source 'fields) (slot-value source 'fields)) ;; cast typically happens in copy-database in the schema structure, ;; and the result is then copied into the copy-mysql instance. (unless (and (slot-boundp source 'columns) (slot-value source 'columns)) (setf (slot-value source 'columns) (mapcar #'cast (slot-value source 'fields)))) (unless transforms (setf (slot-value source 'transforms) (mapcar #'column-transform (slot-value source 'columns))))))) (defmethod map-rows ((mssql copy-mssql) &key process-row-fn) "Extract Mssql data and call PROCESS-ROW-FN function with a single argument (a list of column values) for each row." (with-connection (*mssql-db* (source-db mssql)) (let* ((sql (format nil "SELECT ~{~a~^, ~} FROM [~a].[~a];" (get-column-list (fields mssql)) (schema-source-name (table-schema (source mssql))) (table-source-name (source mssql))))) (log-message :debug "~a" sql) (handler-bind ((babel-encodings:end-of-input-in-character #'(lambda (c) (update-stats :data (target mssql) :errs 1) (log-message :error "~a" c) (invoke-restart 'mssql::use-nil))) (babel-encodings:character-decoding-error #'(lambda (c) (update-stats :data (target mssql) :errs 1) (let ((encoding (babel-encodings:character-coding-error-encoding c)) (position (babel-encodings:character-coding-error-position c)) (character (aref (babel-encodings:character-coding-error-buffer c) (babel-encodings:character-coding-error-position c)))) (log-message :error "~a: Illegal ~a character starting at position ~a: ~a." (table-schema (source mssql)) encoding position character)) (invoke-restart 'mssql::use-nil)))) (mssql::map-query-results sql :row-fn process-row-fn :connection (conn-handle *mssql-db*)))))) (defmethod fetch-metadata ((mssql copy-mssql) (catalog catalog) &key materialize-views only-tables create-indexes foreign-keys including excluding) "MS SQL introspection to prepare the migration." (declare (ignore materialize-views only-tables)) (with-stats-collection ("fetch meta data" :use-result-as-rows t :use-result-as-read t :section :pre) (with-connection (*mssql-db* (source-db mssql)) (list-all-columns catalog :including including :excluding excluding) (when create-indexes (list-all-indexes catalog :including including :excluding excluding)) (when foreign-keys (list-all-fkeys catalog :including including :excluding excluding)) ;; return how many objects we're going to deal with in total ;; for stats collection (+ (count-tables catalog) (count-indexes catalog)))) ;; be sure to return the catalog itself catalog) pgloader/src/sources/mssql/mssql-schema.lisp0000644000175000017500000002154213127307525021451 0ustar vagrantvagrant;;; ;;; Tools to query the MS SQL Schema to reproduce in PostgreSQL ;;; (in-package :pgloader.mssql) (defvar *mssql-db* nil "The MS SQL database connection handler.") ;;; ;;; General utility to manage MySQL connection ;;; (defclass mssql-connection (db-connection) ()) (defmethod initialize-instance :after ((msconn mssql-connection) &key) "Assign the type slot to mssql." (setf (slot-value msconn 'type) "mssql")) (defmethod open-connection ((msconn mssql-connection) &key) (setf (conn-handle msconn) (mssql:connect (db-name msconn) (db-user msconn) (db-pass msconn) (db-host msconn))) ;; return the connection object msconn) (defmethod close-connection ((msconn mssql-connection)) (mssql:disconnect (conn-handle msconn)) (setf (conn-handle msconn) nil) msconn) (defmethod clone-connection ((c mssql-connection)) (change-class (call-next-method c) 'mssql-connection)) (defmethod query ((msconn mssql-connection) sql &key) "Send SQL query to MSCONN connection." (log-message :sql "MSSQL: sending query: ~a" sql) (mssql:query sql :connection (conn-handle msconn))) (defun mssql-query (query) "Execute given QUERY within the current *connection*, and set proper defaults for pgloader." (log-message :sql "MSSQL: sending query: ~a" query) (mssql:query query :connection (conn-handle *mssql-db*))) ;;; ;;; Those functions are to be called from withing an already established ;;; MS SQL Connection. ;;; ;;; Tools to get MS SQL table and columns definitions and transform them to ;;; PostgreSQL CREATE TABLE statements, and run those. ;;; (defvar *table-type* '((:table . "BASE TABLE") (:view . "VIEW")) "Associate internal table type symbol with what's found in MS SQL information_schema.tables.table_type column.") (defun filter-list-to-where-clause (filter-list &optional not (schema-col "table_schema") (table-col "table_name")) "Given an INCLUDING or EXCLUDING clause, turn it into a MS SQL WHERE clause." (loop :for (schema . table-name-list) :in filter-list :append (mapcar (lambda (table-name) (format nil "(~a = '~a' and ~a ~:[~;NOT ~]LIKE '~a')" schema-col schema table-col not table-name)) table-name-list))) (defun list-all-columns (catalog &key (table-type :table) including excluding &aux (table-type-name (cdr (assoc table-type *table-type*)))) (loop :for (schema-name table-name name type default nullable identity character-maximum-length numeric-precision numeric-precision-radix numeric-scale datetime-precision character-set-name collation-name) :in (mssql-query (format nil (sql "/mssql/list-all-columns.sql") (db-name *mssql-db*) table-type-name including ; do we print the clause? (filter-list-to-where-clause including nil "c.table_schema" "c.table_name") excluding ; do we print the clause? (filter-list-to-where-clause excluding t "c.table_schema" "c.table_name"))) :do (let* ((schema (maybe-add-schema catalog schema-name)) (table (maybe-add-table schema table-name)) (field (make-mssql-column schema-name table-name name type default nullable (eq 1 identity) character-maximum-length numeric-precision numeric-precision-radix numeric-scale datetime-precision character-set-name collation-name))) (add-field table field)) :finally (return catalog))) (defun list-all-indexes (catalog &key including excluding) "Get the list of MSSQL index definitions per table." (loop :for (schema-name table-name index-name colname unique pkey filter) :in (mssql-query (format nil (sql "/mssql/list-all-indexes.sql") including ; do we print the clause? (filter-list-to-where-clause including nil "schema_name(schema_id)" "o.name" ) excluding ; do we print the clause? (filter-list-to-where-clause excluding t "schema_name(schema_id)" "o.name" ))) :do (let* ((schema (find-schema catalog schema-name)) (table (find-table schema table-name)) (pg-index (make-index :name index-name :schema schema :table table :primary (= pkey 1) :unique (= unique 1) :columns nil :filter filter)) (index (maybe-add-index table index-name pg-index :key #'index-name))) (add-column index colname)) :finally (return catalog))) (defun list-all-fkeys (catalog &key including excluding) "Get the list of MSSQL index definitions per table." (loop :for (fkey-name schema-name table-name col fschema-name ftable-name fcol fk-update-rule fk-delete-rule) :in (mssql-query (format nil (sql "/mssql/list-all-fkeys.sql") (db-name *mssql-db*) (db-name *mssql-db*) including ; do we print the clause? (filter-list-to-where-clause including nil "kcu1.table_schema" "kcu1.table_name") excluding ; do we print the clause? (filter-list-to-where-clause excluding t "kcu1.table_schema" "kcu1.table_name"))) :do (let* ((schema (find-schema catalog schema-name)) (table (find-table schema table-name)) (fschema (find-schema catalog fschema-name)) (ftable (find-table fschema ftable-name)) (pg-fkey (make-fkey :name fkey-name :table table :columns nil :foreign-table ftable :foreign-columns nil :update-rule fk-update-rule :delete-rule fk-delete-rule)) (fkey (maybe-add-fkey table fkey-name pg-fkey :key #'fkey-name))) (push-to-end col (fkey-columns fkey)) (push-to-end fcol (fkey-foreign-columns fkey))) :finally (return catalog))) ;;; ;;; Tools to handle row queries. ;;; (defun get-column-sql-expression (name type) "Return per-TYPE SQL expression to use given a column NAME. Mostly we just use the name, and make try to avoid parsing dates." (case (intern (string-upcase type) "KEYWORD") (:datetime (format nil "convert(varchar, [~a], 126)" name)) (:smalldatetime (format nil "convert(varchar, [~a], 126)" name)) (:date (format nil "convert(varchar, [~a], 126)" name)) (:bigint (format nil "cast([~a] as numeric)" name)) (t (format nil "[~a]" name)))) (defun get-column-list (columns) "Tweak how we fetch the column values to avoid parsing when possible." (loop :for col :in columns :collect (with-slots (name type) col (get-column-sql-expression name type)))) pgloader/src/sources/mssql/mssql-index-filters.lisp0000644000175000017500000001602313047375022022762 0ustar vagrantvagrant;;; ;;; Tools to translate MS SQL index definitions into PostgreSQL ;;; CREATE INDEX ... WHERE ... ;;; clauses. ;;; (in-package #:pgloader.mssql.index-filter) (defmethod translate-index-filter ((table table) (index index) (sql-dialect (eql 'copy-mssql))) "Transform given MS SQL index filter to PostgreSQL slang." (labels ((process-expr (expression) (destructuring-bind (operator identifier &optional argument) expression (let* ((pg-id (apply-identifier-case identifier)) (col (find pg-id (table-column-list table) :key #'column-name :test #'string=))) (assert (not (null col))) (list operator pg-id (typecase argument (null nil) (list (mapcar (column-transform col) (rest argument))) (t (funcall (column-transform col) argument)))))))) (when (index-filter index) (let* ((raw-expr (parse-index-filter-clause (index-filter index))) (pg-expr (loop :for node :in raw-expr :collect (typecase node (string node) ; that's "and" / "or" (list (process-expr node)))))) ;; now reformat the expression into SQL (with-output-to-string (s) (loop :for node :in pg-expr :do (typecase node (string (format s " ~a " node)) (list (destructuring-bind (op id &optional arg) node (case op (:is-null (format s "~a IS NULL" id)) (:is-not-null (format s "~a IS NOT NULL" id)) (:between (format s "~a between ~a and ~a" id (first arg) (second arg))) (:in (format s "~a in ~{~a~^, ~}" id arg)) (otherwise (format s "~a ~a~@[ '~a'~]" id op arg)))))))))))) (defun parse-index-filter-clause (filter) "Parse the filter clause for a MS SQL index, see https://technet.microsoft.com/en-us/library/cc280372.aspx" (parse 'mssql-index-where-clause filter)) ;;; ;;; Esrap parser for the index WHERE clause ;;; ;;; Examples: ;;; "([deleted]=(0))" ;;; EndDate IS NOT NULL ;;; EndDate IN ('20000825', '20000908', '20000918') ;;; EndDate IS NOT NULL AND ComponentID = 5 AND StartDate > '01/01/2008' ;;; (defrule whitespace (+ (or #\Space #\Tab #\Newline)) (:constant #\Space)) (defrule punct (or #\, #\- #\_) (:text t)) (defrule namestring (and (or #\_ (alpha-char-p character)) (* (or (alpha-char-p character) (digit-char-p character) punct))) (:text t)) (defrule mssql-bracketed-identifier (and "[" namestring "]") (:lambda (id) (text (second id)))) (defrule mssql-identifier (or mssql-bracketed-identifier namestring)) (defrule = "=" (:constant :=)) (defrule <= "<=" (:constant :<=)) (defrule >= ">=" (:constant :>=)) (defrule < "<" (:constant :<)) (defrule > ">" (:constant :>)) (defrule <> "<>" (:constant :<>)) (defrule != "!=" (:constant :<>)) (defrule in (and (? whitespace) (~ "in") (? whitespace)) (:constant :in)) (defrule o-p (and (? whitespace) "(" (? whitespace)) (:constant "(")) (defrule c-p (and (? whitespace) ")" (? whitespace)) (:constant ")")) (defrule between (and (? whitespace) (~ "between") (? whitespace)) (:constant :between)) (defrule and-op (and (? whitespace) (~ "and") (? whitespace)) (:constant "and")) (defrule mssql-operator (and (? whitespace) (or = <> <= < >= > !=)) (:lambda (op) (second op))) (defrule digits (+ (digit-char-p character)) (:text t)) (defrule quoted (and "'" (+ (not "'")) "'") (:lambda (q) (text (second q)))) (defrule mssql-constant-parens (and (? whitespace) "(" (or digits quoted) ")") (:function third)) (defrule mssql-constant-no-parens (and (? whitespace) (or digits quoted)) (:function second)) (defrule mssql-constant (or mssql-constant-parens mssql-constant-no-parens)) (defrule mssql-is-not-null (and (? whitespace) (~ "is") whitespace (~ "not") whitespace (~ "null")) (:constant :is-not-null)) (defrule mssql-is-null (and (? whitespace) (~ "is") whitespace (~ "null")) (:constant :is-null)) (defrule mssql-where-is-null (and mssql-identifier (or mssql-is-null mssql-is-not-null)) (:lambda (is-null) (list (second is-null) (first is-null)))) (defrule mssql-where-id-op-const (and mssql-identifier mssql-operator mssql-constant) (:lambda (op) (list (second op) (first op) (third op)))) (defrule mssql-where-const-op-id (and mssql-constant mssql-operator mssql-identifier) ;; always put identifier first (:lambda (op) (list (second op) (third op) (first op)))) (defrule mssql-where-op (or mssql-where-id-op-const mssql-where-const-op-id)) (defrule another-constant (and "," (? whitespace) mssql-constant) (:function third)) (defrule mssql-in-list (and o-p mssql-constant (* another-constant) c-p) (:lambda (in) (list* (second in) (third in)))) (defrule mssql-where-in (and mssql-identifier in mssql-in-list) (:destructure (id op list) (list op id list))) (defrule mssql-where-between (and (? whitespace) mssql-identifier between mssql-constant and-op mssql-constant) (:lambda (between) (list (third between) (second between) (list (fourth between) (sixth between))))) (defrule mssql-index-filter (and (? "(") (? whitespace) (or mssql-where-in mssql-where-between mssql-where-is-null mssql-where-op) (? whitespace) (? ")")) (:function third)) (defrule another-index-filter (and (? whitespace) (or (~ "and") (~ "or")) (? whitespace) mssql-index-filter) (:lambda (another) (list (second another) (fourth another)))) (defrule mssql-index-where-clause (and mssql-index-filter (* another-index-filter)) (:lambda (where) (list* (first where) (loop :for (logical-op filter) :in (second where) :collect logical-op :collect filter)))) pgloader/src/sources/fixed.lisp0000644000175000017500000000430713047375022017012 0ustar vagrantvagrant;;; ;;; Tools to handle fixed width files ;;; (in-package :pgloader.fixed) (defclass fixed-connection (md-connection) ()) (defmethod initialize-instance :after ((fixed fixed-connection) &key) "Assign the type slot to sqlite." (setf (slot-value fixed 'type) "fixed")) (defclass copy-fixed (md-copy) ((encoding :accessor encoding ; file encoding :initarg :encoding) ; (skip-lines :accessor skip-lines ; CSV headers :initarg :skip-lines ; :initform 0)) (:documentation "pgloader Fixed Columns Data Source")) (defmethod clone-copy-for ((fixed copy-fixed) path-spec) "Create a copy of FIXED for loading data from PATH-SPEC." (let ((fixed-clone (change-class (call-next-method fixed path-spec) 'copy-fixed))) (loop :for slot-name :in '(encoding skip-lines) :do (when (slot-boundp fixed slot-name) (setf (slot-value fixed-clone slot-name) (slot-value fixed slot-name)))) ;; return the new instance! fixed-clone)) (declaim (inline parse-row)) (defun parse-row (fixed-cols-specs line) "Parse a single line of FIXED input file and return a row of columns." (loop :with len := (length line) :for opts :in fixed-cols-specs :collect (destructuring-bind (&key start length &allow-other-keys) opts ;; some fixed format files are ragged on the right, meaning ;; that we might have missing characters on each line. ;; take all that we have and return nil for missing data. (let ((end (+ start length))) (when (<= start len) (subseq line start (min len end))))))) (defmethod process-rows ((fixed copy-fixed) stream process-fn) "Process rows from STREAM according to COPY specifications and PROCESS-FN." (loop :with fun := process-fn :with fixed-cols-specs := (mapcar #'cdr (fields fixed)) :for line := (read-line stream nil nil) :counting line :into read :while line :do (handler-case (funcall fun (parse-row fixed-cols-specs line)) (condition (e) (progn (log-message :error "~a" e) (update-stats :data (target fixed) :errs 1)))))) pgloader/src/sources/sqlite/0000755000175000017500000000000013127165432016320 5ustar vagrantvagrantpgloader/src/sources/sqlite/sqlite-schema.lisp0000644000175000017500000002244513127165432021757 0ustar vagrantvagrant;;; ;;; SQLite tools connecting to a database ;;; (in-package :pgloader.sqlite) (defvar *sqlite-db* nil "The SQLite database connection handler.") ;;; ;;; Integration with the pgloader Source API ;;; (defclass sqlite-connection (fd-connection) ((has-sequences :accessor has-sequences))) (defmethod initialize-instance :after ((slconn sqlite-connection) &key) "Assign the type slot to sqlite." (setf (slot-value slconn 'type) "sqlite")) (defmethod open-connection ((slconn sqlite-connection) &key check-has-sequences) (setf (conn-handle slconn) (sqlite:connect (fd-path slconn))) (log-message :debug "CONNECTED TO ~a" (fd-path slconn)) (when check-has-sequences (let ((sql (format nil "SELECT tbl_name FROM sqlite_master WHERE tbl_name = 'sqlite_sequence'"))) (log-message :info "SQLite: ~a" sql) (when (sqlite:execute-single (conn-handle slconn) sql) (setf (has-sequences slconn) t)))) slconn) (defmethod close-connection ((slconn sqlite-connection)) (sqlite:disconnect (conn-handle slconn)) (setf (conn-handle slconn) nil) slconn) (defmethod clone-connection ((slconn sqlite-connection)) (change-class (call-next-method slconn) 'sqlite-connection)) (defmethod query ((slconn sqlite-connection) sql &key) (log-message :sql "SQLite: sending query: ~a" sql) (sqlite:execute-to-list (conn-handle slconn) sql)) ;;; ;;; SQLite schema introspection facilities ;;; (defun filter-list-to-where-clause (filter-list &optional not (table-col "tbl_name")) "Given an INCLUDING or EXCLUDING clause, turn it into a SQLite WHERE clause." (mapcar (lambda (table-name) (format nil "(~a ~:[~;NOT ~]LIKE '~a')" table-col not table-name)) filter-list)) (defun list-tables (&key (db *sqlite-db*) including excluding) "Return the list of tables found in SQLITE-DB." (let ((sql (format nil "SELECT tbl_name FROM sqlite_master WHERE type='table' AND tbl_name <> 'sqlite_sequence' ~:[~*~;AND (~{~a~^~&~10t or ~})~] ~:[~*~;AND (~{~a~^~&~10t and ~})~]" including ; do we print the clause? (filter-list-to-where-clause including nil) excluding ; do we print the clause? (filter-list-to-where-clause excluding t)))) (log-message :info "~a" sql) (loop for (name) in (sqlite:execute-to-list db sql) collect name))) (defun list-columns (table &key db-has-sequences (db *sqlite-db*) ) "Return the list of columns found in TABLE-NAME." (let* ((table-name (table-source-name table)) (sql (format nil "PRAGMA table_info(~a)" table-name))) (loop :for (ctid name type nullable default pk-id) :in (sqlite:execute-to-list db sql) :do (let ((field (make-coldef table-name ctid name (ctype-to-dtype (normalize type)) (normalize type) (= 1 nullable) (unquote default) pk-id))) (when (and db-has-sequences (not (zerop pk-id)) (string-equal (coldef-ctype field) "integer")) ;; then it might be an auto_increment, which we know by ;; looking at the sqlite_sequence catalog (let* ((sql (format nil "select seq from sqlite_sequence where name = '~a';" table-name)) (seq (sqlite:execute-single db sql))) (when (and seq (not (zerop seq))) ;; magic marker for `apply-casting-rules' (log-message :notice "Auto Increment found at ~a.~a" table-name name) (setf (coldef-extra field) "auto_increment")))) (add-field table field))))) (defun list-all-columns (schema &key db-has-sequences (db *sqlite-db*) including excluding) "Get the list of SQLite column definitions per table." (loop :for table-name :in (list-tables :db db :including including :excluding excluding) :do (let ((table (add-table schema table-name))) (list-columns table :db db :db-has-sequences db-has-sequences)))) ;;; ;;; Index support ;;; (defun add-unlisted-primary-key-index (table) "Add to TABLE any unlisted primary key index..." (when (notany #'index-primary (table-index-list table)) (let ((pk-fields (loop :for field :in (table-field-list table) :when (< 0 (coldef-pk-id field)) :collect field))) (when (and pk-fields ;; we don't know if that holds true for non-integer fields, ;; as it appears to be tied to the rowid magic column (every (lambda (field) (string-equal "integer" (coldef-dtype field))) pk-fields)) (let ((pk-name (build-identifier "_" (format-table-name table) "pkey")) (clist (mapcar #'coldef-name pk-fields))) ;; now forge the index and get it a name (add-index table (make-index :name pk-name :table table :primary t :unique t :columns clist))))))) (defun is-index-pk (table index-col-name-list) "The only way to know with SQLite pragma introspection if a particular UNIQUE index is actually PRIMARY KEY is by comparing the list of column names in the index with the ones marked with non-zero pk in the table definition." (equal (loop :for field :in (table-field-list table) :when (< 0 (coldef-pk-id field)) :collect (coldef-name field)) index-col-name-list)) (defun list-index-cols (index-name &optional (db *sqlite-db*)) "Return the list of columns in INDEX-NAME." (let ((sql (format nil "PRAGMA index_info(~a)" index-name))) (loop :for (index-pos table-pos col-name) :in (sqlite:execute-to-list db sql) :collect col-name))) (defun list-indexes (table &optional (db *sqlite-db*)) "Return the list of indexes attached to TABLE." (let* ((table-name (table-source-name table)) (sql (format nil "PRAGMA index_list(~a)" table-name))) (loop :for (seq index-name unique origin partial) :in (sqlite:execute-to-list db sql) :do (let* ((cols (list-index-cols index-name db)) (index (make-index :name index-name :table table :primary (is-index-pk table cols) :unique (= unique 1) :columns cols))) (add-index table index)))) ;; ok that's not the whole story. Integer columns marked pk=1 are actually ;; primary keys but the supporting index isn't listed in index_list() ;; ;; we add unlisted pkeys only after having read the catalogs, otherwise we ;; might create double primary key indexes here (add-unlisted-primary-key-index table)) (defun list-all-indexes (schema &key (db *sqlite-db*)) "Get the list of SQLite index definitions per table." (loop :for table :in (schema-table-list schema) :do (list-indexes table db))) ;;; ;;; Foreign keys support ;;; (defun list-fkeys (table &optional (db *sqlite-db*)) "Return the list of indexes attached to TABLE." (let* ((table-name (table-source-name table)) (sql (format nil "PRAGMA foreign_key_list(~a)" table-name))) (loop :with fkey-table := (make-hash-table) :for (id seq ftable-name from to on-update on-delete match) :in (sqlite:execute-to-list db sql) :do (let* ((ftable (find-table (table-schema table) ftable-name)) (fkey (or (gethash id fkey-table) (let ((pg-fkey (make-fkey :table table :columns nil :foreign-table ftable :foreign-columns nil :update-rule on-update :delete-rule on-delete))) (setf (gethash id fkey-table) pg-fkey) (add-fkey table pg-fkey) pg-fkey)))) (push-to-end from (fkey-columns fkey)) (push-to-end to (fkey-foreign-columns fkey)))))) (defun list-all-fkeys (schema &key (db *sqlite-db*)) "Get the list of SQLite foreign keys definitions per table." (loop :for table :in (schema-table-list schema) :do (list-fkeys table db))) pgloader/src/sources/sqlite/sqlite-cast-rules.lisp0000644000175000017500000001107413116323242022566 0ustar vagrantvagrant;;; ;;; Tools to handle the SQLite Database ;;; (in-package :pgloader.sqlite) (defvar *sqlite-db* nil "The SQLite database connection handler.") (defparameter *sqlite-default-cast-rules* `((:source (:type "character") :target (:type "text" :drop-typemod t)) (:source (:type "varchar") :target (:type "text" :drop-typemod t)) (:source (:type "nvarchar") :target (:type "text" :drop-typemod t)) (:source (:type "char") :target (:type "text" :drop-typemod t)) (:source (:type "nchar") :target (:type "text" :drop-typemod t)) (:source (:type "clob") :target (:type "text" :drop-typemod t)) (:source (:type "integer" :auto-increment t) :target (:type "bigserial")) (:source (:type "tinyint") :target (:type "smallint") :using pgloader.transforms::integer-to-string) (:source (:type "integer") :target (:type "bigint") :using pgloader.transforms::integer-to-string) (:source (:type "float") :target (:type "float") :using pgloader.transforms::float-to-string) (:source (:type "real") :target (:type "real") :using pgloader.transforms::float-to-string) (:source (:type "double") :target (:type "double precision") :using pgloader.transforms::float-to-string) (:source (:type "numeric") :target (:type "numeric") :using pgloader.transforms::float-to-string) (:source (:type "blob") :target (:type "bytea") :using pgloader.transforms::byte-vector-to-bytea) (:source (:type "datetime") :target (:type "timestamptz") :using pgloader.transforms::sqlite-timestamp-to-timestamp) (:source (:type "timestamp") :target (:type "timestamp") :using pgloader.transforms::sqlite-timestamp-to-timestamp) (:source (:type "timestamptz") :target (:type "timestamptz") :using pgloader.transforms::sqlite-timestamp-to-timestamp)) "Data Type Casting to migrate from SQLite to PostgreSQL") (defstruct (coldef (:constructor make-coldef (table-name seq name dtype ctype nullable default pk-id))) table-name seq name dtype ctype nullable default pk-id extra) (defun normalize (sqlite-type-name) "SQLite only has a notion of what MySQL calls column_type, or ctype in the CAST machinery. Transform it to the data_type, or dtype." (if (string= sqlite-type-name "") ;; yes SQLite allows for empty type names "text" (let* ((sqlite-type-name (string-downcase sqlite-type-name)) (tokens (remove-if (lambda (token) (or (member token '("unsigned" "short" "varying" "native" "nocase" "auto_increment") :test #'string-equal) ;; remove typemod too, as in "integer (8)" (char= #\( (aref token 0)))) (sq:split-sequence #\Space sqlite-type-name)))) (assert (= 1 (length tokens))) (first tokens)))) (defun ctype-to-dtype (sqlite-type-name) "In SQLite we only get the ctype, e.g. int(7), but here we want the base data type behind it, e.g. int." (let* ((ctype (normalize sqlite-type-name)) (paren-pos (position #\( ctype))) (if paren-pos (subseq ctype 0 paren-pos) ctype))) (defmethod cast ((col coldef)) "Return the PostgreSQL type definition from given SQLite column definition." (with-slots (table-name name dtype ctype default nullable extra) col (let ((pgcol (apply-casting-rules table-name name dtype ctype default nullable extra))) ;; the SQLite driver smartly maps data to the proper CL type, but the ;; pgloader API only wants to see text representations to send down ;; the COPY protocol. (unless (column-transform pgcol) (setf (column-transform pgcol) (lambda (val) (if val (format nil "~a" val) :null)))) (setf (column-default pgcol) (cond ((and (stringp default) (string= "NULL" default)) :null) ((and (stringp default) ;; address CURRENT_TIMESTAMP(6) and other spellings (or (uiop:string-prefix-p "CURRENT_TIMESTAMP" default) (string= "CURRENT TIMESTAMP" default))) :current-timestamp) (t (column-default pgcol)))) pgcol))) pgloader/src/sources/sqlite/sqlite.lisp0000644000175000017500000001330313114345007020504 0ustar vagrantvagrant;;; ;;; Tools to handle the SQLite Database ;;; (in-package :pgloader.sqlite) (defclass copy-sqlite (db-copy) ((db :accessor db :initarg :db)) (:documentation "pgloader SQLite Data Source")) (defmethod initialize-instance :after ((source copy-sqlite) &key) "Add a default value for transforms in case it's not been provided." (let* ((transforms (when (slot-boundp source 'transforms) (slot-value source 'transforms)))) (when (and (slot-boundp source 'fields) (slot-value source 'fields)) ;; cast typically happens in copy-database in the schema structure, ;; and the result is then copied into the copy-mysql instance. (unless (and (slot-boundp source 'columns) (slot-value source 'columns)) (setf (slot-value source 'columns) (mapcar #'cast (slot-value source 'fields)))) (unless transforms (setf (slot-value source 'transforms) (mapcar #'column-transform (slot-value source 'columns))))))) ;;; Map a function to each row extracted from SQLite ;;; (defun sqlite-encoding (db) "Return a BABEL suitable encoding for the SQLite db handle." (let ((encoding-string (sqlite:execute-single db "pragma encoding;"))) (cond ((string-equal encoding-string "UTF-8") :utf-8) ((string-equal encoding-string "UTF-16") :utf-16) ((string-equal encoding-string "UTF-16le") :utf-16le) ((string-equal encoding-string "UTF-16be") :utf-16be)))) (declaim (inline parse-value)) (defun parse-value (value sqlite-type pgsql-type &key (encoding :utf-8)) "Parse value given by SQLite to match what PostgreSQL is expecting. In some cases SQLite will give text output for a blob column (it's base64) and at times will output binary data for text (utf-8 byte vector)." (cond ((and (string-equal "text" pgsql-type) (eq :blob sqlite-type) (not (stringp value))) ;; we expected a properly encoded string and received bytes instead (babel:octets-to-string value :encoding encoding)) ((and (string-equal "bytea" pgsql-type) (stringp value)) ;; we expected bytes and got a string instead, must be base64 encoded (base64:base64-string-to-usb8-array value)) ;; default case, just use what's been given to us (t value))) (defmethod map-rows ((sqlite copy-sqlite) &key process-row-fn) "Extract SQLite data and call PROCESS-ROW-FN function with a single argument (a list of column values) for each row" (let* ((table-name (table-source-name (source sqlite))) (cols (mapcar #'coldef-name (fields sqlite))) (sql (format nil "SELECT ~{`~a`~^, ~} FROM `~a`;" cols table-name)) (pgtypes (map 'vector #'column-type-name (columns sqlite)))) (log-message :sql "SQLite: ~a" sql) (with-connection (*sqlite-db* (source-db sqlite)) (let* ((db (conn-handle *sqlite-db*)) (encoding (sqlite-encoding db))) (handler-case (loop with statement = (sqlite:prepare-statement db sql) with len = (loop :for name :in (sqlite:statement-column-names statement) :count name) while (sqlite:step-statement statement) for row = (let ((v (make-array len))) (loop :for x :below len :for raw := (sqlite:statement-column-value statement x) :for ptype := (aref pgtypes x) :for stype := (sqlite-ffi:sqlite3-column-type (sqlite::handle statement) x) :for val := (parse-value raw stype ptype :encoding encoding) :do (setf (aref v x) val)) v) counting t into rows do (funcall process-row-fn row) finally (sqlite:finalize-statement statement) (return rows)) (condition (e) (log-message :error "~a" e) (update-stats :data (target sqlite) :errs 1))))))) (defmethod copy-column-list ((sqlite copy-sqlite)) "Send the data in the SQLite column ordering." (mapcar #'apply-identifier-case (mapcar #'coldef-name (fields sqlite)))) (defmethod fetch-metadata (sqlite catalog &key materialize-views only-tables (create-indexes t) (foreign-keys t) including excluding) "SQLite introspection to prepare the migration." (declare (ignore materialize-views only-tables)) (let ((schema (add-schema catalog nil))) (with-stats-collection ("fetch meta data" :use-result-as-rows t :use-result-as-read t :section :pre) (with-connection (conn (source-db sqlite) :check-has-sequences t) (let ((*sqlite-db* (conn-handle conn))) (list-all-columns schema :db *sqlite-db* :including including :excluding excluding) (when create-indexes (list-all-indexes schema :db *sqlite-db*)) (when foreign-keys (list-all-fkeys schema :db *sqlite-db*))) ;; return how many objects we're going to deal with in total ;; for stats collection (+ (count-tables catalog) (count-indexes catalog)))) catalog)) pgloader/src/pgsql/0000755000175000017500000000000013127365432014464 5ustar vagrantvagrantpgloader/src/pgsql/retry-batch.lisp0000644000175000017500000001312213126552503017574 0ustar vagrantvagrant;;; ;;; The PostgreSQL COPY TO implementation, with batches and retries. ;;; (in-package #:pgloader.pgsql) ;;; ;;; Compute how many rows we're going to try loading next, depending on ;;; where we are in the batch currently and where is the next-error to be ;;; seen, if that's between current position and the end of the batch. ;;; (defun next-batch-rows (batch-rows current-batch-pos next-error) "How many rows should we process in next iteration?" (cond ((< current-batch-pos next-error) ;; We Can safely push a batch with all the rows until the first error, ;; and here current-batch-pos should be 0 anyways. ;; ;; How many rows do we have from position 0 to position next-error, ;; excluding next-error? Well, next-error. (- next-error current-batch-pos)) ((= current-batch-pos next-error) ;; Now we got to the line that we know is an error, we need to process ;; only that one in the next batch 1) (t ;; We're past the known erroneous row. The batch might have new errors, ;; or maybe that was the only one. We'll figure it out soon enough, ;; let's try the whole remaining rows. (- batch-rows current-batch-pos)))) ;;; ;;; In case of COPY error, PostgreSQL gives us the line where the error was ;;; found as a CONTEXT message. Let's parse that information to optimize our ;;; batching splitting in case of errors. ;;; ;;; CONTEXT: COPY errors, line 1, column b: "2006-13-11" ;;; CONTEXT: COPY byte, line 1: "hello\0world" ;;; ;;; Those error messages are a translation target, tho, so we can only ;;; assume to recognize the command tag (COPY), the comma, and a numer after ;;; a world that might be Zeile (de), línea (es), ligne (fr), riga (it), ;;; linia (pl), linha (pt), строка (ru), 行 (zh), or something else ;;; entirely. ;;; (defun parse-copy-error-context (context) "Given a COPY command CONTEXT error message, return the batch position where the error comes from." (cl-ppcre:register-groups-bind ((#'parse-integer n)) ("COPY [^,]+, [^ ]+ (\\d+)" context :sharedp t) (1- n))) ;;; ;;; The main retry batch function. ;;; (defun retry-batch (table columns batch batch-rows condition &optional (current-batch-pos 0) &aux (nb-errors 0)) "Batch is a list of rows containing at least one bad row, the first such row is known to be located at FIRST-ERROR index in the BATCH array." (log-message :info "Entering error recovery.") (loop :with table-name := (format-table-name table) :with next-error := (parse-copy-error-context (database-error-context condition)) :while (< current-batch-pos batch-rows) :do (progn ; indenting helper (log-message :debug "pos: ~s ; err: ~a" current-batch-pos next-error) (when (= current-batch-pos next-error) (log-message :info "error recovery at ~d/~d, processing bad row" current-batch-pos batch-rows) (process-bad-row table condition (aref batch current-batch-pos)) (incf current-batch-pos) (incf nb-errors)) (let* ((current-batch-rows (next-batch-rows batch-rows current-batch-pos next-error))) (when (< 0 current-batch-rows) (if (< current-batch-pos next-error) (log-message :info "error recovery at ~d/~d, next error at ~d, ~ loading ~d row~:p" current-batch-pos batch-rows next-error current-batch-rows) (log-message :info "error recovery at ~d/~d, trying ~d row~:p" current-batch-pos batch-rows current-batch-rows)) (handler-case (incf current-batch-pos (copy-partial-batch table-name columns batch current-batch-rows current-batch-pos)) ;; the batch didn't make it, prepare error handling for next turn (postgresql-retryable (next-error-in-batch) (pomo:execute "ROLLBACK") (log-message :error "PostgreSQL [~s] ~a" table-name next-error-in-batch) (let ((next-error-relative (parse-copy-error-context (database-error-context next-error-in-batch)))) (setf condition next-error-in-batch next-error (+ current-batch-pos next-error-relative))))))))) (log-message :info "Recovery found ~d errors in ~d row~:p" nb-errors batch-rows) ;; Return how many rows where erroneous, for statistics purposes nb-errors) (defun copy-partial-batch (table-name columns batch current-batch-rows current-batch-pos) "Copy some rows of the batch, not all of them." (pomo:execute "BEGIN;") (let ((stream (cl-postgres:open-db-writer pomo:*database* table-name columns))) (unwind-protect (loop :repeat current-batch-rows :for pos :from current-batch-pos :do (db-write-row stream (aref batch pos))) ;; close-db-writer is the one signaling cl-postgres-errors (progn (cl-postgres:close-db-writer stream) (pomo:execute "COMMIT;"))) ;; return how many rows we loaded, which is current-batch-rows current-batch-rows)) pgloader/src/pgsql/sql/0000755000175000017500000000000013127307525015262 5ustar vagrantvagrantpgloader/src/pgsql/sql/list-table-oids.sql0000644000175000017500000000013213127307525020773 0ustar vagrantvagrant-- params: table-names select n, n::regclass::oid from (values ~{('~a')~^,~}) as t(n); pgloader/src/pgsql/sql/list-missing-fk-deps.sql0000644000175000017500000000164213127307525021757 0ustar vagrantvagrant-- params pkey-oid-list -- fkey-oild-list with pkeys(oid) as ( values~{(~d)~^,~} ), knownfkeys(oid) as ( values~{(~d)~^,~} ), pkdeps as ( select pkeys.oid, pg_depend.objid from pg_depend join pkeys on pg_depend.refobjid = pkeys.oid where classid = 'pg_catalog.pg_constraint'::regclass and refclassid = 'pg_catalog.pg_class'::regclass ) select n.nspname, c.relname, nf.nspname, cf.relname as frelname, r.oid as conoid, conname, pg_catalog.pg_get_constraintdef(r.oid, true) as condef, pkdeps.oid as index_oid from pg_catalog.pg_constraint r JOIN pkdeps on r.oid = pkdeps.objid JOIN pg_class c on r.conrelid = c.oid JOIN pg_namespace n on c.relnamespace = n.oid JOIN pg_class cf on r.confrelid = cf.oid JOIN pg_namespace nf on cf.relnamespace = nf.oid where NOT EXISTS (select 1 from knownfkeys where oid = r.oid) pgloader/src/pgsql/sql/list-all-columns.sql0000644000175000017500000000171213127307525021203 0ustar vagrantvagrant-- params: table-type-name -- including -- filter-list-to-where-clause for including -- excluding -- filter-list-to-where-clause for excluding select nspname, relname, c.oid, attname, t.oid::regtype as type, case when atttypmod > 0 then atttypmod - 4 else null end as typmod, attnotnull, case when atthasdef then def.adsrc end as default from pg_class c join pg_namespace n on n.oid = c.relnamespace left join pg_attribute a on c.oid = a.attrelid join pg_type t on t.oid = a.atttypid and attnum > 0 left join pg_attrdef def on a.attrelid = def.adrelid and a.attnum = def.adnum where nspname !~~ '^pg_' and n.nspname <> 'information_schema' and relkind = '~a' ~:[~*~;and (~{~a~^~&~10t or ~})~] ~:[~*~;and (~{~a~^~&~10t and ~})~] order by nspname, relname, attnum; pgloader/src/pgsql/sql/query-table-schema.sql0000644000175000017500000000021613127307525021472 0ustar vagrantvagrant-- params: table-name select nspname from pg_namespace n join pg_class c on n.oid = c.relnamespace where c.oid = '~a'::regclass; pgloader/src/pgsql/sql/list-all-indexes.sql0000644000175000017500000000200613127307525021157 0ustar vagrantvagrant-- params: including -- filter-list-to-where-clause for including -- excluding -- filter-list-to-where-clause for excluding select n.nspname, i.relname, i.oid, rn.nspname, r.relname, indisprimary, indisunique, pg_get_indexdef(indexrelid), c.conname, pg_get_constraintdef(c.oid) from pg_index x join pg_class i ON i.oid = x.indexrelid join pg_class r ON r.oid = x.indrelid join pg_namespace n ON n.oid = i.relnamespace join pg_namespace rn ON rn.oid = r.relnamespace left join pg_constraint c ON c.conindid = i.oid and c.conrelid = r.oid -- filter out self-fkeys and c.confrelid <> r.oid where n.nspname !~~ '^pg_' and n.nspname <> 'information_schema' ~:[~*~;and (~{~a~^~&~10t or ~})~] ~:[~*~;and (~{~a~^~&~10t and ~})~] order by n.nspname, r.relname pgloader/src/pgsql/sql/list-all-fkeys.sql0000644000175000017500000000306113127307525020643 0ustar vagrantvagrant-- params: including (table) -- filter-list-to-where-clause for including -- excluding (table) -- filter-list-to-where-clause for excluding -- including (ftable) -- filter-list-to-where-clause for including -- excluding (ftable) -- filter-list-to-where-clause for excluding select n.nspname, c.relname, nf.nspname, cf.relname as frelname, r.oid, conname, pg_catalog.pg_get_constraintdef(r.oid, true) as condef, (select string_agg(attname, ',') from pg_attribute where attrelid = r.conrelid and array[attnum::integer] <@ conkey::integer[] ) as conkey, (select string_agg(attname, ',') from pg_attribute where attrelid = r.confrelid and array[attnum::integer] <@ confkey::integer[] ) as confkey, confupdtype, confdeltype, confmatchtype, condeferrable, condeferred from pg_catalog.pg_constraint r JOIN pg_class c on r.conrelid = c.oid JOIN pg_namespace n on c.relnamespace = n.oid JOIN pg_class cf on r.confrelid = cf.oid JOIN pg_namespace nf on cf.relnamespace = nf.oid where r.contype = 'f' AND c.relkind = 'r' and cf.relkind = 'r' AND n.nspname !~~ '^pg_' and n.nspname <> 'information_schema' AND nf.nspname !~~ '^pg_' and nf.nspname <> 'information_schema' ~:[~*~;and (~{~a~^~&~10t or ~})~] ~:[~*~;and (~{~a~^~&~10t and ~})~] ~:[~*~;and (~{~a~^~&~10t or ~})~] ~:[~*~;and (~{~a~^~&~10t and ~})~] pgloader/src/pgsql/sql/list-typenames-without-btree-support.sql0000644000175000017500000000102713127307525025273 0ustar vagrantvagrantselect typname, array_agg(amname order by amname <> 'gist', amname <> 'gin') from pg_type join pg_opclass on pg_opclass.opcintype = pg_type.oid join pg_am on pg_am.oid = pg_opclass.opcmethod where substring(typname from 1 for 1) <> '_' and not exists ( select amname from pg_am am join pg_opclass c on am.oid = c.opcmethod join pg_type t on c.opcintype = t.oid where amname = 'btree' and t.oid = pg_type.oid ) group by typname; pgloader/src/pgsql/pgsql-trigger.lisp0000644000175000017500000000556613047375022020155 0ustar vagrantvagrant;;; ;;; Create the PostgreSQL schema from our internal Catalog representation. ;;; Here, triggers and their stored procedures. ;;; (in-package #:pgloader.pgsql) (defvar *pgsql-triggers-procedures* `((:on-update-current-timestamp . ,(lambda (trigger column table) (let ((body (format nil "BEGIN~% NEW.~a = now();~% RETURN NEW;~%END;" (column-name column)))) (make-procedure :name (trigger-procedure-name trigger) :returns "trigger" :language "plpgsql" :body body))))) "List of lambdas to generate procedure definitions from pgloader internal trigger names as positioned in the internal catalogs at CAST time.") (defun rename-trigger (trigger) "Turn a common lisp symbol into a proper PostgreSQL trigger name." (setf (trigger-name trigger) (string-downcase (cl-ppcre:regex-replace-all "-" (symbol-name (trigger-name trigger)) "_")))) (defun process-triggers (table) "Return the list of PostgreSQL statements to create a catalog trigger." (loop :for column :in (table-column-list table) :when (column-extra column) :do (etypecase (column-extra column) (trigger ;; finish the trigger CAST and attach it to the table now (let* ((trigger (column-extra column)) (proc (or (trigger-procedure trigger) ;; ;; We have a trigger with no attached ;; procedure, so we search for the trigger ;; procedure-name in ;; *pgsql-triggers-procedures* to find a ;; lambda form to call to produce our PLpgSQL ;; procedure ;; (let ((generate-proc (cdr (assoc (trigger-name trigger) *pgsql-triggers-procedures*)))) (assert (functionp generate-proc)) (funcall generate-proc trigger column table))))) ;; ;; Properly attach the procedure to the trigger and the ;; trigger to the table. ;; (unless (trigger-procedure trigger) (setf (trigger-procedure trigger) proc)) (rename-trigger trigger) (setf (column-extra column) nil) (setf (trigger-table trigger) table) (push-to-end trigger (table-trigger-list table))))))) pgloader/src/pgsql/pgsql-schema.lisp0000644000175000017500000003562213127307526017751 0ustar vagrantvagrant;;; ;;; Tools to query the PostgreSQL Schema, either source or target ;;; (in-package :pgloader.pgsql) (defun fetch-pgsql-catalog (dbname &key table source-catalog including excluding) "Fetch PostgreSQL catalogs for the target database. A PostgreSQL connection must be opened." (let* ((*identifier-case* :quote) (catalog (make-catalog :name dbname)) (including (cond ((and table (not including)) (make-including-expr-from-table table)) ((and source-catalog (not including)) (make-including-expr-from-catalog source-catalog)) (t including)))) (list-all-columns catalog :table-type :table :including including :excluding excluding) (list-all-indexes catalog :including including :excluding excluding) (list-all-fkeys catalog :including including :excluding excluding) ;; fetch fkey we depend on with UNIQUE indexes but that have been ;; excluded from the target list, we still need to take care of them to ;; be able to DROP then CREATE those indexes again (list-missing-fk-deps catalog) (log-message :debug "fetch-pgsql-catalog: ~d tables, ~d indexes, ~d+~d fkeys" (count-tables catalog) (count-indexes catalog) (count-fkeys catalog) (loop :for table :in (table-list catalog) :sum (loop :for index :in (table-index-list table) :sum (length (index-fk-deps index))))) (when (and table (/= 1 (count-tables catalog))) (error "pgloader found ~d target tables for name ~a:~{~% ~a~}" (count-tables catalog) (format-table-name table) (mapcar #'format-table-name (table-list catalog)))) catalog)) (defun make-including-expr-from-catalog (catalog) "Return an expression suitable to be used as an :including parameter." (let (including current-schema) ;; The schema where to install the table or view in the target database ;; might be different from the schema where we find it in the source ;; table, thanks to the ALTER TABLE ... SET SCHEMA ... feature of ;; pgloader. ;; ;; The schema we want to lookup here is the target schema, so it's ;; (table-schema table) and not the schema where we found the table in ;; the catalog nested structure. ;; ;; Also, MySQL schema map to PostgreSQL databases, so we might have NIL ;; as a schema name here. In that case, we find the current PostgreSQL ;; schema and use that. (loop :for table :in (append (table-list catalog) (view-list catalog)) :do (let* ((schema-name (or (schema-name (table-schema table)) current-schema (setf current-schema (pomo:query "select current_schema()" :single)))) (table-expr (format-table-name-as-including-exp table)) (schema-entry (or (assoc schema-name including :test #'string=) (progn (push (cons schema-name nil) including) (assoc schema-name including :test #'string=))))) (push-to-end table-expr (cdr schema-entry)))) ;; return the including alist including)) (defun make-including-expr-from-table (table) "Return an expression suitable to be used as an :including parameter." (let ((schema (or (table-schema table) (query-table-schema table)))) (list (cons (ensure-unquoted (schema-name schema)) (list (format-table-name-as-including-exp table)))))) (defun format-table-name-as-including-exp (table) "Return a table name suitable for a catalog lookup using ~ operator." (let ((table-name (table-name table))) (format nil "^~a$" (ensure-unquoted table-name)))) (defun query-table-schema (table) "Get PostgreSQL schema name where to locate TABLE-NAME by following the current search_path rules. A PostgreSQL connection must be opened." (make-schema :name (pomo:query (format nil (sql "/pgsql/query-table-schema.sql") (table-name table)) :single))) (defvar *table-type* '((:table . "r") (:view . "v") (:index . "i") (:sequence . "S")) "Associate internal table type symbol with what's found in PostgreSQL pg_class.relkind column.") (defun filter-list-to-where-clause (filter-list &optional not (schema-col "table_schema") (table-col "table_name")) "Given an INCLUDING or EXCLUDING clause, turn it into a PostgreSQL WHERE clause." (loop :for (schema . table-name-list) :in filter-list :append (mapcar (lambda (table-name) (format nil "(~a = '~a' and ~a ~:[~;NOT ~]~~ '~a')" schema-col schema table-col not table-name)) table-name-list))) (defun list-all-columns (catalog &key (table-type :table) including excluding &aux (table-type-name (cdr (assoc table-type *table-type*)))) "Get the list of PostgreSQL column names per table." (loop :for (schema-name table-name table-oid name type typmod notnull default) :in (query nil (format nil (sql "/pgsql/list-all-columns.sql") table-type-name including ; do we print the clause? (filter-list-to-where-clause including nil "n.nspname" "c.relname") excluding ; do we print the clause? (filter-list-to-where-clause excluding nil "n.nspname" "c.relname"))) :do (let* ((schema (maybe-add-schema catalog schema-name)) (table (maybe-add-table schema table-name :oid table-oid)) (field (make-column :name name :type-name type :type-mod typmod :nullable (not notnull) :default default))) (add-field table field)) :finally (return catalog))) (defun list-all-indexes (catalog &key including excluding) "Get the list of PostgreSQL index definitions per table." (loop :for (schema-name name oid table-schema table-name primary unique sql conname condef) :in (query nil (format nil (sql "/pgsql/list-all-indexes.sql") including ; do we print the clause? (filter-list-to-where-clause including nil "rn.nspname" "r.relname") excluding ; do we print the clause? (filter-list-to-where-clause excluding nil "rn.nspname" "r.relname"))) :do (let* ((schema (find-schema catalog schema-name)) (tschema (find-schema catalog table-schema)) (table (find-table tschema table-name)) (pg-index (make-index :name name :oid oid :schema schema :table table :primary primary :unique unique :columns nil :sql sql :conname (unless (eq :null conname) conname) :condef (unless (eq :null condef) condef)))) (maybe-add-index table name pg-index :key #'index-name)) :finally (return catalog))) (defun list-all-fkeys (catalog &key including excluding) "Get the list of PostgreSQL index definitions per table." (loop :for (schema-name table-name fschema-name ftable-name conoid conname condef cols fcols updrule delrule mrule deferrable deferred) :in (query nil (format nil (sql "/pgsql/list-all-fkeys.sql") including ; do we print the clause (table)? (filter-list-to-where-clause including nil "n.nspname" "c.relname") excluding ; do we print the clause (table)? (filter-list-to-where-clause excluding nil "n.nspname" "c.relname") including ; do we print the clause (ftable)? (filter-list-to-where-clause including nil "nf.nspname" "cf.relname") excluding ; do we print the clause (ftable)? (filter-list-to-where-clause excluding nil "nf.nspname" "cf.relname"))) :do (flet ((pg-fk-rule-to-action (rule) (case rule (#\a "NO ACTION") (#\r "RESTRICT") (#\c "CASCADE") (#\n "SET NULL") (#\d "SET DEFAULT"))) (pg-fk-match-rule-to-match-clause (rule) (case rule (#\f "FULL") (#\p "PARTIAL") (#\s "SIMPLE")))) (let* ((schema (find-schema catalog schema-name)) (table (find-table schema table-name)) (fschema (find-schema catalog fschema-name)) (ftable (find-table fschema ftable-name)) (fk (make-fkey :name conname :oid conoid :condef condef :table table :columns (split-sequence:split-sequence #\, cols) :foreign-table ftable :foreign-columns (split-sequence:split-sequence #\, fcols) :update-rule (pg-fk-rule-to-action updrule) :delete-rule (pg-fk-rule-to-action delrule) :match-rule (pg-fk-match-rule-to-match-clause mrule) :deferrable deferrable :initially-deferred deferred))) (if (and table ftable) (add-fkey table fk) (log-message :notice "Foreign Key ~a is ignored, one of its table is missing from pgloader table selection" conname)))) :finally (return catalog))) (defun list-missing-fk-deps (catalog) "Add in the CATALOG the foreign keys we don't have to deal with directly but that the primary keys we are going to DROP then CREATE again depend on: we need to take care of those first." (destructuring-bind (pkey-oid-hash-table pkey-oid-list fkey-oid-list) (loop :with pk-hash := (make-hash-table) :for table :in (table-list catalog) :append (mapcar #'index-oid (table-index-list table)) :into pk :append (mapcar #'fkey-oid (table-fkey-list table)) :into fk :do (loop :for index :in (table-index-list table) :do (setf (gethash (index-oid index) pk-hash) index)) :finally (return (list pk-hash pk fk))) (when pkey-oid-list (loop :for (schema-name table-name fschema-name ftable-name conoid conname condef index-oid) :in (query nil (format nil (sql "/pgsql/list-missing-fk-deps.sql") pkey-oid-list (or fkey-oid-list (list -1)))) ;; ;; We don't need to reference the main catalog entries for the tables ;; here, as the only goal is to be sure to DROP then CREATE again the ;; existing constraint that depend on the UNIQUE indexes we have to ;; DROP then CREATE again. ;; :do (let* ((schema (make-schema :name schema-name)) (table (make-table :name table-name :schema schema)) (fschema (make-schema :name fschema-name)) (ftable (make-table :name ftable-name :schema fschema)) (index (gethash index-oid pkey-oid-hash-table))) (push-to-end (make-fkey :name conname :oid conoid :condef condef :table table :foreign-table ftable) (index-fk-deps index))))))) ;;; ;;; Extra utilities to introspect a PostgreSQL schema. ;;; (defun list-schemas () "Return the list of PostgreSQL schemas in the already established PostgreSQL connection." (pomo:query "SELECT nspname FROM pg_catalog.pg_namespace;" :column)) (defun list-table-oids (table-names) "Return an hash table mapping TABLE-NAME to its OID for all table in the TABLE-NAMES list. A PostgreSQL connection must be established already." (let ((oidmap (make-hash-table :size (length table-names) :test #'equal)) (sql (format nil (sql "/pgsql/list-table-oids.sql") table-names))) (when table-names (loop :for (name oid) :in (query nil sql) :do (setf (gethash name oidmap) oid))) oidmap)) pgloader/src/pgsql/connection.lisp0000644000175000017500000004056413127307525017524 0ustar vagrantvagrant;;; ;;; Tools to handle PostgreSQL queries ;;; (in-package :pgloader.pgsql) ;;; ;;; PostgreSQL Tools connecting to a database ;;; (defclass pgsql-connection (db-connection) ((use-ssl :initarg :use-ssl :accessor pgconn-use-ssl) (table-name :initarg :table-name :accessor pgconn-table-name)) (:documentation "PostgreSQL connection for pgloader")) (defmethod initialize-instance :after ((pgconn pgsql-connection) &key) "Assign the type slot to pgsql." (setf (slot-value pgconn 'type) "pgsql")) (defmethod clone-connection ((c pgsql-connection)) (let ((clone (change-class (call-next-method c) 'pgsql-connection))) (setf (pgconn-use-ssl clone) (pgconn-use-ssl c) (pgconn-table-name clone) (pgconn-table-name c)) clone)) (defmethod ssl-enable-p ((pgconn pgsql-connection)) "Return non-nil when the connection uses SSL" (member (pgconn-use-ssl pgconn) '(:try :yes))) (defun new-pgsql-connection (pgconn) "Prepare a new connection object with all the same properties as pgconn, so as to avoid stepping on it's handle" (make-instance 'pgsql-connection :user (db-user pgconn) :pass (db-pass pgconn) :host (db-host pgconn) :port (db-port pgconn) :name (db-name pgconn) :use-ssl (pgconn-use-ssl pgconn) :table-name (pgconn-table-name pgconn))) ;;; ;;; Implement SSL Client Side certificates ;;; http://www.postgresql.org/docs/current/static/libpq-ssl.html#LIBPQ-SSL-FILE-USAGE ;;; (defvar *pgsql-client-certificate* "~/.postgresql/postgresql.crt" "File where to read the PostgreSQL Client Side SSL Certificate.") (defvar *pgsql-client-key* "~/.postgresql/postgresql.key" "File where to read the PostgreSQL Client Side SSL Private Key.") ;;; ;;; PostgreSQL errors types for pgloader. ;;; (deftype postgresql-retryable () "PostgreSQL errors that we know how to retry in a batch." `(or cl-postgres-error::data-exception cl-postgres-error::integrity-violation cl-postgres-error:internal-error cl-postgres-error::insufficient-resources cl-postgres-error::program-limit-exceeded)) (deftype postgresql-unavailable () "It might happen that PostgreSQL becomes unavailable in the middle of our processing: it being restarted is an example." `(or cl-postgres-error::server-shutdown cl-postgres-error::admin-shutdown cl-postgres-error::crash-shutdown cl-postgres-error::operator-intervention cl-postgres-error::cannot-connect-now cl-postgres-error::database-connection-error cl-postgres-error::database-connection-lost cl-postgres-error::database-socket-error)) ;;; ;;; We need to distinguish some special cases of PostgreSQL errors within ;;; Class 53 — Insufficient Resources: in case of "too many connections" we ;;; typically want to leave room for another worker to finish and free one ;;; connection, then try again. ;;; ;;; http://www.postgresql.org/docs/9.4/interactive/errcodes-appendix.html ;;; ;;; The "leave room to finish and try again" heuristic is currently quite ;;; simplistic, but at least it work in my test cases. ;;; (cl-postgres-error::deferror "53300" too-many-connections cl-postgres-error:insufficient-resources) (cl-postgres-error::deferror "53400" configuration-limit-exceeded cl-postgres-error:insufficient-resources) (defvar *retry-connect-times* 5 "How many times to we try to connect again.") (defvar *retry-connect-delay* 0.5 "How many seconds to wait before trying to connect again.") (defmethod open-connection ((pgconn pgsql-connection) &key username) "Open a PostgreSQL connection." (let* (#+unix (cl-postgres::*unix-socket-dir* (get-unix-socket-dir pgconn)) (crt-file (expand-user-homedir-pathname *pgsql-client-certificate*)) (key-file (expand-user-homedir-pathname *pgsql-client-key*)) (pomo::*ssl-certificate-file* (when (and (ssl-enable-p pgconn) (probe-file crt-file)) (uiop:native-namestring crt-file))) (pomo::*ssl-key-file* (when (and (ssl-enable-p pgconn) (probe-file key-file)) (uiop:native-namestring key-file)))) (flet ((connect (pgconn username) (handler-case ;; in some cases (client_min_messages set to debug5 ;; for example), PostgreSQL might send us some ;; WARNINGs already when opening a new connection (handler-bind ((cl-postgres:postgresql-warning #'(lambda (w) (log-message :warning "~a" w) (muffle-warning)))) (pomo:connect (db-name pgconn) (or username (db-user pgconn)) (db-pass pgconn) (let ((host (db-host pgconn))) (if (and (consp host) (eq :unix (car host))) :unix host)) :port (db-port pgconn) :use-ssl (or (pgconn-use-ssl pgconn) :no))) ((or too-many-connections configuration-limit-exceeded) (e) (log-message :error "Failed to connect to ~a: ~a; will try again in ~fs" pgconn e *retry-connect-delay*) (sleep *retry-connect-delay*))))) (loop :while (null (conn-handle pgconn)) :repeat *retry-connect-times* :do (setf (conn-handle pgconn) (connect pgconn username)))) (unless (conn-handle pgconn) (error "Failed ~d times to connect to ~a" *retry-connect-times* pgconn)) (log-message :debug "CONNECTED TO ~s" pgconn) (set-session-gucs *pg-settings* :database (conn-handle pgconn)) pgconn)) (defmethod close-connection ((pgconn pgsql-connection)) "Close a PostgreSQL connection." (assert (not (null (conn-handle pgconn)))) (pomo:disconnect (conn-handle pgconn)) (setf (conn-handle pgconn) nil) pgconn) (defmethod query ((pgconn (eql nil)) sql &key) "Case when a connection already exists around the call, as per `with-connection' and `with-transaction'." (log-message :sql "~a" sql) (pomo:query sql)) (defmethod query ((pgconn pgsql-connection) sql &key) (let ((pomo:*database* (conn-handle pgconn))) (log-message :sql "~a" sql) (pomo:query sql))) (defmacro handling-pgsql-notices (&body forms) "The BODY is run within a PostgreSQL transaction where *pg-settings* have been applied. PostgreSQL warnings and errors are logged at the appropriate log level." `(handler-bind (((and cl-postgres:database-error (not postgresql-unavailable)) #'(lambda (e) (log-message :error "~a" e))) (cl-postgres:postgresql-warning #'(lambda (w) (log-message :warning "~a" w) (muffle-warning)))) (progn ,@forms))) (defmacro with-pgsql-transaction ((&key pgconn database) &body forms) "Run FORMS within a PostgreSQL transaction to DBNAME, reusing DATABASE if given." (if database `(let ((pomo:*database* ,database)) (handling-pgsql-notices (pomo:with-transaction () (log-message :debug "BEGIN") ,@forms))) ;; no database given, create a new database connection `(with-pgsql-connection (,pgconn) (pomo:with-transaction () (log-message :debug "BEGIN") ,@forms)))) (defmacro with-pgsql-connection ((pgconn) &body forms) "Run FROMS within a PostgreSQL connection to DBNAME. To get the connection spec from the DBNAME, use `get-connection-spec'." (let ((conn (gensym "pgsql-conn"))) `(with-connection (,conn ,pgconn) (let ((pomo:*database* (conn-handle ,conn))) (handling-pgsql-notices ,@forms))))) (defun get-unix-socket-dir (pgconn) "When *pgconn* host is a (cons :unix path) value, return the right value for cl-postgres::*unix-socket-dir*." (let ((host (db-host pgconn))) (if (and (consp host) (eq :unix (car host))) ;; set to *pgconn* host value (directory-namestring (fad:pathname-as-directory (cdr host))) ;; keep as is. cl-postgres::*unix-socket-dir*))) (defun set-session-gucs (alist &key transaction database) "Set given GUCs to given values for the current session." (let ((pomo:*database* (or database pomo:*database*))) (loop :for (name . value) :in alist :for set := (cond ((string-equal "search_path" name) ;; for search_path, don't quote the value (format nil "SET~:[~; LOCAL~] ~a TO ~a" transaction name value)) (t ;; general case: quote the value (format nil "SET~:[~; LOCAL~] ~a TO '~a'" transaction name value))) :do (progn ; indent helper (log-message :debug set) (pomo:execute set))))) ;;; ;;; The parser is still hard-coded to support only PostgreSQL targets ;;; (defun sanitize-user-gucs (gucs) "Forbid certain actions such as setting a client_encoding different from utf8." (let ((gucs (append (list (cons "client_encoding" "utf8")) (loop :for (name . value) :in gucs :when (and (string-equal name "client_encoding") (not (member value '("utf-8" "utf8") :test #'string-equal))) :do (log-message :warning "pgloader always talk to PostgreSQL in utf-8, client_encoding has been forced to 'utf8'.") :else :collect (cons name value))))) ;; ;; Now see about the application_name, provide "pgloader" if it's not ;; been overloaded already. ;; (cond ((not (assoc "application_name" gucs :test #'string-equal)) (append gucs (list (cons "application_name" "pgloader")))) (t gucs)))) ;;; ;;; DDL support with stats (timing, object count) ;;; (defun pgsql-connect-and-execute-with-timing (pgconn section label sql) "Run pgsql-execute-with-timing within a newly establised connection." (handler-case (with-pgsql-connection (pgconn) (pomo:with-transaction () (pgsql-execute-with-timing section label sql))) (postgresql-unavailable (condition) (log-message :error "~a" condition) (log-message :error "Reconnecting to PostgreSQL") ;; in order to avoid Socket error in "connect": ECONNREFUSED if we ;; try just too soon, wait a little (sleep 2) (pgsql-connect-and-execute-with-timing pgconn section label sql)))) (defun pgsql-execute-with-timing (section label sql-list &key on-error-stop client-min-messages) "Execute given SQL and resgister its timing into STATE." (let ((sql-list (alexandria:ensure-list sql-list))) (multiple-value-bind (res secs) (timing (multiple-value-bind (nb-ok nb-errors) (pgsql-execute sql-list :on-error-stop on-error-stop :client-min-messages client-min-messages) (update-stats section label :rows nb-ok :errs nb-errors))) (declare (ignore res)) (update-stats section label :read (length sql-list) :secs secs)))) (defun pgsql-execute (sql &key client-min-messages (on-error-stop t)) "Execute given SQL list of statements in current transaction. When ON-ERROR-STOP is non-nil (the default), we stop at the first sql statement that fails. That's because this facility is meant for DDL. With ON_ERROR_STOP nil, log the problem and continue thanks to PostgreSQL savepoints." (let ((nb-ok 0) (nb-errors 0)) (when client-min-messages (pomo:execute (format nil "SET LOCAL client_min_messages TO ~a;" (symbol-name client-min-messages)))) (if on-error-stop (loop :for sql :in (alexandria::ensure-list sql) :do (progn (log-message :notice "~a" sql) (pomo:execute sql)) ;; never executed in case of error, which signals out of here :finally (incf nb-ok (length sql))) ;; handle failures and just continue (loop :for sql :in (alexandria::ensure-list sql) :do (progn (pomo:execute "savepoint pgloader;") (handler-case (progn (log-message :notice "~a" sql) (pomo:execute sql) (pomo:execute "release savepoint pgloader;") (incf nb-ok)) (cl-postgres:database-error (e) (incf nb-errors) (log-message :error "PostgreSQL ~a" e) (pomo:execute "rollback to savepoint pgloader;")))))) (when client-min-messages (pomo:execute (format nil "RESET client_min_messages;"))) (values nb-ok nb-errors))) ;;; ;;; PostgreSQL version specific support, that we get once connected ;;; (defun list-typenames-without-btree-support () "Fetch PostgresQL data types without btree support, so that it's possible to later CREATE INDEX ... ON ... USING gist(...), or even something else than gist. " (loop :for (typename access-methods) :in (pomo:query (sql "/pgsql/list-typenames-without-btree-support.sql")) :collect (cons typename access-methods))) (defun list-reserved-keywords (pgconn) "Connect to PostgreSQL DBNAME and fetch reserved keywords." (handler-case (with-pgsql-connection (pgconn) (pomo:query "select word from pg_get_keywords() where catcode IN ('R', 'T')" :column)) ;; support for Amazon Redshift (cl-postgres-error::syntax-error-or-access-violation (e) ;; 42883 undefined_function ;; Database error 42883: function pg_get_keywords() does not exist ;; ;; the following list comes from a manual query against a local ;; PostgreSQL server (version 9.5devel), it's better to have this list ;; than nothing at all. (declare (ignore e)) (list "all" "analyse" "analyze" "and" "any" "array" "as" "asc" "asymmetric" "authorization" "binary" "both" "case" "cast" "check" "collate" "collation" "column" "concurrently" "constraint" "create" "cross" "current_catalog" "current_date" "current_role" "current_schema" "current_time" "current_timestamp" "current_user" "default" "deferrable" "desc" "distinct" "do" "else" "end" "except" "false" "fetch" "for" "foreign" "freeze" "from" "full" "grant" "group" "having" "ilike" "in" "initially" "inner" "intersect" "into" "is" "isnull" "join" "lateral" "leading" "left" "like" "limit" "localtime" "localtimestamp" "natural" "not" "notnull" "null" "offset" "on" "only" "or" "order" "outer" "overlaps" "placing" "primary" "references" "returning" "right" "select" "session_user" "similar" "some" "symmetric" "table" "then" "to" "trailing" "true" "union" "unique" "user" "using" "variadic" "verbose" "when" "where" "window" "with")))) pgloader/src/pgsql/copy-format.lisp0000644000175000017500000001236013124451571017614 0ustar vagrantvagrant;;; ;;; Tools to handle PostgreSQL data format ;;; (in-package :pgloader.pgsql) ;;; ;;; Format row to PostgreSQL COPY format, the TEXT variant. ;;; ;;; That function or something equivalent is provided by default in ;;; cl-postgres, but we want to avoid having to compute its result more than ;;; once in case of a rejected batch. Also, we're using vectors as input to ;;; minimize data copying in certain cases, and we want to avoid a coerce ;;; call here. ;;; (defun format-vector-row (row &optional (transforms (make-list (length row))) pre-formatted) "Add a ROW in the STREAM, formating ROW in PostgreSQL COPY TEXT format. See http://www.postgresql.org/docs/9.2/static/sql-copy.html#AEN66609 for details about the format, and format specs." (declare (type simple-array row)) ;; first prepare an array of transformed and properly encoded columns (let* ((nbcols (length row)) (pgrow (make-array nbcols :element-type 'array))) (loop :for raw-col :across row :for i :from 0 :for fn :in transforms :for col := (if pre-formatted raw-col (if fn (funcall fn raw-col) raw-col)) :do (setf (aref pgrow i) (if (or (null col) (eq :NULL col)) nil (cl-postgres-trivial-utf-8:string-to-utf-8-bytes col)))) ;; now that we have all the columns, make a simple array out of them (if pre-formatted ;; pre-formatted data means we can return it as it already is (flet ((col-length (col) ;; NULL is \N (2 bytes) in COPY format (if col (length col) 2))) (let* ((bytes (+ nbcols (reduce '+ (map 'list #'col-length pgrow)))) (result (make-array bytes :element-type '(unsigned-byte 8)))) (loop :for start := 0 :then (+ start len 1) :for col :across pgrow :for len := (if col (length col) 2) :do (progn (if col (replace result (the (simple-array (unsigned-byte 8) (*)) col) :start1 start) ;; insert \N for a null value (setf (aref result start) #. (char-code #\\) (aref result (+ 1 start)) #. (char-code #\N))) ;; either column separator, Tab, or Newline (end of record) (setf (aref result (+ start len)) (if (= bytes (+ start len 1)) #. (char-code #\Newline) #. (char-code #\Tab))))) ;; return the result and how many bytes it represents (values result bytes))) ;; in the general case we need to take into account PostgreSQL ;; escaping rules for the COPY format (flet ((escaped-length (string) (if (null string) ;; NULL is \N (2 bytes) in COPY format 2 (loop :for byte :across string :sum (case byte (#. (char-code #\\) 2) (#. (char-code #\Newline) 2) (#. (char-code #\Return) 2) (#. (char-code #\Tab) 2) (#. (char-code #\Backspace) 2) (#. (char-code #\Page) 2) (t 1)))))) (let* ((bytes (+ nbcols (reduce '+ (map 'list #'escaped-length pgrow)))) (result (make-array bytes :element-type '(unsigned-byte 8))) (pos 0)) (macrolet ((byte-out (byte) `(progn (setf (aref result pos) ,byte) (incf pos))) (esc-byte-out (byte) `(progn (setf (aref result pos) #. (char-code #\\)) (setf (aref result (1+ pos)) ,byte) (incf pos 2)))) (loop :for col :across pgrow :do (if (null col) (esc-byte-out #. (char-code #\N)) (loop :for byte :across col :do (case byte (#. (char-code #\\) (esc-byte-out byte)) (#. (char-code #\Newline) (esc-byte-out byte)) (#. (char-code #\Return) (esc-byte-out byte)) (#. (char-code #\Tab) (esc-byte-out byte)) (#. (char-code #\Backspace) (esc-byte-out byte)) (#. (char-code #\Page) (esc-byte-out byte)) (t (byte-out byte))))) ;; either column separator, Tab, or end-of-record with Newline (if (= bytes (+ 1 pos)) (byte-out #. (char-code #\Newline)) (byte-out #. (char-code #\Tab))))) ;; return the result and how many bytes it represents (values result bytes)))))) pgloader/src/pgsql/pgsql-ddl.lisp0000644000175000017500000002735513127365432017260 0ustar vagrantvagrant;;; ;;; PostgreSQL fkey support implementation as a Target Database ;;; (in-package :pgloader.pgsql) ;;; ;;; Schemas ;;; (defmethod format-create-sql ((schema schema) &key (stream nil) if-not-exists) (format stream "CREATE SCHEMA~@[~IF NOT EXISTS~] ~a;" if-not-exists (schema-name schema))) (defmethod format-drop-sql ((schema schema) &key (stream nil) cascade if-exists) (format stream "DROP SCHEMA~@[ IF EXISTS~] ~a~@[ CASCADE~];" if-exists (schema-name schema) cascade)) ;;; ;;; Types ;;; (defmethod format-create-sql ((sqltype sqltype) &key (stream nil) if-not-exists) (declare (ignore if-not-exists)) (ecase (sqltype-type sqltype) ((:enum :set) (format stream "CREATE TYPE ~a AS ENUM (~{'~a'~^, ~});" (sqltype-name sqltype) (sqltype-extra sqltype))))) (defmethod format-drop-sql ((sqltype sqltype) &key (stream nil) cascade if-exists) (format stream "DROP TYPE~:[~; IF EXISTS~] ~a~@[ CASCADE~];" if-exists (sqltype-name sqltype) cascade)) ;;; ;;; Tables ;;; (defmethod format-create-sql ((table table) &key (stream nil) if-not-exists) ;; ;; In case stream would be nil, which means return a string, we use this ;; with-output-to-string form and format its output in stream... ;; (format stream "~a" (with-output-to-string (s) (format s "CREATE TABLE~:[~; IF NOT EXISTS~] ~a ~%(~%" if-not-exists (format-table-name table)) (let ((max (reduce #'max (mapcar #'length (mapcar #'column-name (table-column-list table))) :initial-value 0))) (loop :for (col . last?) :on (table-column-list table) :do (progn (format s " ") (format-create-sql col :stream s :pretty-print t :max-column-name-length max) (format s "~:[~;,~]~%" last?)))) (format s ")") (when (table-storage-parameter-list table) (format s "~%WITH (~{~a = '~a'~^,~% ~})" (alexandria:alist-plist (table-storage-parameter-list table)))) (format s ";~%")))) (defmethod format-drop-sql ((table table) &key (stream nil) cascade (if-exists t)) "Return the PostgreSQL DROP TABLE IF EXISTS statement for TABLE-NAME." (format stream "DROP TABLE~:[~; IF EXISTS~] ~a~@[ CASCADE~];" if-exists (format-table-name table) cascade)) ;;; ;;; Columns ;;; (defun get-column-type-name-from-sqltype (column) "Return the column type name. When column-type is a sqltype, the sqltype might be either an ENUM or a SET. In the case of a SET, we want an array type to be defined here." (let ((type-name (column-type-name column))) (typecase type-name (sqltype (ecase (sqltype-type type-name) (:enum (sqltype-name type-name)) (:set (format nil "~a[]" (sqltype-name type-name))))) (string type-name)))) (defmethod format-create-sql ((column column) &key (stream nil) if-not-exists pretty-print ((:max-column-name-length max))) (declare (ignore if-not-exists)) (format stream "~a~vt~a~:[~*~;~a~]~:[ not null~;~]~:[~; default ~a~]" (column-name column) (if pretty-print (if max (+ 3 max) 22) 1) (get-column-type-name-from-sqltype column) (column-type-mod column) (column-type-mod column) (column-nullable column) (column-default column) (format-default-value column))) (defvar *pgsql-default-values* '((:null . "NULL") (:current-date . "CURRENT_DATE") (:current-timestamp . "CURRENT_TIMESTAMP") (:generate-uuid . "uuid_generate_v1()")) "Common normalized default values and their PostgreSQL spelling.") (defmethod format-default-value ((column column) &key (stream nil)) (let* ((default (column-default column)) (clean-default (cdr (assoc default *pgsql-default-values*))) (transform (column-transform column))) (or clean-default (if transform (let* ((transformed-default (handler-case (funcall transform default) (condition (c) (log-message :warning "Failed to transform default value ~s: ~a" default c) ;; can't transform: return nil nil))) (transformed-column (make-column :default transformed-default))) (format-default-value transformed-column)) (if default (format stream "'~a'" default) (format stream "NULL")))))) ;;; ;;; Indexes ;;; (defmethod format-create-sql ((index index) &key (stream nil) if-not-exists) (declare (ignore if-not-exists)) (let* ((table (index-table index)) (index-name (if (and *preserve-index-names* (not (string-equal "primary" (index-name index))) (table-oid (index-table index))) (index-name index) ;; in the general case, we build our own index name. (build-identifier "_" "idx" (table-oid (index-table index)) (index-name index)))) (access-method (index-access-method index))) (cond ((or (index-primary index) (and (index-condef index) (index-unique index))) (values ;; ensure good concurrency here, don't take the ACCESS EXCLUSIVE ;; LOCK on the table before we have the index done already (or (index-sql index) (format stream "CREATE UNIQUE INDEX ~a ON ~a (~{~a~^, ~})~@[ WHERE ~a~];" index-name (format-table-name table) (index-columns index) (index-filter index))) (format nil ;; don't use the index schema name here, PostgreSQL doesn't ;; like it, might be implicit from the table's schema ;; itself... "ALTER TABLE ~a ADD ~a USING INDEX ~a;" (format-table-name table) (cond ((index-primary index) "PRIMARY KEY") ((index-unique index) "UNIQUE")) index-name))) ((index-condef index) (format stream "ALTER TABLE ~a ADD ~a;" (format-table-name table) (index-condef index))) (t (or (index-sql index) (format stream "CREATE~:[~; UNIQUE~] INDEX ~a ON ~a ~@[USING ~a~](~{~a~^, ~})~@[ WHERE ~a~];" (index-unique index) index-name (format-table-name table) access-method (index-columns index) (index-filter index))))))) (defmethod format-drop-sql ((index index) &key (stream nil) cascade if-exists) (let* ((schema-name (schema-name (index-schema index))) (index-name (index-name index))) (cond ((index-conname index) (format stream "ALTER TABLE ~a DROP CONSTRAINT~:[~; IF EXISTS~] ~a~@[ CASCADE~];" (format-table-name (index-table index)) if-exists (index-conname index) cascade)) (t (format stream "DROP INDEX~:[~; IF EXISTS~] ~@[~a.~]~a~@[ CASCADE~];" if-exists schema-name index-name cascade))))) (defun index-access-method (index) "Compute PostgreSQL access method for index. If defaults to btree, but some types such as POINTS or BOX have no support for btree. If a MySQL point column has an index in MySQL, then create a GiST index for it in PostgreSQL." (when (= 1 (length (index-columns index))) ;; we only process single-index columns at the moment, which is a simpler ;; problem space and usefull enough to get started. (let* ((idx-cols (index-columns index)) (tbl-cols (table-column-list (index-table index))) (idx-types (loop :for idx-col :in idx-cols :collect (column-type-name (find idx-col tbl-cols :test #'string-equal :key #'column-name)))) (nobtree (catalog-types-without-btree (schema-catalog (table-schema (index-table index)))))) (let* ((idx-type (first idx-types)) (method (when (stringp idx-type) (cdr (assoc idx-type nobtree :test #'string=))))) (when method (aref method 0)))))) ;;; ;;; Foreign Keys ;;; (defmethod format-create-sql ((fk fkey) &key (stream nil) if-not-exists) (declare (ignore if-not-exists)) (if (and (fkey-name fk) (fkey-condef fk)) (format stream "ALTER TABLE ~a ADD CONSTRAINT ~a ~a" (format-table-name (fkey-table fk)) (fkey-name fk) (fkey-condef fk)) (format stream "ALTER TABLE ~a ADD ~@[CONSTRAINT ~a ~]FOREIGN KEY(~{~a~^,~}) REFERENCES ~a(~{~a~^,~})~:[~*~; ON UPDATE ~a~]~:[~*~; ON DELETE ~a~]" (format-table-name (fkey-table fk)) (fkey-name fk) ; constraint name (fkey-columns fk) (format-table-name (fkey-foreign-table fk)) (fkey-foreign-columns fk) (fkey-update-rule fk) (fkey-update-rule fk) (fkey-delete-rule fk) (fkey-delete-rule fk)))) (defmethod format-drop-sql ((fk fkey) &key (stream nil) cascade if-exists) (let* ((constraint-name (fkey-name fk)) (table-name (format-table-name (fkey-table fk)))) (format stream "ALTER TABLE ~a DROP CONSTRAINT~:[~; IF EXISTS~] ~a~@[ CASCADE~];" table-name if-exists constraint-name cascade))) ;;; ;;; Triggers ;;; (defmethod format-create-sql ((trigger trigger) &key (stream nil) if-not-exists) (declare (ignore if-not-exists)) (format stream "CREATE TRIGGER ~a ~a ON ~a FOR EACH ROW EXECUTE PROCEDURE ~a()" (trigger-name trigger) (trigger-action trigger) (format-table-name (trigger-table trigger)) (trigger-procedure-name trigger))) (defmethod format-drop-sql ((trigger trigger) &key (stream nil) cascade if-exists) (format stream "DROP TRIGGER~:[~; IF EXISTS~] ~a ON ~a~@[ CASCADE~];" if-exists (trigger-name trigger) (format-table-name (trigger-table trigger)) cascade)) ;;; ;;; Procedures ;;; (defmethod format-create-sql ((procedure procedure) &key (stream nil) if-not-exists) (declare (ignore if-not-exists)) (format stream "CREATE OR REPLACE FUNCTION ~a() RETURNS ~a LANGUAGE ~a AS $$~%~a~%$$;" (procedure-name procedure) (procedure-returns procedure) (procedure-language procedure) (procedure-body procedure))) (defmethod format-drop-sql ((procedure procedure) &key (stream nil) cascade if-exists) (format stream "DROP FUNCTION~:[~; IF EXISTS~] ~a()~@[ CASCADE~];" if-exists (procedure-name procedure) cascade)) ;;; ;;; Comments ;;; pgloader/src/pgsql/pgsql-create-schema.lisp0000644000175000017500000004212213127204411021170 0ustar vagrantvagrant;;; ;;; Tools to handle PostgreSQL tables and indexes creations ;;; (in-package #:pgloader.pgsql) ;;; ;;; Table schema support ;;; (defun create-sqltypes (catalog &key if-not-exists include-drop (client-min-messages :notice)) "Create the needed data types for given CATALOG." (let ((sqltype-list)) ;; build the sqltype list (loop :for table :in (append (table-list catalog) (view-list catalog)) :do (loop :for column :in (table-column-list table) :do (when (typep (column-type-name column) 'sqltype) (pushnew (column-type-name column) sqltype-list :test #'string-equal :key #'sqltype-name)))) ;; now create the types (loop :for sqltype :in sqltype-list :when include-drop :count t :do (pgsql-execute (format-drop-sql sqltype :cascade t :if-exists t) :client-min-messages client-min-messages) :do (pgsql-execute (format-create-sql sqltype :if-not-exists if-not-exists) :client-min-messages client-min-messages)))) (defun create-table-sql-list (table-list &key if-not-exists include-drop) "Return the list of CREATE TABLE statements to run against PostgreSQL." (loop :for table :in table-list :when include-drop :collect (format-drop-sql table :cascade t :if-exists t) :collect (format-create-sql table :if-not-exists if-not-exists))) (defun create-table-list (table-list &key if-not-exists include-drop (client-min-messages :notice)) "Create all tables in database dbname in PostgreSQL." (loop :for sql :in (create-table-sql-list table-list :if-not-exists if-not-exists :include-drop include-drop) :count (not (null sql)) :into nb-tables :when sql :do (pgsql-execute sql :client-min-messages client-min-messages) :finally (return nb-tables))) (defun create-schemas (catalog &key include-drop (client-min-messages :notice)) "Create all schemas from the given database CATALOG." (let ((schema-list (list-schemas))) (when include-drop ;; if asked, first DROP the schema CASCADE. (loop :for schema :in (catalog-schema-list catalog) :for schema-name := (schema-name schema) :when (and schema-name (member schema-name schema-list :test #'string=)) :do (let ((sql (format nil "DROP SCHEMA ~a CASCADE;" schema-name))) (pgsql-execute sql :client-min-messages client-min-messages)))) ;; now create the schemas (again?) (loop :for schema :in (catalog-schema-list catalog) :for schema-name := (schema-name schema) :when (and schema-name (or include-drop (not (member schema-name schema-list :test #'string=)))) :do (let ((sql (format nil "CREATE SCHEMA ~a;" (schema-name schema)))) (pgsql-execute sql :client-min-messages client-min-messages))))) (defun create-tables (catalog &key if-not-exists include-drop (client-min-messages :notice)) "Create all tables from the given database CATALOG." (create-table-list (table-list catalog) :if-not-exists if-not-exists :include-drop include-drop :client-min-messages client-min-messages)) (defun create-views (catalog &key if-not-exists include-drop (client-min-messages :notice)) "Create all tables from the given database CATALOG." (create-table-list (view-list catalog) :if-not-exists if-not-exists :include-drop include-drop :client-min-messages client-min-messages)) (defun create-triggers (catalog &key label (section :post) (client-min-messages :notice)) "Create the catalog objects that come after the data has been loaded." (let ((sql-list (loop :for table :in (table-list catalog) :do (process-triggers table) :when (table-trigger-list table) :append (loop :for trigger :in (table-trigger-list table) :collect (format-create-sql (trigger-procedure trigger)) :collect (format-create-sql trigger))))) (pgsql-execute-with-timing section label sql-list :client-min-messages client-min-messages))) ;;; ;;; DDL Utilities: TRUNCATE, ENABLE/DISABLE triggers ;;; (defun truncate-tables (catalog-or-table) "Truncate given TABLE-NAME in database DBNAME. A PostgreSQL connection must already be active when calling that function." (let* ((target-list (mapcar #'format-table-name (etypecase catalog-or-table (catalog (table-list catalog-or-table)) (schema (table-list catalog-or-table)) (table (list catalog-or-table))))) (sql (format nil "TRUNCATE ~{~a~^,~};" target-list))) (pgsql-execute sql) ;; return how many tables we just TRUNCATEd (length target-list))) (defun disable-triggers (table-name) "Disable triggers on TABLE-NAME. Needs to be called with a PostgreSQL connection already opened." (let ((sql (format nil "ALTER TABLE ~a DISABLE TRIGGER ALL;" (apply-identifier-case table-name)))) (pgsql-execute sql))) (defun enable-triggers (table-name) "Disable triggers on TABLE-NAME. Needs to be called with a PostgreSQL connection already opened." (let ((sql (format nil "ALTER TABLE ~a ENABLE TRIGGER ALL;" (apply-identifier-case table-name)))) (pgsql-execute sql))) (defmacro with-disabled-triggers ((table-name &key disable-triggers) &body forms) "Run FORMS with PostgreSQL triggers disabled for TABLE-NAME if DISABLE-TRIGGERS is T A PostgreSQL connection must be opened already where this macro is used." `(if ,disable-triggers (progn (disable-triggers ,table-name) (unwind-protect (progn ,@forms) (enable-triggers ,table-name))) (progn ,@forms))) ;;; ;;; API for Foreign Keys ;;; (defun drop-pgsql-fkeys (catalog &key (cascade t)) "Drop all Foreign Key Definitions given, to prepare for a clean run." (loop :for table :in (table-list catalog) :sum (loop :for fkey :in (table-fkey-list table) :for sql := (format-drop-sql fkey :cascade cascade :if-exists t) :do (pgsql-execute sql) :count t) ;; also DROP the foreign keys that depend on the indexes we want to DROP :sum (loop :for index :in (table-index-list table) :sum (loop :for fkey :in (index-fk-deps index) :for sql := (format-drop-sql fkey :cascade t :if-exists t) :do (progn (log-message :debug "EXTRA FK DEPS!") (pgsql-execute sql)) :count t)))) (defun create-pgsql-fkeys (catalog &key (section :post) label) "Actually create the Foreign Key References that where declared in the MySQL database" (let ((fk-sql-list (loop :for table :in (table-list catalog) :append (loop :for fkey :in (table-fkey-list table) :for sql := (format-create-sql fkey) :collect sql) :append (loop :for index :in (table-index-list table) :do (loop :for fkey :in (index-fk-deps index) :for sql := (format-create-sql fkey) :do (log-message :debug "EXTRA FK DEPS! ~a" sql) :collect sql))))) ;; and now execute our list (pgsql-execute-with-timing section label fk-sql-list))) ;;; ;;; Parallel index building. ;;; (defun create-indexes-in-kernel (pgconn table kernel channel &key (label "Create Indexes")) "Create indexes for given table in dbname, using given lparallel KERNEL and CHANNEL so that the index build happen in concurrently with the data copying." (let* ((lp:*kernel* kernel)) (loop :for index :in (table-index-list table) :for pkey := (multiple-value-bind (sql pkey) ;; we postpone the pkey upgrade of the index for later. (format-create-sql index) (lp:submit-task channel #'pgsql-connect-and-execute-with-timing ;; each thread must have its own connection (clone-connection pgconn) :post label sql) ;; return the pkey "upgrade" statement pkey) :when pkey :collect pkey))) ;;; ;;; Protect from non-unique index names ;;; (defun set-table-oids (catalog) "MySQL allows using the same index name against separate tables, which PostgreSQL forbids. To get unicity in index names without running out of characters (we are allowed only 63), we use the table OID instead. This function grabs the table OIDs in the PostgreSQL database and update the definitions with them." (let* ((table-names (mapcar #'format-table-name (table-list catalog))) (oid-map (list-table-oids table-names))) (loop :for table :in (table-list catalog) :for table-name := (format-table-name table) :for table-oid := (gethash table-name oid-map) :unless table-oid :do (error "OID not found for ~s." table-name) :count t :do (setf (table-oid table) table-oid)))) ;;; ;;; Drop indexes before loading ;;; (defun drop-indexes (table-or-catalog &key cascade) "Drop indexes in PGSQL-INDEX-LIST. A PostgreSQL connection must already be active when calling that function." (let ((sql-index-list (loop :for index :in (typecase table-or-catalog (table (table-index-list table-or-catalog)) (catalog (loop :for table :in (table-list table-or-catalog) :append (table-index-list table)))) :collect (format-drop-sql index :cascade cascade :if-exists t)))) (pgsql-execute sql-index-list) ;; return how many indexes we just DROPed (length sql-index-list))) ;;; ;;; Higher level API to care about indexes ;;; (defun maybe-drop-indexes (catalog &key drop-indexes) "Drop the indexes for TABLE-NAME on TARGET PostgreSQL connection, and returns a list of indexes to create again. A PostgreSQL connection must already be active when calling that function." (loop :for table :in (table-list catalog) :do (let ((indexes (table-index-list table)) ;; we get the list of indexes from PostgreSQL catalogs, so don't ;; question their spelling, just quote them. (*identifier-case* :quote)) (cond ((and indexes (not drop-indexes)) (log-message :warning "Target table ~s has ~d indexes defined against it." (format-table-name table) (length indexes)) (log-message :warning "That could impact loading performance badly.") (log-message :warning "Consider the option 'drop indexes'.")) (indexes (drop-indexes table)))))) (defun create-indexes-again (target catalog &key max-parallel-create-index (section :post) drop-indexes) "Create the indexes that we dropped previously." (when (and drop-indexes (< 0 (count-indexes catalog))) (let* ((*preserve-index-names* t) ;; we get the list of indexes from PostgreSQL catalogs, so don't ;; question their spelling, just quote them. (*identifier-case* :quote) (idx-kernel (make-kernel (or max-parallel-create-index (count-indexes catalog)))) (idx-channel (let ((lp:*kernel* idx-kernel)) (lp:make-channel)))) (loop :for table :in (table-list catalog) :when (table-index-list table) :do (let ((pkeys (create-indexes-in-kernel target table idx-kernel idx-channel))) (with-stats-collection ("Index Build Completion" :section section) (loop :repeat (count-indexes table) :do (lp:receive-result idx-channel)) (lp:end-kernel :wait t)) ;; turn unique indexes into pkeys now (pgsql-connect-and-execute-with-timing target section "Constraints" pkeys)))))) ;;; ;;; Sequences ;;; (defun reset-sequences (target catalog &key (section :post)) "Reset all sequences created during this MySQL migration." (log-message :notice "Reset sequences") (with-stats-collection ("Reset Sequences" :use-result-as-read t :use-result-as-rows t :section section) (let ((tables (table-list catalog))) (with-pgsql-connection (target) (set-session-gucs *pg-settings*) (pomo:execute "set client_min_messages to warning;") (pomo:execute "listen seqs") (when tables (pomo:execute (format nil "create temp table reloids(oid) as values ~{('~a'::regclass)~^,~}" (mapcar #'format-table-name tables)))) (handler-case (let ((sql (format nil " DO $$ DECLARE n integer := 0; r record; BEGIN FOR r in SELECT 'select ' || trim(trailing ')' from replace(pg_get_expr(d.adbin, d.adrelid), 'nextval', 'setval')) || ', (select greatest(max(' || quote_ident(a.attname) || '), 1) from only ' || quote_ident(nspname) || '.' || quote_ident(relname) || '));' as sql FROM pg_class c JOIN pg_namespace n on n.oid = c.relnamespace JOIN pg_attribute a on a.attrelid = c.oid JOIN pg_attrdef d on d.adrelid = a.attrelid and d.adnum = a.attnum and a.atthasdef WHERE relkind = 'r' and a.attnum > 0 and pg_get_expr(d.adbin, d.adrelid) ~~ '^nextval' ~@[and c.oid in (select oid from reloids)~] LOOP n := n + 1; EXECUTE r.sql; END LOOP; PERFORM pg_notify('seqs', n::text); END; $$; " tables))) (pomo:execute sql)) ;; now get the notification signal (cl-postgres:postgresql-notification (c) (parse-integer (cl-postgres:postgresql-notification-payload c)))))))) ;;; ;;; Comments ;;; (defun comment-on-tables-and-columns (catalog &key label (section :post)) "Install comments on tables and columns from CATALOG." (let* ((quote ;; just something improbably found in a table comment, to use as ;; dollar quoting, and generated at random at that. ;; ;; because somehow it appears impossible here to benefit from ;; the usual SQL injection protection offered by the Extended ;; Query Protocol from PostgreSQL. (concatenate 'string (map 'string #'code-char (loop :repeat 5 :collect (+ (random 26) (char-code #\A)))) "_" (map 'string #'code-char (loop :repeat 5 :collect (+ (random 26) (char-code #\A)))))) (sql-list ;; table level comments (loop :for table :in (table-list catalog) :when (table-comment table) :collect (format nil "comment on table ~a is $~a$~a$~a$" (table-name table) quote (table-comment table) quote) ;; for each table, append column level comments :append (loop :for column :in (table-column-list table) :when (column-comment column) :collect (format nil "comment on column ~a.~a is $~a$~a$~a$" (table-name table) (column-name column) quote (column-comment column) quote))))) (pgsql-execute-with-timing section label sql-list))) pgloader/src/pgsql/merge-catalogs.lisp0000644000175000017500000001551013054332510020237 0ustar vagrantvagrant;;; ;;; To support pre-existing database targets we need to be able to merge the ;;; catalog we get from the source database and the catalog we fetch in the ;;; already prepared target database: that's the typical scenario when using ;;; an ORM to define the schema. ;;; ;;; Using an ORM to define a database schema is considered very bad practice ;;; for very good reasons. pgloader goal is to facilitate migrations to ;;; PostgreSQL, the education is generally welcome in later steps. ;;; (in-package :pgloader.pgsql) (defun merge-catalogs (source-catalog target-catalog) "In order for the data loading to be as fast as possible, we DROP the constraints and indexes on the target table. Once the data is loaded we want to install the same constraints as found pre-existing in the TARGET-CATALOG rather than the one we casted from the SOURCE-CATALOG. Also, we want to recheck the cast situation and the selected transformation functions of each column." (let (skip-list) (loop :for source-schema :in (catalog-schema-list source-catalog) :do (let* ((schema-name ;; MySQL schema map to PostgreSQL databases, so we might ;; have NIL as a schema name here. Find the current ;; PostgreSQL schema instead of NIL. (or (schema-name source-schema) (pomo:query "select current_schema()" :single))) (target-schema (find-schema target-catalog schema-name))) (unless target-schema (error "pgloader failed to find schema ~s in target catalog" schema-name)) (loop :for source-table :in (schema-table-list source-schema) :for target-table := (find-table target-schema (ensure-unquoted (table-name source-table))) :do (if target-table (progn ;; re-use indexes and fkeys from target-catalog (setf (table-oid source-table) (table-oid target-table) (table-index-list source-table) (table-index-list target-table) (table-fkey-list source-table) (table-fkey-list target-table) ;; special case for triggers: we don't DROP them, ;; we only ALTER TABLE ... DISABLE TRIGGERS then ;; ENABLE them again; so we only have to refrain ;; from installing the source-catalog ones here. (table-trigger-list source-table) nil) (check-table-columns schema-name source-table target-table)) ;; ;; We failed to find a matching table for the source ;; table, let the user know then remove the table from ;; the source catalogs. ;; (progn (log-message :error "pgloader failed to find target table for source ~s.~s with name ~s in target catalog" (schema-source-name source-schema) (table-source-name source-table) (table-name source-table)) (push-to-end source-table skip-list)))))) (when skip-list (loop :for table :in skip-list :do (let ((schema (table-schema table))) (log-message :log "Skipping ~a" (format-table-name table)) (setf (schema-table-list schema) (delete table (schema-table-list schema)))))))) (defun check-table-columns (schema-name source-table target-table) (loop :for source-column :in (table-column-list source-table) :do (let* ((col-name (ensure-unquoted (column-name source-column))) ;; ;; Apply PostgreSQL case rules for identifiers: compare ;; UPCASE versions of them... ;; (target-column (find (string-upcase col-name) (table-field-list target-table) :key (lambda (column) (string-upcase (column-name column))) :test #'string=))) (unless target-column (error "pgloader failed to find column ~s.~s.~s in target table ~s" schema-name (table-source-name source-table) (column-name source-column) (format-table-name target-table))) (unless (same-type-p source-column target-column) (log-message :warning "Source column ~s.~s.~s is casted to type ~s which is not the same as ~s, the type of current target database column ~s.~s.~s." schema-name (table-source-name source-table) (column-name source-column) (column-type-name source-column) (column-type-name target-column) (schema-name (table-schema target-table)) (table-name target-table) (column-name target-column)))))) (defvar *type-name-mapping* '(("int" "integer") ("serial" "integer") ("bigserial" "bigint") ("char" "character") ("varchar" "character varying") ("timestamp" "timestamp without time zone") ("timestamptz" "timestamp with time zone") ("decimal" "numeric")) "Alternative spellings for some type names.") (defun get-type-name (column) "Support SQLTYPE indirection if needed." (let ((typname (column-type-name column))) (etypecase typname (string typname) (sqltype (get-column-type-name-from-sqltype column))))) (defun same-type-p (source-column target-column) "Evaluate if SOURCE-COLUMN and TARGET-COLUMN selected type names are similar enough that we may continue with the migration." (let ((source-type-name (get-type-name source-column)) (target-type-name (column-type-name target-column))) (or (string= source-type-name target-type-name) (member target-type-name (cdr (assoc source-type-name *type-name-mapping* :test #'string=)) :test #'string=)))) pgloader/src/pgsql/pgsql-index-filter.lisp0000644000175000017500000000410613047375022021071 0ustar vagrantvagrant;;; ;;; API to rewrite index WHERE clauses (filter) ;;; (in-package #:pgloader.pgsql) (defgeneric translate-index-filter (table index sql-dialect) (:documentation "Translate the filter clause of INDEX in PostgreSQL slang.")) (defmethod translate-index-filter ((table table) (index index) (sql-dialect t)) "Implement a default facility that does nothing." nil) ;;; ;;; Generic code that drives all index filter clauses rewriting. ;;; (defgeneric process-index-definitions (object &key sql-dialect) (:documentation "Rewrite all indexes filters in given catalog OBJECT.")) (defmethod process-index-definitions ((catalog catalog) &key sql-dialect) "Rewrite all index filters in CATALOG." (loop :for schema :in (catalog-schema-list catalog) :do (process-index-definitions schema :sql-dialect sql-dialect))) (defmethod process-index-definitions ((schema schema) &key sql-dialect) "Rewrite all index filters in CATALOG." (loop :for table :in (schema-table-list schema) :do (process-index-definitions table :sql-dialect sql-dialect))) (defmethod process-index-definitions ((table table) &key sql-dialect) "Rewrite all index filter in TABLE." (loop :for index :in (table-index-list table) :when (index-filter index) :do (let ((pg-filter (handler-case (translate-index-filter table index sql-dialect) (condition (c) (log-message :error "Failed to translate index ~s on table ~s because of filter clause ~s" (index-name index) (format-table-name table) (index-filter index)) (log-message :debug "filter translation error: ~a" c) ;; try to create the index without the WHERE clause... (setf (index-filter index) nil))))) (log-message :info "tranlate-index-filter: ~s" pg-filter) (setf (index-filter index) pg-filter)))) pgloader/src/pgsql/copy-from-queue.lisp0000644000175000017500000002230013126552457020413 0ustar vagrantvagrant;;; ;;; The PostgreSQL COPY TO implementation, with batches and retries. ;;; (in-package :pgloader.pgsql) ;;; ;;; Stream prepared data from *writer-batch* down to PostgreSQL using the ;;; COPY protocol, and retry the batch avoiding known bad rows (from parsing ;;; COPY error messages) in case some data related conditions are signaled. ;;; (defun db-write-row (copier data) "Copy cl-postgres:db-write-row guts to avoid computing utf-8 bytes all over again, as we reproduced the data formating in pgloader code. The reason we do that is to be able to lower the cost of retrying batches: the formating has then already been done." (let* ((connection (cl-postgres::copier-database copier)) (cl-postgres::socket (cl-postgres::connection-socket connection))) (cl-postgres::with-reconnect-restart connection (cl-postgres::using-connection connection (cl-postgres::with-syncing (cl-postgres::write-uint1 cl-postgres::socket 100) (cl-postgres::write-uint4 cl-postgres::socket (+ 4 (length data))) (loop :for byte :across data :do (write-byte byte cl-postgres::socket)))))) (incf (cl-postgres::copier-count copier))) (defun copy-batch (table columns batch batch-rows &key (db pomo:*database*) on-error-stop) "Copy current *writer-batch* into TABLE-NAME." ;; We need to keep a copy of the rows we send through the COPY ;; protocol to PostgreSQL to be able to process them again in case ;; of a data error being signaled, that's the BATCH here. (let ((table-name (format-table-name table)) (pomo:*database* db)) ;; We can't use with-pgsql-transaction here because of the specifics ;; of error handling in case of cl-postgres:open-db-writer errors: the ;; transaction is dead already when we get a signal, and the COMMIT or ;; ABORT steps then trigger a protocol error on a #\Z message. (handler-case (progn (pomo:execute "BEGIN") (let* ((copier (handler-case (cl-postgres:open-db-writer db table-name columns) (condition (c) ;; failed to open the COPY protocol mode (e.g. missing ;; columns on the target table), stop here, ;; transaction is dead already (no ROLLBACK needed). (log-message :fatal "Can't init COPY to ~a~@[(~{~a~^, ~})~]: ~%~a" (format-table-name table) columns c) (update-stats :data table :errs 1) (return-from copy-batch 0))))) (unwind-protect (loop :for i :below batch-rows :for data := (aref batch i) :do (when data (db-write-row copier data)) :finally (return batch-rows)) (cl-postgres:close-db-writer copier) (pomo:execute "COMMIT")))) ;; If PostgreSQL signals a data error, process the batch by isolating ;; erroneous data away and retrying the rest. (postgresql-retryable (condition) (pomo:execute "ROLLBACK") (log-message :error "PostgreSQL [~s] ~a" table-name condition) (if on-error-stop ;; re-signal the condition to upper level (signal 'on-error-stop :on-condition condition) ;; normal behavior, on-error-stop being nil ;; clean the current transaction before retrying new ones (let ((errors (retry-batch table columns batch batch-rows condition))) (log-message :debug "retry-batch found ~d errors" errors) (update-stats :data table :rows (- errors))))) (postgresql-unavailable (condition) (log-message :error "[PostgreSQL ~s] ~a" table-name condition) (log-message :error "Copy Batch reconnecting to PostgreSQL") ;; in order to avoid Socket error in "connect": ECONNREFUSED if we ;; try just too soon, wait a little (sleep 2) (cl-postgres:reopen-database db) (copy-batch table columns batch batch-rows :db db :on-error-stop on-error-stop)) (condition (c) ;; non retryable failures (log-message :error "Non-retryable error ~a" c) (pomo:execute "ROLLBACK"))))) ;;; ;;; We receive raw input rows from an lparallel queue, push their content ;;; down to PostgreSQL, handling any data related errors in the way. ;;; (defun copy-rows-from-queue (copy queue &key disable-triggers on-error-stop (columns (pgloader.sources:copy-column-list copy)) &aux (pgconn (clone-connection (pgloader.sources:target-db copy))) (table (pgloader.sources:target copy))) "Fetch rows from the QUEUE, prepare them in batches and send them down to PostgreSQL, and when that's done update stats." (let ((preprocessor (pgloader.sources::preprocess-row copy)) (pre-formatted (pgloader.sources:data-is-preformatted-p copy)) (current-batch (make-batch)) (seconds 0)) (flet ((send-current-batch (unqualified-table-name) ;; we close over the whole lexical environment or almost... (let ((batch-start-time (get-internal-real-time))) (copy-batch table columns (batch-data current-batch) (batch-count current-batch) :on-error-stop on-error-stop) (let ((batch-seconds (elapsed-time-since batch-start-time))) (log-message :debug "copy-batch[~a] ~a ~d row~:p [~a] in ~6$s~@[ [oversized]~]" (lp:kernel-worker-index) unqualified-table-name (batch-count current-batch) (pretty-print-bytes (batch-bytes current-batch)) batch-seconds (batch-oversized-p current-batch)) (update-stats :data table :rows (batch-count current-batch)) ;; return batch-seconds batch-seconds)))) (declare (inline send-current-batch)) (with-pgsql-connection (pgconn) (with-schema (unqualified-table-name table) (with-disabled-triggers (unqualified-table-name :disable-triggers disable-triggers) (log-message :info "pgsql:copy-rows-from-queue[~a]: ~a ~a" (lp:kernel-worker-index) (format-table-name table) columns) (loop :for row := (lq:pop-queue queue) :until (eq :end-of-data row) :do (progn ;; if current-batch is full, send data to PostgreSQL ;; and prepare a new batch (when (batch-full-p current-batch) (let ((batch-seconds (send-current-batch unqualified-table-name))) (incf seconds batch-seconds)) (setf current-batch (make-batch))) (format-row-in-batch copy row current-batch preprocessor pre-formatted))) ;; the last batch might not be empty (unless (= 0 (batch-count current-batch)) (send-current-batch unqualified-table-name)))))) ;; each writer thread sends its own stop timestamp and the monitor keeps ;; only the latest entry (update-stats :data table :ws seconds :stop (get-internal-real-time)) (log-message :debug "Writer[~a] for ~a is done in ~6$s" (lp:kernel-worker-index) (format-table-name table) seconds) (list :writer table seconds))) (declaim (inline send-current-batch)) (defun format-row-in-batch (copy row current-batch preprocessor pre-formatted) "Given a row from the queue, prepare it for the next batch." (metabang.bind:bind ((row (if preprocessor (funcall preprocessor row) row)) ((:values copy-data bytes) (handler-case (format-vector-row row (pgloader.sources::transforms copy) pre-formatted) (condition (e) (log-message :error "Error while formating a row from ~s:" (format-table-name (pgloader.sources:target copy))) (log-message :error "~a" e) (update-stats :data (pgloader.sources:target copy) :errs 1) (values nil 0))))) ;; we might have to debug (when copy-data (log-message :data "> ~s" (map 'string #'code-char copy-data))) ;; now add copy-data to current-batch (push-row current-batch copy-data bytes))) pgloader/src/hooks.lisp0000644000175000017500000000353313047375022015353 0ustar vagrantvagrant;;; ;;; At SBCL image startup, we have a situation when the exact pathname for ;;; the OpenSSL shared Object is not to be found at the same location again. ;;; ;;; Hack our way around that by registering hooks to force unloading and ;;; loading the lib at proper times. ;;; ;;; Note: the culprit seems to be qmynd and its usage of :weakly-depends-on ;;; :cl+ssl in its system definition. ;;; ;; So that we can #+pgloader-image some code away, see main.lisp (push :pgloader-image *features*) (in-package #:cl-user) (defun close-foreign-libs () "Close Foreign libs in use by pgloader at application save time." (let (#+sbcl (sb-ext:*muffled-warnings* 'style-warning)) (mapc #'cffi:close-foreign-library '(;; cl+ssl::libssl mssql::sybdb)))) (defun open-foreign-libs () "Open Foreign libs in use by pgloader at application start time." (let (#+sbcl (sb-ext:*muffled-warnings* 'style-warning)) ;; we specifically don't load mssql::sybdb eagerly, it's getting loaded ;; in only when the data source is a MS SQL database. (cffi:load-foreign-library 'cl+ssl::libssl))) #| #+ccl (push #'open-foreign-libs *lisp-startup-functions*) #+sbcl (push #'open-foreign-libs sb-ext:*init-hooks*) |# #+ccl (push #'close-foreign-libs *save-exit-functions*) #+sbcl (push #'close-foreign-libs sb-ext:*save-hooks*) ;;; ;;; Register all loaded systems in the image, so that ASDF don't search for ;;; them again when doing --self-upgrade ;;; (defun register-preloaded-system (system) (unless (string= "pgloader" (asdf::coerce-name system)) (let ((version (slot-value system 'asdf::version))) (asdf::register-preloaded-system system :version version)))) (asdf:map-systems #'register-preloaded-system) (setf pgloader::*self-upgrade-immutable-systems* (remove "pgloader" (asdf:already-loaded-systems) :test #'string=)) pgloader/src/parsers/0000755000175000017500000000000013127367447015025 5ustar vagrantvagrantpgloader/src/parsers/command-csv.lisp0000644000175000017500000004374013124541524020120 0ustar vagrantvagrant;;; ;;; The main CSV loading command, with optional clauses ;;; (in-package #:pgloader.parser) #| LOAD CSV FROM /Users/dim/dev/CL/pgloader/galaxya/yagoa/communaute_profil.csv INTO postgresql://dim@localhost:54393/yagoa?commnaute_profil WITH truncate, fields optionally enclosed by '\"', fields escaped by \"\, fields terminated by '\t', reset sequences; LOAD CSV FROM '*/GeoLiteCity-Blocks.csv' ( startIpNum, endIpNum, locId ) INTO postgresql://dim@localhost:54393/dim?geolite.blocks ( iprange ip4r using (ip-range startIpNum endIpNum), locId ) WITH truncate, skip header = 2, fields optionally enclosed by '\"', fields escaped by '\"', fields terminated by '\t'; |# (defrule hex-char-code (and "0x" (+ (hexdigit-char-p character))) (:lambda (hex) (bind (((_ digits) hex)) (code-char (parse-integer (text digits) :radix 16))))) (defrule tab (and #\\ #\t) (:constant #\Tab)) (defrule separator (and #\' (or hex-char-code tab character ) #\') (:lambda (sep) (bind (((_ char _) sep)) char))) ;; ;; Main CSV options (WITH ... in the command grammar) ;; (defrule option-skip-header (and kw-skip kw-header equal-sign (+ (digit-char-p character))) (:lambda (osh) (bind (((_ _ _ digits) osh)) (cons :skip-lines (parse-integer (text digits)))))) (defrule option-csv-header (and kw-csv kw-header) (:constant (cons :header t))) (defrule option-fields-enclosed-by (and kw-fields (? kw-optionally) kw-enclosed kw-by separator) (:lambda (enc) (bind (((_ _ _ _ sep) enc)) (cons :quote sep)))) (defrule option-fields-not-enclosed (and kw-fields kw-not kw-enclosed) (:constant (cons :quote nil))) (defrule quote-quote "double-quote" (:constant "\"\"")) (defrule backslash-quote "backslash-quote" (:constant "\\\"")) (defrule escaped-quote-name (or quote-quote backslash-quote)) (defrule escaped-quote-literal (or (and #\" #\") (and #\\ #\")) (:text t)) (defrule escaped-quote (or escaped-quote-literal escaped-quote-name separator)) (defrule escape-mode-quote "quote" (:constant :quote)) (defrule escape-mode-following "following" (:constant :following)) (defrule escape-mode (or escape-mode-quote escape-mode-following)) (defrule option-fields-escaped-by (and kw-fields kw-escaped kw-by escaped-quote) (:lambda (esc) (bind (((_ _ _ sep) esc)) (cons :escape sep)))) (defrule option-terminated-by (and kw-terminated kw-by separator) (:lambda (term) (bind (((_ _ sep) term)) (cons :separator sep)))) (defrule option-fields-terminated-by (and kw-fields option-terminated-by) (:lambda (term) (bind (((_ sep) term)) sep))) (defrule option-lines-terminated-by (and kw-lines kw-terminated kw-by separator) (:lambda (term) (bind (((_ _ _ sep) term)) (cons :newline sep)))) (defrule option-keep-unquoted-blanks (and kw-keep kw-unquoted kw-blanks) (:constant (cons :trim-blanks nil))) (defrule option-trim-unquoted-blanks (and kw-trim kw-unquoted kw-blanks) (:constant (cons :trim-blanks t))) (defrule option-csv-escape-mode (and kw-csv kw-escape kw-mode escape-mode) (:lambda (term) (bind (((_ _ _ escape-mode) term)) (cons :escape-mode escape-mode)))) (defrule csv-option (or option-on-error-stop option-workers option-concurrency option-batch-rows option-batch-size option-prefetch-rows option-max-parallel-create-index option-truncate option-disable-triggers option-identifiers-case option-drop-indexes option-skip-header option-csv-header option-lines-terminated-by option-fields-not-enclosed option-fields-enclosed-by option-fields-escaped-by option-fields-terminated-by option-trim-unquoted-blanks option-keep-unquoted-blanks option-csv-escape-mode)) (defrule csv-options (and kw-with (and csv-option (* (and comma csv-option)))) (:function flatten-option-list)) ;; ;; CSV per-field reading options ;; (defrule single-quoted-string (and #\' (* (not #\')) #\') (:lambda (qs) (bind (((_ string _) qs)) (text string)))) (defrule double-quoted-string (and #\" (* (not #\")) #\") (:lambda (qs) (bind (((_ string _) qs)) (text string)))) (defrule quoted-string (or single-quoted-string double-quoted-string)) (defrule option-date-format (and kw-date kw-format quoted-string) (:lambda (df) (bind (((_ _ date-format) df)) (cons :date-format date-format)))) (defrule blanks kw-blanks (:constant :blanks)) (defrule option-null-if (and kw-null kw-if (or blanks quoted-string)) (:lambda (nullif) (bind (((_ _ opt) nullif)) (cons :null-as opt)))) (defrule option-trim-both-whitespace (and kw-trim kw-both kw-whitespace) (:constant (cons :trim-both t))) (defrule option-trim-left-whitespace (and kw-trim kw-left kw-whitespace) (:constant (cons :trim-left t))) (defrule option-trim-right-whitespace (and kw-trim kw-right kw-whitespace) (:constant (cons :trim-right t))) (defrule csv-field-option (or option-terminated-by option-date-format option-null-if option-trim-both-whitespace option-trim-left-whitespace option-trim-right-whitespace)) (defrule another-csv-field-option (and comma csv-field-option) (:lambda (field-option) (bind (((_ option) field-option)) option))) (defrule open-square-bracket (and ignore-whitespace #\[ ignore-whitespace) (:constant :open-square-bracket)) (defrule close-square-bracket (and ignore-whitespace #\] ignore-whitespace) (:constant :close-square-bracket)) (defrule csv-field-option-list (and open-square-bracket csv-field-option (* another-csv-field-option) close-square-bracket) (:lambda (option) (bind (((_ opt1 opts _) option)) (alexandria:alist-plist `(,opt1 ,@opts))))) (defrule csv-field-options (? csv-field-option-list)) (defrule csv-bare-field-name (and (or #\_ (alpha-char-p character)) (* (or (alpha-char-p character) (digit-char-p character) #\. #\$ #\_))) (:lambda (name) (string-downcase (text name)))) (defrule csv-quoted-field-name (or (and #\' (* (not #\')) #\') (and #\" (* (not #\")) #\")) (:lambda (csv-field-name) (bind (((_ name _) csv-field-name)) (text name)))) (defrule csv-field-name (or csv-quoted-field-name csv-bare-field-name)) (defrule csv-source-field (and csv-field-name csv-field-options) (:destructure (name opts) `(,name ,@opts))) (defrule another-csv-source-field (and comma csv-source-field) (:lambda (source) (bind (((_ field) source)) field))) (defrule csv-source-fields (and csv-source-field (* another-csv-source-field)) (:lambda (source) (destructuring-bind (field1 fields) source (list* field1 fields)))) (defrule open-paren (and ignore-whitespace #\( ignore-whitespace) (:constant :open-paren)) (defrule close-paren (and ignore-whitespace #\) ignore-whitespace) (:constant :close-paren)) (defrule having-fields (and kw-having kw-fields) (:constant nil)) (defrule csv-source-field-list (and (? having-fields) open-paren csv-source-fields close-paren) (:lambda (source) (bind (((_ _ field-defs _) source)) field-defs))) ;; ;; csv-target-column-list ;; ;; iprange ip4r using (ip-range startIpNum endIpNum), ;; (defrule column-name csv-field-name) ; same rules here (defrule column-type csv-field-name) ; again, same rules, names only (defrule column-expression (and kw-using sexp) (:lambda (expr) (bind (((_ sexp) expr)) sexp))) (defrule csv-target-column (and column-name (? (and ignore-whitespace column-type column-expression))) (:lambda (col) (bind (((name opts) col) ((_ type expr) (or opts (list nil nil nil)))) (list name type expr)))) (defrule another-csv-target-column (and comma csv-target-column) (:lambda (source) (bind (((_ col) source)) col))) (defrule csv-target-columns (and csv-target-column (* another-csv-target-column)) (:lambda (source) (destructuring-bind (col1 cols) source (list* col1 cols)))) (defrule target-columns (and kw-target kw-columns) (:constant nil)) (defrule csv-target-column-list (and (? target-columns) open-paren csv-target-columns close-paren) (:lambda (source) (bind (((_ _ columns _) source)) columns))) ;; ;; The main command parsing ;; (defun find-encoding-by-name-or-alias (encoding) "charsets::*lisp-encodings* is an a-list of (NAME . ALIASES)..." (loop :for (name . aliases) :in (list-encodings-and-aliases) :for encoding-name := (when (or (string-equal name encoding) (member encoding aliases :test #'string-equal)) name) :until encoding-name :finally (if encoding-name (return encoding-name) (error "The encoding '~a' is unknown" encoding)))) (defrule encoding (or namestring single-quoted-string) (:lambda (encoding) (make-external-format (find-encoding-by-name-or-alias encoding)))) (defrule file-encoding (? (and kw-with kw-encoding encoding)) (:lambda (enc) (if enc (bind (((_ _ encoding) enc)) encoding) :utf-8))) (defrule first-filename-matching (and (? kw-first) kw-filename kw-matching quoted-regex) (:lambda (fm) (bind (((_ _ _ regex) fm)) ;; regex is a list with first the symbol :regex and second the regexp ;; as a string (list* :regex :first (cdr regex))))) (defrule all-filename-matching (and kw-all (or kw-filenames kw-filename) kw-matching quoted-regex) (:lambda (fm) (bind (((_ _ _ regex) fm)) ;; regex is a list with first the symbol :regex and second the regexp ;; as a string (list* :regex :all (cdr regex))))) (defrule in-directory (and kw-in kw-directory maybe-quoted-filename) (:lambda (in-d) (bind (((_ _ dir) in-d)) dir))) (defrule filename-matching (and (or first-filename-matching all-filename-matching) (? in-directory)) (:lambda (filename-matching) (bind (((matching directory) filename-matching) (directory (or directory `(:filename ,*cwd*))) ((m-type first-or-all regex) matching) ((d-type dir) directory) (root (uiop:directory-exists-p (if (uiop:absolute-pathname-p dir) dir (uiop:merge-pathnames* dir *cwd*))))) (assert (eq m-type :regex)) (assert (eq d-type :filename)) (unless root (error "Directory ~s does not exists." (uiop:native-namestring dir))) `(:regex ,first-or-all ,regex ,root)))) (defrule csv-uri (and "csv://" filename) (:lambda (source) (bind (((_ filename) source)) (make-instance 'csv-connection :spec filename)))) (defrule csv-file-source (or stdin inline http-uri csv-uri filename-matching maybe-quoted-filename) (:lambda (src) (if (typep src 'csv-connection) src (destructuring-bind (type &rest specs) src (case type (:stdin (make-instance 'csv-connection :spec src)) (:inline (make-instance 'csv-connection :spec src)) (:filename (make-instance 'csv-connection :spec src)) (:regex (make-instance 'csv-connection :spec src)) (:http (make-instance 'csv-connection :uri (first specs)))))))) (defrule get-csv-file-source-from-environment-variable (and kw-getenv name) (:lambda (p-e-v) (bind (((_ varname) p-e-v) (connstring (getenv-default varname))) (unless connstring (error "Environment variable ~s is unset." varname)) (parse 'csv-file-source connstring)))) (defrule csv-source (and kw-load kw-csv kw-from (or get-csv-file-source-from-environment-variable csv-file-source)) (:lambda (src) (bind (((_ _ _ source) src)) source))) (defun list-symbols (expression &optional s) "Return a list of the symbols used in EXPRESSION." (typecase expression (symbol (pushnew expression s)) (list (loop for e in expression for s = (list-symbols e s) finally (return (reverse s)))) (t s))) (defrule load-csv-file-optional-clauses (* (or csv-options gucs before-load after-load)) (:lambda (clauses-list) (alexandria:alist-plist clauses-list))) (defrule load-csv-file-command (and csv-source (? file-encoding) (? csv-source-field-list) target (? csv-target-column-list) load-csv-file-optional-clauses) (:lambda (command) (destructuring-bind (source encoding fields target columns clauses) command `(,source ,encoding ,fields ,target ,columns ,@clauses)))) (defun lisp-code-for-csv-dry-run (pg-db-conn) `(lambda () ;; CSV connection objects are not actually implementing the generic API ;; because they support many complex options... (the file can be a ;; pattern or standard input or inline or compressed etc). (log-message :log "DRY RUN, only checking PostgreSQL connection.") (check-connection ,pg-db-conn))) (defun lisp-code-for-loading-from-csv (csv-conn fields pg-db-conn &key (encoding :utf-8) columns gucs before after options &aux (worker-count (getf options :worker-count)) (concurrency (getf options :concurrency))) `(lambda () (let* (,@(pgsql-connection-bindings pg-db-conn gucs) ,@(batch-control-bindings options) ,@(identifier-case-binding options) (source-db (with-stats-collection ("fetch" :section :pre) (expand (fetch-file ,csv-conn))))) (progn ,(sql-code-block pg-db-conn :pre before "before load") (let ((on-error-stop (getf ',options :on-error-stop)) (truncate (getf ',options :truncate)) (disable-triggers (getf ',options :disable-triggers)) (drop-indexes (getf ',options :drop-indexes)) (max-parallel-create-index (getf ',options :max-parallel-create-index)) (source (make-instance 'pgloader.csv:copy-csv :target-db ,pg-db-conn :source source-db :target (create-table ',(pgconn-table-name pg-db-conn)) :encoding ,encoding :fields ',fields :columns ',columns ,@(remove-batch-control-option options :extras '(:on-error-stop :worker-count :concurrency :truncate :drop-indexes :disable-triggers :max-parallel-create-index))))) (pgloader.sources:copy-database source ,@ (when worker-count (list :worker-count worker-count)) ,@ (when concurrency (list :concurrency concurrency)) :on-error-stop on-error-stop :truncate truncate :drop-indexes drop-indexes :disable-triggers disable-triggers :max-parallel-create-index max-parallel-create-index)) ,(sql-code-block pg-db-conn :post after "after load"))))) (defrule load-csv-file load-csv-file-command (:lambda (command) (bind (((source encoding fields pg-db-uri columns &key options gucs before after) command)) (cond (*dry-run* (lisp-code-for-csv-dry-run pg-db-uri)) (t (lisp-code-for-loading-from-csv source fields pg-db-uri :encoding encoding :columns columns :gucs gucs :before before :after after :options options)))))) pgloader/src/parsers/command-mysql.lisp0000644000175000017500000002020413127367447020475 0ustar vagrantvagrant;;; ;;; Parse the pgloader commands grammar ;;; (in-package :pgloader.parser) ;;; ;;; MySQL options ;;; (defrule mysql-option (or option-on-error-stop option-workers option-concurrency option-batch-rows option-batch-size option-prefetch-rows option-max-parallel-create-index option-single-reader option-multiple-readers option-rows-per-range option-reindex option-truncate option-disable-triggers option-data-only option-schema-only option-include-drop option-create-tables option-create-indexes option-index-names option-reset-sequences option-foreign-keys option-identifiers-case)) (defrule mysql-options (and kw-with (and mysql-option (* (and comma mysql-option)))) (:function flatten-option-list)) ;;; ;;; Including only some tables or excluding some others ;;; (defrule including-matching (and kw-including kw-only kw-table kw-names kw-matching filter-list-matching) (:lambda (source) (bind (((_ _ _ _ _ filter-list) source)) (cons :including filter-list)))) (defrule excluding-matching (and kw-excluding kw-table kw-names kw-matching filter-list-matching) (:lambda (source) (bind (((_ _ _ _ filter-list) source)) (cons :excluding filter-list)))) ;;; ;;; Per table encoding options, because MySQL is so bad at encoding... ;;; (defrule decoding-table-as (and kw-decoding kw-table kw-names kw-matching filter-list-matching kw-as encoding) (:lambda (source) (bind (((_ _ _ _ filter-list _ encoding) source)) (cons encoding filter-list)))) (defrule decoding-tables-as (+ decoding-table-as) (:lambda (tables) (cons :decoding tables))) ;;; ;;; MySQL SET parameters, because sometimes we need that ;;; (defrule mysql-gucs (and kw-set kw-mysql kw-parameters generic-option-list) (:lambda (mygucs) (cons :mysql-gucs (fourth mygucs)))) ;;; ;;; Allow clauses to appear in any order ;;; (defrule load-mysql-optional-clauses (* (or mysql-options mysql-gucs gucs casts alter-table alter-schema materialize-views including-matching excluding-matching decoding-tables-as before-load after-load)) (:lambda (clauses-list) (alexandria:alist-plist clauses-list))) (defrule mysql-prefix "mysql://" (:constant (list :type :mysql))) (defrule mysql-dsn-dbname (and "/" (* (or (alpha-char-p character) (digit-char-p character) punct))) (:destructure (slash dbname) (declare (ignore slash)) (list :dbname (text dbname)))) (defrule mysql-uri (and mysql-prefix (? dsn-user-password) (? dsn-hostname) mysql-dsn-dbname) (:lambda (uri) (destructuring-bind (&key type user password host port dbname) (apply #'append uri) ;; Default to environment variables as described in ;; http://dev.mysql.com/doc/refman/5.0/en/environment-variables.html (declare (ignore type)) (make-instance 'mysql-connection :user (or user (getenv-default "USER")) :pass (or password (getenv-default "MYSQL_PWD")) :host (or host (getenv-default "MYSQL_HOST" "localhost")) :port (or port (parse-integer (getenv-default "MYSQL_TCP_PORT" "3306"))) :name dbname)))) (defrule get-mysql-uri-from-environment-variable (and kw-getenv name) (:lambda (p-e-v) (bind (((_ varname) p-e-v)) (let ((connstring (getenv-default varname))) (unless connstring (error "Environment variable ~s is unset." varname)) (parse 'mysql-uri connstring))))) (defrule mysql-source (and kw-load kw-database kw-from (or mysql-uri get-mysql-uri-from-environment-variable)) (:lambda (source) (bind (((_ _ _ uri) source)) uri))) (defrule load-mysql-command (and mysql-source target load-mysql-optional-clauses) (:lambda (command) (destructuring-bind (source target clauses) command `(,source ,target ,@clauses)))) ;;; LOAD DATABASE FROM mysql:// (defun lisp-code-for-mysql-dry-run (my-db-conn pg-db-conn) `(lambda () (log-message :log "DRY RUN, only checking connections.") (check-connection ,my-db-conn) (check-connection ,pg-db-conn))) (defun lisp-code-for-loading-from-mysql (my-db-conn pg-db-conn &key gucs mysql-gucs casts views before after options alter-table alter-schema ((:including incl)) ((:excluding excl)) ((:decoding decoding-as))) `(lambda () (let* ((*default-cast-rules* ',*mysql-default-cast-rules*) (*cast-rules* ',casts) (*decoding-as* ',decoding-as) (*mysql-settings* ',mysql-gucs) ,@(pgsql-connection-bindings pg-db-conn gucs) ,@(batch-control-bindings options) ,@(identifier-case-binding options) (source (make-instance 'pgloader.mysql::copy-mysql :target-db ,pg-db-conn :source-db ,my-db-conn))) ,(sql-code-block pg-db-conn :pre before "before load") (pgloader.mysql:copy-database source :including ',incl :excluding ',excl :materialize-views ',views :alter-table ',alter-table :alter-schema ',alter-schema :set-table-oids t ,@(remove-batch-control-option options)) ,(sql-code-block pg-db-conn :post after "after load")))) (defrule load-mysql-database load-mysql-command (:lambda (source) (destructuring-bind (my-db-uri pg-db-uri &key gucs mysql-gucs casts views before after options alter-table alter-schema including excluding decoding) source (cond (*dry-run* (lisp-code-for-mysql-dry-run my-db-uri pg-db-uri)) (t (lisp-code-for-loading-from-mysql my-db-uri pg-db-uri :gucs gucs :mysql-gucs mysql-gucs :casts casts :views views :before before :after after :options options :alter-table alter-table :alter-schema alter-schema :including including :excluding excluding :decoding decoding)))))) pgloader/src/parsers/command-mssql.lisp0000644000175000017500000001675713127366642020505 0ustar vagrantvagrant;;; ;;; Parse the pgloader commands grammar ;;; (in-package :pgloader.parser) ;;; ;;; INCLUDING ONLY and EXCLUDING clauses for MS SQL ;;; ;;; There's no regexp matching on MS SQL, so we're going to just use the ;;; classic LIKE support here, as documented at: ;;; ;;; http://msdn.microsoft.com/en-us/library/ms187489(SQL.90).aspx ;;; (make-option-rule create-schemas (and kw-create (? kw-no) kw-schemas)) (defrule mssql-option (or option-on-error-stop option-workers option-concurrency option-batch-rows option-batch-size option-prefetch-rows option-max-parallel-create-index option-reindex option-truncate option-disable-triggers option-data-only option-schema-only option-include-drop option-create-tables option-create-schemas option-create-indexes option-reset-sequences option-foreign-keys option-encoding option-identifiers-case)) (defrule mssql-options (and kw-with (and mssql-option (* (and comma mssql-option)))) (:function flatten-option-list)) (defrule including-in-schema (and kw-including kw-only kw-table kw-names kw-like filter-list-like kw-in kw-schema quoted-namestring) (:lambda (source) (bind (((_ _ _ _ _ filter-list _ _ schema) source)) (cons schema filter-list)))) (defrule including-like-in-schema (and including-in-schema (* including-in-schema)) (:lambda (source) (destructuring-bind (inc1 incs) source (cons :including (list* inc1 incs))))) (defrule excluding-in-schema (and kw-excluding kw-table kw-names kw-like filter-list-like kw-in kw-schema quoted-namestring) (:lambda (source) (bind (((_ _ _ _ filter-list _ _ schema) source)) (cons schema filter-list)))) (defrule excluding-like-in-schema (and excluding-in-schema (* excluding-in-schema)) (:lambda (source) (destructuring-bind (excl1 excls) source (cons :excluding (list* excl1 excls))))) ;;; ;;; Allow clauses to appear in any order ;;; (defrule load-mssql-optional-clauses (* (or mssql-options gucs casts alter-schema alter-table before-load after-load including-like-in-schema excluding-like-in-schema)) (:lambda (clauses-list) (alexandria:alist-plist clauses-list))) (defrule mssql-prefix "mssql://" (:constant (list :type :mssql))) (defrule mssql-uri (and mssql-prefix (? dsn-user-password) (? dsn-hostname) dsn-dbname) (:lambda (uri) (destructuring-bind (&key type user password host port dbname) (apply #'append uri) ;; Default to environment variables as described in ;; http://www.freetds.org/userguide/envvar.htm (declare (ignore type)) (make-instance 'mssql-connection :user (or user (getenv-default "USER")) :pass password :host (or host (getenv-default "TDSHOST" "localhost")) :port (or port (parse-integer (getenv-default "TDSPORT" "1433"))) :name dbname)))) (defrule get-mssql-uri-from-environment-variable (and kw-getenv name) (:lambda (p-e-v) (bind (((_ varname) p-e-v)) (let ((connstring (getenv-default varname))) (unless connstring (error "Environment variable ~s is unset." varname)) (parse 'mssql-uri connstring))))) (defrule mssql-source (and kw-load kw-database kw-from (or mssql-uri get-mssql-uri-from-environment-variable)) (:lambda (source) (bind (((_ _ _ uri) source)) uri))) (defrule load-mssql-command (and mssql-source target load-mssql-optional-clauses) (:lambda (command) (destructuring-bind (source target clauses) command `(,source ,target ,@clauses)))) ;;; LOAD DATABASE FROM mssql:// (defun lisp-code-for-mssql-dry-run (ms-db-conn pg-db-conn) `(lambda () ;; now is the time to load the CFFI lib we need (freetds) (log-message :log "Loading the FreeTDS shared librairy (sybdb)") (cffi:load-foreign-library 'mssql::sybdb) (log-message :log "DRY RUN, only checking connections.") (check-connection ,ms-db-conn) (check-connection ,pg-db-conn))) (defun lisp-code-for-loading-from-mssql (ms-db-conn pg-db-conn &key gucs casts before after options alter-schema alter-table including excluding) `(lambda () ;; now is the time to load the CFFI lib we need (freetds) (let (#+sbcl(sb-ext:*muffled-warnings* 'style-warning)) (cffi:load-foreign-library 'mssql::sybdb)) (let* ((*default-cast-rules* ',*mssql-default-cast-rules*) (*cast-rules* ',casts) ,@(pgsql-connection-bindings pg-db-conn gucs) ,@(batch-control-bindings options) ,@(identifier-case-binding options) (source (make-instance 'pgloader.mssql::copy-mssql :target-db ,pg-db-conn :source-db ,ms-db-conn))) ,(sql-code-block pg-db-conn :pre before "before load") (pgloader.mssql:copy-database source :including ',including :excluding ',excluding :alter-schema ',alter-schema :alter-table ',alter-table :set-table-oids t ,@(remove-batch-control-option options)) ,(sql-code-block pg-db-conn :post after "after load")))) (defrule load-mssql-database load-mssql-command (:lambda (source) (bind (((ms-db-uri pg-db-uri &key gucs casts before after alter-schema alter-table including excluding options) source)) (cond (*dry-run* (lisp-code-for-mssql-dry-run ms-db-uri pg-db-uri)) (t (lisp-code-for-loading-from-mssql ms-db-uri pg-db-uri :gucs gucs :casts casts :before before :after after :alter-schema alter-schema :alter-table alter-table :options options :including including :excluding excluding)))))) pgloader/src/parsers/command-utils.lisp0000644000175000017500000000271513047375022020464 0ustar vagrantvagrant;;; ;;; Parse the pgloader commands grammar ;;; (in-package :pgloader.parser) (defvar *cwd* nil "Parser Current Working Directory") (defvar *data-expected-inline* nil "Set to :inline when parsing an INLINE keyword in a FROM clause.") ;; ;; Some useful rules ;; (defrule single-line-comment (and "--" (* (not #\Newline)) #\Newline) (:constant :comment)) (defrule multi-line-comment (and "/*" (+ (not "*/")) "*/") (:constant :comment)) (defrule comments (or single-line-comment multi-line-comment)) (defrule keep-a-single-whitespace (+ (or #\space #\tab #\newline #\linefeed)) (:constant " ")) (defrule whitespace (+ (or #\space #\tab #\return #\newline #\linefeed comments)) (:constant 'whitespace)) (defrule ignore-whitespace (* whitespace) (:constant nil)) (defrule punct (or #\, #\- #\_) (:text t)) (defrule namestring (and (or #\_ (alpha-char-p character)) (* (or (alpha-char-p character) (digit-char-p character) punct))) (:text t)) (defrule double-quoted-namestring (and #\" namestring #\") (:destructure (open name close) (declare (ignore open close)) name)) (defrule quoted-namestring (and #\' namestring #\') (:destructure (open name close) (declare (ignore open close)) name)) (defrule name (or namestring quoted-namestring) (:text t)) (defrule trimmed-name (and ignore-whitespace name) (:destructure (whitespace name) (declare (ignore whitespace)) name)) (defrule namestring-or-regex (or quoted-namestring quoted-regex)) pgloader/src/parsers/command-parser.lisp0000644000175000017500000002660313124724171020621 0ustar vagrantvagrant;;; ;;; Now the main command, one of ;;; ;;; - LOAD FROM some files ;;; - LOAD DATABASE FROM a MySQL remote database ;;; - LOAD MESSAGES FROM a syslog daemon receiver we're going to start here ;;; (in-package #:pgloader.parser) (defrule end-of-command (and ignore-whitespace #\; ignore-whitespace) (:constant :eoc)) (defrule command (and (or load-archive load-csv-file load-fixed-cols-file load-copy-file load-dbf-file load-ixf-file load-mysql-database load-mssql-database load-sqlite-database ;; load-syslog-messages ) end-of-command) (:lambda (cmd) (bind (((command _) cmd)) command))) (defrule commands (+ command)) (defun parse-commands (commands) "Parse a command and return a LAMBDA form that takes no parameter." (parse 'commands commands)) (defun inject-inline-data-position (command position) "We have '(:inline nil) somewhere in command, have '(:inline position) instead." (loop :for s-exp :in command :when (and (typep s-exp 'md-connection) (slot-boundp s-exp 'pgloader.sources::spec) (eq :inline (first (md-spec s-exp)))) :do (setf (second (md-spec s-exp)) position) :and :collect s-exp :else :collect (if (and (consp s-exp) (listp (cdr s-exp))) (inject-inline-data-position s-exp position) s-exp))) (defun process-relative-pathnames (filename command) "Walk the COMMAND to replace relative pathname with absolute ones, merging them within the directory where we found the command FILENAME." (loop :for s-exp :in command :collect (cond ((pathnamep s-exp) (if (uiop:relative-pathname-p s-exp) (uiop:merge-pathnames* s-exp filename) s-exp)) ((and (typep s-exp 'fd-connection) (slot-boundp s-exp 'pgloader.connection::path)) (when (uiop:relative-pathname-p (fd-path s-exp)) (setf (fd-path s-exp) (uiop:merge-pathnames* (fd-path s-exp) filename))) s-exp) ((and (typep s-exp 'md-connection) (slot-boundp s-exp 'pgloader.sources::spec) (eq :filename (car (md-spec s-exp)))) (let ((path (second (md-spec s-exp)))) (if (uiop:relative-pathname-p path) (progn (setf (md-spec s-exp) `(:filename ,(uiop:merge-pathnames* path filename))) s-exp) s-exp))) (t (if (and (consp s-exp) (listp (cdr s-exp))) (process-relative-pathnames filename s-exp) s-exp))))) (defun parse-commands-from-file (maybe-relative-filename &aux (filename ;; we want a truename here (probe-file maybe-relative-filename))) "The command could be using from :inline, in which case we want to parse as much as possible then use the command against an already opened stream where we moved at the beginning of the data." (if filename (log-message :log "Parsing commands from file ~s~%" filename) (error "Can not find file: ~s" maybe-relative-filename)) (process-relative-pathnames filename (let ((*cwd* (make-pathname :defaults filename :name nil :type nil)) (*data-expected-inline* nil) (content (read-file-into-string filename))) (multiple-value-bind (commands end-commands-position) (parse 'commands content :junk-allowed t) ;; INLINE is only allowed where we have a single command in the file (if *data-expected-inline* (progn (when (= 0 end-commands-position) ;; didn't find any command, leave error reporting to esrap (parse 'commands content)) (when (and *data-expected-inline* (null end-commands-position)) (error "Inline data not found in '~a'." filename)) (when (and *data-expected-inline* (not (= 1 (length commands)))) (error (concatenate 'string "Too many commands found in '~a'.~%" "To use inline data, use a single command.") filename)) ;; now we should have a single command and inline data after that ;; replace the (:inline nil) found in the first (and only) command ;; with a (:inline position) instead (list (inject-inline-data-position (first commands) (cons filename end-commands-position)))) ;; There was no INLINE magic found in the file, reparse it so that ;; normal error processing happen (parse 'commands content)))))) ;;; ;;; Parse an URI without knowing before hand what kind of uri it is. ;;; (defvar *data-source-filename-extensions* '((:csv . ("csv" "tsv" "txt" "text")) (:copy . ("copy" "dat")) ; reject data files are .dat (:sqlite . ("sqlite" "db" "sqlite3")) (:dbf . ("db3" "dbf")) (:ixf . ("ixf")))) (defun parse-filename-for-source-type (filename) "Given just an existing filename, decide what data source might be found inside..." (multiple-value-bind (abs paths filename no-path-p) (uiop:split-unix-namestring-directory-components (uiop:native-namestring filename)) (declare (ignore abs paths no-path-p)) (let ((dotted-parts (reverse (sq:split-sequence #\. filename)))) (when (<= 2 (length dotted-parts)) (destructuring-bind (extension name-or-ext &rest parts) dotted-parts (declare (ignore parts)) (if (string-equal "tar" name-or-ext) :archive (loop :for (type . extensions) :in *data-source-filename-extensions* :when (member extension extensions :test #'string-equal) :return type))))))) (defvar *parse-rule-for-source-types* '(:csv csv-file-source :fixed fixed-file-source :copy copy-file-source :dbf dbf-file-source :ixf ixf-file-source :sqlite sqlite-uri :pgsql pgsql-uri :mysql mysql-uri :mssql mssql-uri) "A plist to associate source type and its source parsing rule.") (defun parse-source-string-for-type (type source-string) "use the parse rules as per xxx-source rules" (parse (getf *parse-rule-for-source-types* type) source-string)) (defrule source-uri (or csv-uri fixed-uri copy-uri dbf-uri ixf-uri sqlite-db-uri pgsql-uri mysql-uri mssql-uri filename-or-http-uri)) (defun parse-source-string (source-string) (let ((source (parse 'source-uri source-string))) (cond ((typep source 'connection) source) (t (destructuring-bind (kind url) source (let ((type (case kind (:filename (parse-filename-for-source-type url)) (:http (parse-filename-for-source-type (puri:uri-path (puri:parse-uri url))))))) (when type (parse-source-string-for-type type source-string)))))))) (defun parse-target-string (target-string) (parse 'pgsql-uri target-string)) ;;; ;;; Command line accumulative options parser ;;; (defun parse-cli-gucs (gucs) "Parse PostgreSQL GUCs as per the SET clause when we get them from the CLI." (loop :for guc :in gucs :collect (parse 'generic-option guc))) (defrule dbf-type-name (or "dbf" "db3") (:constant "dbf")) (defrule sqlite-type-name (or "sqlite3" "sqlite") (:constant "sqlite")) (defrule cli-type (or "csv" "fixed" "copy" dbf-type-name sqlite-type-name "ixf" "mysql" "mssql") (:text t)) (defun parse-cli-type (type) "Parse the --type option" (when type (intern (string-upcase (parse 'cli-type type)) (find-package "KEYWORD")))) (defun parse-cli-encoding (encoding) "Parse the --encoding option" (if encoding (make-external-format (find-encoding-by-name-or-alias encoding)) :utf-8)) (defun parse-cli-fields (type fields) "Parse the --fields option." (loop :for field :in fields :append (parse (case type (:csv 'csv-source-fields) (:fixed 'fixed-source-fields) (:copy 'copy-source-fields)) field))) (defun parse-cli-options (type options) "Parse options as per the WITH clause when we get them from the CLI." (alexandria:alist-plist (loop :for option :in options :collect (parse (ecase type (:csv 'csv-option) (:fixed 'fixed-option) (:copy 'copy-option) (:dbf 'dbf-option) (:ixf 'ixf-option) (:sqlite 'sqlite-option) (:mysql 'mysql-option) (:mssql 'mysql-option)) option)))) (defun parse-cli-casts (casts) "Parse additional CAST rules when we get them from the CLI." (loop :for cast :in casts :collect (parse 'cast-rule cast))) (defun parse-sql-file (filename) "Parse FILENAME for SQL statements" (when filename (log-message :notice "reading SQL queries from ~s" filename) (pgloader.sql:read-queries (probe-file filename)))) ;;; ;;; Helper for regression testing ;;; (defrule pg-db-uri-from-command (or pg-db-uri-from-files pg-db-uri-from-source-target pg-db-uri-from-source-and-encoding)) (defrule pg-db-uri-from-files (or load-csv-file-command load-copy-file-command load-fixed-cols-file-command) (:lambda (command) (destructuring-bind (source encoding fields pg-db-uri columns &key gucs &allow-other-keys) command (declare (ignore source encoding fields columns)) (list pg-db-uri gucs)))) (defrule pg-db-uri-from-source-target (or load-ixf-command load-sqlite-command load-mysql-command load-mssql-command) (:lambda (command) (destructuring-bind (source pg-db-uri &key gucs &allow-other-keys) command (declare (ignore source)) (list pg-db-uri gucs)))) (defrule pg-db-uri-from-source-and-encoding (or load-dbf-command) (:lambda (command) (destructuring-bind (source encoding pg-db-uri &key gucs &allow-other-keys) command (declare (ignore source encoding)) (list pg-db-uri gucs)))) (defun parse-target-pg-db-uri (command-file) "Partially parse COMMAND-FILE and return its target connection string." (let* ((content (read-file-into-string command-file))) (parse 'pg-db-uri-from-command content :junk-allowed t))) pgloader/src/parsers/README.md0000644000175000017500000000106213047375022016270 0ustar vagrantvagrantThe pgloader parser reads the command language (a pgloader specific DSL) and produces lisp code as its output. The lisp code is then compiled at run-time and executed. The generated lisp-code uses the generic API defined in src/sources.lisp and creates objects specifics to the kind of source that is being loaded. It is possible to see the generated code for study or debug: PARSER> (pprint (with-monitor () (parse-commands-from-file "/Users/dim/dev/pgloader/test/fixed.load"))) pgloader/src/parsers/command-dbf.lisp0000644000175000017500000001156713127367214020067 0ustar vagrantvagrant#| LOAD DBF FROM '/Users/dim/Downloads/comsimp2013.dbf' INTO postgresql://dim@localhost:54393/dim?comsimp2013 WITH truncate, create table, table name = 'comsimp2013' |# (in-package #:pgloader.parser) (defrule option-create-table (and kw-create kw-table) (:constant (cons :create-tables t))) (defrule quoted-table-name (and #\' (or qualified-table-name namestring) #\') (:lambda (qtn) (bind (((_ name _) qtn)) name))) (defrule option-table-name (and kw-table kw-name equal-sign quoted-table-name) (:lambda (tn) (bind (((_ _ _ table-name) tn)) (cons :table-name (text table-name))))) (defrule dbf-option (or option-on-error-stop option-workers option-concurrency option-batch-rows option-batch-size option-prefetch-rows option-truncate option-disable-triggers option-data-only option-schema-only option-include-drop option-create-table option-create-tables option-table-name option-identifiers-case)) (defrule dbf-options (and kw-with (and dbf-option (* (and comma dbf-option)))) (:function flatten-option-list)) (defrule dbf-uri (and "dbf://" filename) (:lambda (source) (bind (((_ filename) source)) (make-instance 'dbf-connection :path (second filename))))) (defrule dbf-file-source (or dbf-uri filename-or-http-uri) (:lambda (conn-or-path-or-uri) (if (typep conn-or-path-or-uri 'dbf-connection) conn-or-path-or-uri (destructuring-bind (kind url) conn-or-path-or-uri (case kind (:filename (make-instance 'dbf-connection :path url)) (:http (make-instance 'dbf-connection :uri url))))))) (defrule dbf-source (and kw-load kw-dbf kw-from dbf-file-source) (:lambda (src) (bind (((_ _ _ source) src)) source))) (defrule load-dbf-optional-clauses (* (or dbf-options gucs before-load after-load)) (:lambda (clauses-list) (alexandria:alist-plist clauses-list))) ;;; dbf defaults to ascii rather than utf-8 (defrule dbf-file-encoding (? (and kw-with kw-encoding encoding)) (:lambda (enc) (if enc (bind (((_ _ encoding) enc)) encoding) :ascii))) (defrule load-dbf-command (and dbf-source (? dbf-file-encoding) target load-dbf-optional-clauses) (:lambda (command) (destructuring-bind (source encoding target clauses) command `(,source ,encoding ,target ,@clauses)))) (defun lisp-code-for-dbf-dry-run (dbf-db-conn pg-db-conn) `(lambda () (let ((source-db (expand (fetch-file ,dbf-db-conn)))) (check-connection source-db) (check-connection ,pg-db-conn)))) (defun lisp-code-for-loading-from-dbf (dbf-db-conn pg-db-conn &key (encoding :ascii) gucs before after options) `(lambda () (let* (,@(pgsql-connection-bindings pg-db-conn gucs) ,@(batch-control-bindings options) ,@(identifier-case-binding options) (table (create-table ',(pgconn-table-name pg-db-conn))) (source-db (with-stats-collection ("fetch" :section :pre) (expand (fetch-file ,dbf-db-conn)))) (source (make-instance 'pgloader.db3:copy-db3 :target-db ,pg-db-conn :encoding ,encoding :source-db source-db :target table))) ,(sql-code-block pg-db-conn :pre before "before load") (pgloader.sources:copy-database source ,@(remove-batch-control-option options) :create-indexes nil :foreign-keys nil :reset-sequences nil) ,(sql-code-block pg-db-conn :post after "after load")))) (defrule load-dbf-file load-dbf-command (:lambda (command) (bind (((source encoding pg-db-uri &key options gucs before after) command)) (cond (*dry-run* (lisp-code-for-dbf-dry-run source pg-db-uri)) (t (lisp-code-for-loading-from-dbf source pg-db-uri :encoding encoding :gucs gucs :before before :after after :options options)))))) pgloader/src/parsers/date-format.lisp0000644000175000017500000001272713047375022020117 0ustar vagrantvagrant;;; ;;; Parse PostgreSQL to_char() date format strings and transform them into a ;;; lisp date format that the parse-date-string function knows how to deal ;;; with. ;;; ;;; http://www.postgresql.org/docs/current/static/functions-formatting.html#FUNCTIONS-FORMATTING-DATETIME-TABLE ;;; (in-package #:pgloader.parse-date) (defvar *century* 2000) (defun parse-date-string (date-string &optional (format '((:year 0 4) (:month 4 6) (:day 6 8) (:hour 8 10) (:minute 10 12) (:seconds 12 14) (:msecs nil nil) (:usecs nil nil) (:am nil nil) (:pm nil nil)))) "Apply this function when input date in like '20041002152952'" ;; only process non-zero dates (declare (type (or null string) date-string)) (cond ((null date-string) nil) ((string= date-string "") nil) (t (destructuring-bind (&key year month day hour minute seconds am pm msecs usecs &allow-other-keys) (loop :for (name start end) :in format :for ragged-end := (when end (cond ((member name '(:msecs :usecs)) ;; take any number of digits up to ;; the specified field lenght ;; (less digits are allowed) (min end (length date-string))) (t end))) :when (and start end) :append (list name (subseq date-string start ragged-end))) (if (or (string= year "0000") (string= month "00") (string= day "00")) nil (with-output-to-string (s) ;; when given a full date format, format the date part (when (and (assoc :year format) (assoc :month format) (assoc :day format)) (format s "~a-~a-~a " (let ((yint (parse-integer year))) ;; process 2-digits year formats specially (if (<= (length year) 2) (+ *century* yint) yint)) month day)) ;; now format the time part (format s "~a:~a:~a" (if hour (let ((hint (parse-integer hour))) (cond ((and am (= hint 12)) "00") ((and pm (= hint 12)) "12") ((and pm (< hint 12)) (+ hint 12)) (t hour))) "00") (or minute "00") (or seconds "00")) ;; and maybe format the micro seconds part (if usecs (format s ".~a" usecs) (when msecs (format s ".~a" msecs))))))))) ;;; ;;; Parse the date format ;;; YYYY-MM-DD HH24-MI-SS ;;; (defvar *offset* 0) (defun parse-date-format (format-string) "Parse a given format string and return a format specification for parse-date-string" (let ((*offset* 0)) (remove nil (parse 'format-string format-string)))) (defrule format-string (* (or year month day hour ampm minute seconds milliseconds microseconds noise))) (defrule noise (+ (or #\: #\- #\. #\Space #\* #\# #\@ #\/ #\\ "T")) (:lambda (x) (incf *offset* (length (text x))) nil)) (defrule year (or year4 year3 year2)) (defrule year4 "YYYY" (:lambda (x) (build-format-spec x :year 4))) (defrule year3 "YYY" (:lambda (x) (build-format-spec x :year 3))) (defrule year2 "YY" (:lambda (x) (build-format-spec x :year 2))) (defrule month mm) (defrule mm "MM" (:lambda (x) (build-format-spec x :month 2))) (defrule day dd) (defrule dd "DD" (:lambda (x) (build-format-spec x :day 2))) (defrule hour (or hh24 hh12 hh)) (defrule hh "HH" (:lambda (x) (build-format-spec x :hour 2))) (defrule hh12 "HH12" (:lambda (x) (build-format-spec x :hour 2))) (defrule hh24 "HH24" (:lambda (x) (build-format-spec x :hour 2))) (defrule ampm (or am pm am-dot pm-dot)) (defrule am (or "AM" "am" ) (:lambda (x) (build-format-spec x :am 2))) (defrule am-dot (or "a.m." "A.M.") (:lambda (x) (build-format-spec x :am 4))) (defrule pm (or "PM" "pm") (:lambda (x) (build-format-spec x :pm 2))) (defrule pm-dot (or "p.m." "P.M.") (:lambda (x) (build-format-spec x :pm 4))) (defrule minute mi) (defrule mi "MI" (:lambda (x) (build-format-spec x :minute 2))) (defrule seconds ss) (defrule ss "SS" (:lambda (x) (build-format-spec x :seconds 2))) (defrule milliseconds ms) (defrule ms "MS" (:lambda (x) (build-format-spec x :msecs 4))) (defrule microseconds us) (defrule us "US" (:lambda (x) (build-format-spec x :usecs 6))) (defun build-format-spec (format-string part len) (declare (ignore format-string)) (prog1 (list part *offset* (+ *offset* len)) (incf *offset* len))) pgloader/src/parsers/command-regexp.lisp0000644000175000017500000000267713047375022020625 0ustar vagrantvagrant;;; ;;; Parse the pgloader commands grammar ;;; (in-package :pgloader.parser) ;;; ;;; Regular Expression support, quoted as-you-like ;;; (defun process-quoted-regex (pr) "Helper function to process different kinds of quotes for regexps" (bind (((_ regex _) pr)) (list :regex (text regex)))) (defrule single-quoted-regex (and #\' (+ (not #\')) #\') (:function process-quoted-regex)) (defrule double-quoted-regex (and #\" (+ (not #\")) #\") (:function process-quoted-regex)) (defrule parens-quoted-regex (and #\( (+ (not #\))) #\)) (:function process-quoted-regex)) (defrule braces-quoted-regex (and #\{ (+ (not #\})) #\}) (:function process-quoted-regex)) (defrule chevron-quoted-regex (and #\< (+ (not #\>)) #\>) (:function process-quoted-regex)) (defrule brackets-quoted-regex (and #\[ (+ (not #\])) #\]) (:function process-quoted-regex)) (defrule slash-quoted-regex (and #\/ (+ (not #\/)) #\/) (:function process-quoted-regex)) (defrule pipe-quoted-regex (and #\| (+ (not #\|)) #\|) (:function process-quoted-regex)) (defrule sharp-quoted-regex (and #\# (+ (not #\#)) #\#) (:function process-quoted-regex)) (defrule quoted-regex (and "~" (or single-quoted-regex double-quoted-regex parens-quoted-regex braces-quoted-regex chevron-quoted-regex brackets-quoted-regex slash-quoted-regex pipe-quoted-regex sharp-quoted-regex)) (:lambda (qr) (bind (((_ regex) qr)) regex))) pgloader/src/parsers/command-copy.lisp0000644000175000017500000001722513124541514020275 0ustar vagrantvagrant;;; ;;; LOAD COPY FILE ;;; ;;; That has lots in common with CSV, so we share a fair amount of parsing ;;; rules with the CSV case. ;;; (in-package #:pgloader.parser) (defrule copy-source-field csv-field-name (:lambda (field-name) (list field-name))) (defrule another-copy-source-field (and comma copy-source-field) (:lambda (source) (bind (((_ field) source)) field))) (defrule copy-source-fields (and copy-source-field (* another-copy-source-field)) (:lambda (source) (destructuring-bind (field1 fields) source (list* field1 fields)))) (defrule copy-source-field-list (and open-paren copy-source-fields close-paren) (:lambda (source) (bind (((_ field-defs _) source)) field-defs))) (defrule option-delimiter (and kw-delimiter separator) (:lambda (delimiter) (destructuring-bind (kw sep) delimiter (declare (ignore kw)) (cons :delimiter sep)))) (defrule option-null (and kw-null quoted-string) (:destructure (kw null) (declare (ignore kw)) (cons :null-as null))) (defrule copy-option (or option-on-error-stop option-workers option-concurrency option-batch-rows option-batch-size option-prefetch-rows option-max-parallel-create-index option-truncate option-drop-indexes option-disable-triggers option-identifiers-case option-skip-header option-delimiter option-null)) (defrule copy-options (and kw-with (and copy-option (* (and comma copy-option)))) (:function flatten-option-list)) (defrule copy-uri (and "copy://" filename) (:lambda (source) (bind (((_ filename) source)) (make-instance 'copy-connection :spec filename)))) (defrule copy-file-source (or stdin inline http-uri copy-uri filename-matching maybe-quoted-filename) (:lambda (src) (if (typep src 'copy-connection) src (destructuring-bind (type &rest specs) src (case type (:stdin (make-instance 'copy-connection :spec src)) (:inline (make-instance 'copy-connection :spec src)) (:filename (make-instance 'copy-connection :spec src)) (:regex (make-instance 'copy-connection :spec src)) (:http (make-instance 'copy-connection :uri (first specs)))))))) (defrule get-copy-file-source-from-environment-variable (and kw-getenv name) (:lambda (p-e-v) (bind (((_ varname) p-e-v) (connstring (getenv-default varname))) (unless connstring (error "Environment variable ~s is unset." varname)) (parse 'copy-file-source connstring)))) (defrule copy-source (and kw-load kw-copy kw-from (or get-copy-file-source-from-environment-variable copy-file-source)) (:lambda (src) (bind (((_ _ _ source) src)) source))) (defrule load-copy-file-optional-clauses (* (or copy-options gucs before-load after-load)) (:lambda (clauses-list) (alexandria:alist-plist clauses-list))) (defrule load-copy-file-command (and copy-source (? file-encoding) (? copy-source-field-list) target (? csv-target-column-list) load-copy-file-optional-clauses) (:lambda (command) (destructuring-bind (source encoding fields target columns clauses) command `(,source ,encoding ,fields ,target ,columns ,@clauses)))) (defun lisp-code-for-loading-from-copy (copy-conn fields pg-db-conn &key (encoding :utf-8) columns gucs before after options &aux (worker-count (getf options :worker-count)) (concurrency (getf options :concurrency))) `(lambda () (let* (,@(pgsql-connection-bindings pg-db-conn gucs) ,@(batch-control-bindings options) ,@(identifier-case-binding options) (source-db (with-stats-collection ("fetch" :section :pre) (expand (fetch-file ,copy-conn))))) (progn ,(sql-code-block pg-db-conn :pre before "before load") (let ((on-error-stop (getf ',options :on-error-stop)) (truncate (getf ',options :truncate)) (disable-triggers (getf ',options :disable-triggers)) (drop-indexes (getf ',options :drop-indexes)) (max-parallel-create-index (getf ',options :max-parallel-create-index)) (source (make-instance 'pgloader.copy:copy-copy :target-db ,pg-db-conn :source source-db :target (create-table ',(pgconn-table-name pg-db-conn)) :encoding ,encoding :fields ',fields :columns ',columns ,@(remove-batch-control-option options :extras '(:on-error-stop :worker-count :concurrency :truncate :drop-indexes :disable-triggers :max-parallel-create-index))))) (pgloader.sources:copy-database source ,@ (when worker-count (list :worker-count worker-count)) ,@ (when concurrency (list :concurrency concurrency)) :on-error-stop on-error-stop :truncate truncate :drop-indexes drop-indexes :disable-triggers disable-triggers :max-parallel-create-index max-parallel-create-index)) ,(sql-code-block pg-db-conn :post after "after load"))))) (defrule load-copy-file load-copy-file-command (:lambda (command) (bind (((source encoding fields pg-db-uri columns &key options gucs before after) command)) (cond (*dry-run* (lisp-code-for-csv-dry-run pg-db-uri)) (t (lisp-code-for-loading-from-copy source fields pg-db-uri :encoding encoding :columns columns :gucs gucs :before before :after after :options options)))))) pgloader/src/parsers/command-alter-table.lisp0000644000175000017500000000641013054343051021507 0ustar vagrantvagrant ;;; ;;; ALTER TABLE allows to change some of their properties while migrating ;;; from a source to PostgreSQL, currently only takes care of the schema. ;;; (in-package #:pgloader.parser) (defrule match-rule-target-regex quoted-regex (:lambda (re) (make-regex-match-rule :target (second re)))) (defrule match-rule-target-string quoted-namestring (:lambda (s) (make-string-match-rule :target s))) (defrule match-rule-target (or match-rule-target-string match-rule-target-regex)) (defrule another-match-rule-target (and comma match-rule-target) (:lambda (x) (bind (((_ target) x)) target))) (defrule filter-list-matching (and match-rule-target (* another-match-rule-target)) (:lambda (source) (destructuring-bind (filter1 filters) source (list* filter1 filters)))) (defrule alter-table-names-matching (and kw-alter kw-table kw-names kw-matching filter-list-matching) (:lambda (alter-table) (bind (((_ _ _ _ match-rule-target-list) alter-table)) match-rule-target-list))) (defrule in-schema (and kw-in kw-schema quoted-namestring) (:function third)) (defrule rename-to (and kw-rename kw-to quoted-namestring) (:lambda (stmt) (bind (((_ _ new-name) stmt)) (list #'pgloader.catalog::alter-table-rename new-name)))) (defrule set-schema (and kw-set kw-schema quoted-namestring) (:lambda (stmt) (bind (((_ _ schema) stmt)) (list #'pgloader.catalog::alter-table-set-schema schema)))) (defrule set-storage-parameters (and kw-set #\( generic-option-list #\)) (:lambda (stmt) (bind (((_ _ parameters _) stmt)) (list #'pgloader.catalog::alter-table-set-storage-parameters parameters)))) (defrule alter-table-action (or rename-to set-schema set-storage-parameters)) (defrule alter-table-command (and alter-table-names-matching (? in-schema) alter-table-action) (:lambda (alter-table-command) (destructuring-bind (rule-list schema action) alter-table-command (loop :for rule :in rule-list :collect (make-match-rule :rule rule :schema schema :action (first action) :args (rest action)))))) (defrule alter-table (+ (and alter-table-command ignore-whitespace)) (:lambda (alter-table-command-list) (cons :alter-table (loop :for (command ws) :in alter-table-command-list :collect command)))) ;;; ;;; ALTER SCHEMA ... RENAME TO ... ;;; ;;; Useful mainly for MS SQL at the moment ;;; (defrule alter-schema-rename-to (and kw-alter kw-schema quoted-namestring kw-rename kw-to quoted-namestring) (:lambda (alter-schema-command) (bind (((_ _ current-name _ _ new-name) alter-schema-command)) (pgloader.catalog::make-match-rule :rule (make-string-match-rule :target current-name) :action #'pgloader.catalog::alter-schema-rename :args (list new-name))))) ;;; currently we only support a single ALTER SCHEMA variant (defrule alter-schema alter-schema-rename-to (:lambda (alter-schema-rename-to) (cons :alter-schema (list (list alter-schema-rename-to))))) pgloader/src/parsers/command-options.lisp0000644000175000017500000002110613126540542021011 0ustar vagrantvagrant;;; ;;; Parsing GUCs and WITH options for loading from MySQL and from file. ;;; (in-package :pgloader.parser) (defun optname-char-p (char) (and (or (alphanumericp char) (char= char #\-) ; support GUCs (char= char #\_)) ; support GUCs (not (char= char #\Space)))) (defrule optname-element (* (optname-char-p character))) (defrule another-optname-element (and keep-a-single-whitespace optname-element)) (defrule optname (and optname-element (* another-optname-element)) (:lambda (source) (string-trim " " (text source)))) (defun optvalue-char-p (char) (not (member char '(#\, #\; #\=) :test #'char=))) (defrule optvalue (+ (optvalue-char-p character)) (:text t)) (defrule equal-sign (and (* whitespace) #\= (* whitespace)) (:constant :equal)) (defrule option-workers (and kw-workers equal-sign (+ (digit-char-p character))) (:lambda (workers) (bind (((_ _ nb) workers)) (cons :worker-count (parse-integer (text nb)))))) (defrule option-concurrency (and kw-concurrency equal-sign (+ (digit-char-p character))) (:lambda (concurrency) (bind (((_ _ nb) concurrency)) (cons :concurrency (parse-integer (text nb)))))) (defrule option-max-parallel-create-index (and kw-max kw-parallel kw-create kw-index equal-sign (+ (digit-char-p character))) (:lambda (opt) (cons :max-parallel-create-index (parse-integer (text (sixth opt)))))) (defrule option-batch-rows (and kw-batch kw-rows equal-sign (+ (digit-char-p character))) (:lambda (batch-rows) (bind (((_ _ _ nb) batch-rows)) (cons :batch-rows (parse-integer (text nb)))))) (defrule byte-size-multiplier (or #\k #\M #\G #\T #\P) (:lambda (multiplier) (case (aref multiplier 0) (#\k 10) (#\M 20) (#\G 30) (#\T 40) (#\P 50)))) (defrule byte-size-unit (and ignore-whitespace (? byte-size-multiplier) #\B) (:lambda (unit) (bind (((_ &optional (multiplier 1) _) unit)) (expt 2 multiplier)))) (defrule batch-size (and (+ (digit-char-p character)) byte-size-unit) (:lambda (batch-size) (destructuring-bind (nb unit) batch-size (* (parse-integer (text nb)) unit)))) (defrule option-batch-size (and kw-batch kw-size equal-sign batch-size) (:lambda (batch-size) (bind (((_ _ _ val) batch-size)) (cons :batch-size val)))) ;;; deprecated, but still accept it in the parsing (defrule option-prefetch-rows (and (or (and kw-batch kw-concurrency) (and kw-prefetch kw-rows)) equal-sign (+ (digit-char-p character))) (:lambda (prefetch-rows) (bind (((_ _ nb) prefetch-rows)) (cons :prefetch-rows (parse-integer (text nb)))))) (defrule option-rows-per-range (and kw-rows kw-per kw-range equal-sign (+ (digit-char-p character))) (:lambda (rows-per-range) (cons :rows-per-range (parse-integer (text (fifth rows-per-range)))))) (defun batch-control-bindings (options) "Generate the code needed to add batch-control" `((*copy-batch-rows* (or ,(getf options :batch-rows) *copy-batch-rows*)) (*copy-batch-size* (or ,(getf options :batch-size) *copy-batch-size*)) (*prefetch-rows* (or ,(getf options :prefetch-rows) *prefetch-rows*)) (*rows-per-range* (or ,(getf options :rows-per-range) *rows-per-range*)))) (defun identifier-case-binding (options) "Generate the code needed to bind *identifer-case* to the proper value." `((*identifier-case* (or ,(getf options :identifier-case) *identifier-case*)))) (defun remove-batch-control-option (options &key (option-list '(:batch-rows :batch-size :prefetch-rows :rows-per-range :identifier-case)) extras) "Given a list of options, remove the generic ones that should already have been processed." (loop :for (k v) :on options :by #'cddr :unless (member k (append option-list extras)) :append (list k v))) (defmacro make-option-rule (name rule &optional option) "Generates a rule named NAME to parse RULE and return OPTION." (let* ((bindings (loop for element in rule unless (member element '(and or)) collect (if (and (typep element 'list) (eq '? (car element))) 'no (gensym)))) (ignore (loop for b in bindings unless (eq 'no b) collect b)) (option-name (intern (string-upcase (format nil "option-~a" name)))) (option (or option (intern (symbol-name name) :keyword)))) `(defrule ,option-name ,rule (:destructure ,bindings (declare (ignore ,@ignore)) (cons ,option (null no)))))) (make-option-rule include-drop (and kw-include (? kw-no) kw-drop)) (make-option-rule truncate (and (? kw-no) kw-truncate)) (make-option-rule disable-triggers (and kw-disable (? kw-no) kw-triggers)) (make-option-rule drop-indexes (and kw-drop (? kw-no) kw-indexes)) (make-option-rule create-tables (and kw-create (? kw-no) kw-tables)) (make-option-rule create-indexes (and kw-create (? kw-no) kw-indexes)) (make-option-rule reset-sequences (and kw-reset (? kw-no) kw-sequences)) (make-option-rule foreign-keys (and (? kw-no) kw-foreign kw-keys)) (defrule option-reindex (and kw-drop kw-indexes) (:constant (cons :reindex t))) (defrule option-single-reader (and kw-single kw-reader kw-per kw-thread) (:constant (cons :multiple-readers nil))) (defrule option-multiple-readers (and kw-multiple (or kw-readers kw-reader) kw-per kw-thread) (:constant (cons :multiple-readers t))) (defrule option-schema-only (and kw-schema kw-only) (:constant (cons :schema-only t))) (defrule option-data-only (and kw-data kw-only) (:constant (cons :data-only t))) (defrule option-on-error-stop (and kw-on kw-error kw-stop) (:constant (cons :on-error-stop t))) (defrule option-identifiers-case (and (or kw-downcase kw-quote) kw-identifiers) (:lambda (id-case) (bind (((action _) id-case)) (cons :identifier-case action)))) (defrule option-index-names (and (or kw-preserve kw-uniquify) kw-index kw-names) (:lambda (preserve-or-uniquify) (bind (((action _ _) preserve-or-uniquify)) (cons :index-names action)))) (defrule option-encoding (and kw-encoding encoding) (:lambda (enc) (cons :encoding (if enc (destructuring-bind (kw-encoding encoding) enc (declare (ignore kw-encoding)) encoding) :utf-8)))) (defrule comma (and ignore-whitespace #\, ignore-whitespace) (:constant :comma)) (defun flatten-option-list (with-option-list) "Flatten given WITH-OPTION-LIST into a flat plist: Input: (:with ((:INCLUDE-DROP . T) ((:COMMA (:CREATE-TABLES . T)) (:COMMA (:CREATE-INDEXES . T)) (:COMMA (:RESET-SEQUENCES . T))))) Output: (:INCLUDE-DROP T :CREATE-TABLES T :CREATE-INDEXES T :RESET-SEQUENCES T)" (destructuring-bind (with option-list) with-option-list (declare (ignore with)) (cons :options (alexandria:alist-plist (append (list (first option-list)) (loop :for node :in (second option-list) ;; bypass :comma :append (cdr node))))))) ;;; ;;; PostgreSQL GUCs, another kind of options ;;; ;; we don't validate GUCs, that's PostgreSQL job. (defrule generic-optname optname-element (:text t)) (defrule generic-value (and #\' (* (not #\')) #\') (:lambda (quoted) (destructuring-bind (open value close) quoted (declare (ignore open close)) (text value)))) (defrule generic-option (and generic-optname (or equal-sign kw-to) generic-value) (:lambda (source) (bind (((name _ value) source)) (cons name value)))) (defrule another-generic-option (and comma generic-option) (:lambda (source) (bind (((_ option) source)) option))) (defrule generic-option-list (and generic-option (* another-generic-option)) (:lambda (source) (destructuring-bind (opt1 opts) source ;; here we want an alist (list* opt1 opts)))) (defrule gucs (and kw-set (? (and kw-postgresql kw-parameters)) generic-option-list) (:lambda (source) (bind (((_ _ gucs) source)) (cons :gucs gucs)))) pgloader/src/parsers/command-ixf.lisp0000644000175000017500000001067613124541561020116 0ustar vagrantvagrant#| LOAD IXF FROM '/Users/dim/Downloads/comsimp2013.ixf' INTO postgresql://dim@localhost:54393/dim?comsimp2013 WITH truncate, create table, table name = 'comsimp2013' |# (in-package #:pgloader.parser) (defrule tz-utc (~ "UTC") (:constant local-time:+utc-zone+)) (defrule tz-gmt (~ "GMT") (:constant local-time:+gmt-zone+)) (defrule tz-name (and #\' (+ (not #\')) #\') (:lambda (tzn) (bind (((_ chars _) tzn)) (local-time:reread-timezone-repository) (local-time:find-timezone-by-location-name (text chars))))) (defrule option-timezone (and kw-timezone (or tz-utc tz-gmt tz-name)) (:lambda (tzopt) (bind (((_ tz) tzopt)) (cons :timezone tz)))) (defrule ixf-option (or option-on-error-stop option-workers option-concurrency option-batch-rows option-batch-size option-prefetch-rows option-truncate option-disable-triggers option-identifiers-case option-data-only option-schema-only option-include-drop option-create-table option-create-tables option-table-name option-timezone)) (defrule ixf-options (and kw-with (and ixf-option (* (and comma ixf-option)))) (:function flatten-option-list)) (defrule ixf-uri (and "ixf://" filename) (:lambda (source) (bind (((_ filename) source)) (make-instance 'ixf-connection :path (second filename))))) (defrule ixf-file-source (or ixf-uri filename-or-http-uri) (:lambda (conn-or-path-or-uri) (if (typep conn-or-path-or-uri 'ixf-connection) conn-or-path-or-uri (destructuring-bind (kind url) conn-or-path-or-uri (case kind (:filename (make-instance 'ixf-connection :path url)) (:http (make-instance 'ixf-connection :uri url))))))) (defrule ixf-source (and kw-load kw-ixf kw-from ixf-file-source) (:lambda (src) (bind (((_ _ _ source) src)) source))) (defrule load-ixf-optional-clauses (* (or ixf-options gucs before-load after-load)) (:lambda (clauses-list) (alexandria:alist-plist clauses-list))) (defrule load-ixf-command (and ixf-source target load-ixf-optional-clauses) (:lambda (command) (destructuring-bind (source target clauses) command `(,source ,target ,@clauses)))) (defun lisp-code-for-loading-from-ixf (ixf-db-conn pg-db-conn &key gucs before after options) `(lambda () (let* (,@(pgsql-connection-bindings pg-db-conn gucs) ,@(batch-control-bindings options) ,@(identifier-case-binding options) (timezone (getf ',options :timezone)) (table-name (create-table ',(pgconn-table-name pg-db-conn))) (source-db (with-stats-collection ("fetch" :section :pre) (expand (fetch-file ,ixf-db-conn)))) (source (make-instance 'pgloader.ixf:copy-ixf :target-db ,pg-db-conn :source-db source-db :target table-name :timezone timezone))) ,(sql-code-block pg-db-conn :pre before "before load") (pgloader.sources:copy-database source ,@(remove-batch-control-option options :extras '(:timezone)) :foreign-keys nil :reset-sequences nil) ,(sql-code-block pg-db-conn :post after "after load")))) (defrule load-ixf-file load-ixf-command (:lambda (command) (bind (((source pg-db-uri &key options gucs before after) command)) (cond (*dry-run* (lisp-code-for-csv-dry-run pg-db-uri)) (t (lisp-code-for-loading-from-ixf source pg-db-uri :gucs gucs :before before :after after :options options)))))) pgloader/src/parsers/command-sexp.lisp0000644000175000017500000000251513047375022020301 0ustar vagrantvagrant;;; ;;; Parse user given s-expressions in commands ;;; (in-package #:pgloader.parser) (defun not-doublequote (char) (not (eql #\" char))) (defun symbol-character-p (character) (not (member character '(#\Space #\( #\))))) (defun symbol-first-character-p (character) (and (symbol-character-p character) (not (member character '(#\+ #\-))))) (defrule sexp-symbol (and (symbol-first-character-p character) (* (symbol-character-p character))) (:lambda (schars) (pgloader.transforms:intern-symbol (text schars) '(("nil" . cl:nil) ("precision" . pgloader.transforms::precision) ("scale" . pgloader.transforms::scale))))) (defrule sexp-string-char (or (not-doublequote character) (and #\\ #\"))) (defrule sexp-string (and #\" (* sexp-string-char) #\") (:destructure (q1 string q2) (declare (ignore q1 q2)) (text string))) (defrule sexp-integer (+ (or "0" "1" "2" "3" "4" "5" "6" "7" "8" "9")) (:lambda (list) (parse-integer (text list) :radix 10))) (defrule sexp-list (and open-paren sexp (* sexp) close-paren) (:destructure (open car cdr close) (declare (ignore open close)) (cons car cdr))) (defrule sexp-atom (and ignore-whitespace (or sexp-string sexp-integer sexp-symbol)) (:lambda (atom) (bind (((_ a) atom)) a))) (defrule sexp (or sexp-atom sexp-list)) pgloader/src/parsers/command-source.lisp0000644000175000017500000000377713121231057020625 0ustar vagrantvagrant;;; ;;; Source parsing ;;; ;;; Source is either a local filename, stdin, a MySQL connection with a ;;; table-name, or an http uri. ;;; (in-package :pgloader.parser) ;; parsing filename (defun filename-character-p (char) (or (member char #.(quote (coerce "/\\:.-_!@#$%^&*()" 'list))) (alphanumericp char))) (defrule stdin (or "-" (~ "stdin")) (:constant (list :stdin nil))) (defrule inline (~ "inline") (:lambda (i) (declare (ignore i)) (setf *data-expected-inline* :inline) (list :inline nil))) (defrule filename (* (filename-character-p character)) (:lambda (f) (list :filename (parse-namestring (coerce f 'string))))) (defrule quoted-filename (and #\' (+ (not #\')) #\') (:lambda (q-f) (bind (((_ f _) q-f)) (list :filename (parse-namestring (coerce f 'string)))))) (defrule maybe-quoted-filename (or quoted-filename filename) (:identity t)) (defrule http-uri (and (or "http://" "https://") (* (filename-character-p character))) (:destructure (prefix url) (list :http (concatenate 'string prefix url)))) (defrule maybe-quoted-filename-or-http-uri (or http-uri maybe-quoted-filename)) (defrule get-filename-or-http-uri-from-environment-variable (and kw-getenv name) (:lambda (p-e-v) (destructuring-bind (g varname) p-e-v (declare (ignore g)) (let ((connstring (getenv-default varname))) (unless connstring (error "Environment variable ~s is unset." varname)) (parse 'maybe-quoted-filename-or-http-uri connstring))))) (defrule filename-or-http-uri (or get-filename-or-http-uri-from-environment-variable maybe-quoted-filename-or-http-uri)) (defrule source-uri (or stdin http-uri db-connection-uri maybe-quoted-filename) (:identity t)) (defrule load-from (and (~ "LOAD") ignore-whitespace (~ "FROM")) (:constant :load-from)) (defrule source (and load-from ignore-whitespace source-uri) (:destructure (load-from ws source) (declare (ignore load-from ws)) source)) pgloader/src/parsers/command-including-like.lisp0000644000175000017500000000100513047375022022211 0ustar vagrantvagrant;;; ;;; MS SQL and SQLite style including/excluding rules, using LIKE ;;; (in-package #:pgloader.parser) (defrule like-expression (and "'" (+ (not "'")) "'") (:lambda (le) (bind (((_ like _) le)) (text like)))) (defrule another-like-expression (and comma like-expression) (:lambda (source) (bind (((_ like) source)) like))) (defrule filter-list-like (and like-expression (* another-like-expression)) (:lambda (source) (destructuring-bind (filter1 filters) source (list* filter1 filters)))) pgloader/src/parsers/command-syslog.lisp0000644000175000017500000000777213047375022020654 0ustar vagrantvagrant;;; ;;; LOAD MESSAGES FROM syslog ;;; (in-package #:pgloader.parser) #| LOAD MESSAGES FROM syslog://localhost:10514/ WHEN MATCHES rsyslog-msg IN apache REGISTERING timestamp, ip, rest INTO postgresql://localhost/db?logs.apache SET guc_1 = 'value', guc_2 = 'other value' WHEN MATCHES rsyslog-msg IN others REGISTERING timestamp, app-name, data INTO postgresql://localhost/db?logs.others SET guc_1 = 'value', guc_2 = 'other value' WITH apache = rsyslog DATA = IP REST IP = 1*3DIGIT \".\" 1*3DIGIT \".\"1*3DIGIT \".\"1*3DIGIT REST = ~/.*/ WITH others = rsyslog; |# (defrule rule-name (and (alpha-char-p character) (+ (abnf::rule-name-character-p character))) (:lambda (name) (text name))) (defrule rules (* (not (or kw-registering kw-with kw-when kw-set end-of-command))) (:text t)) (defrule rule-name-list (and rule-name (+ (and "," ignore-whitespace rule-name))) (:lambda (list) (destructuring-bind (name names) list (list* name (mapcar (lambda (x) (destructuring-bind (c w n) x (declare (ignore c w)) n)) names))))) (defrule syslog-grammar (and kw-with rule-name equal-sign rule-name rules) (:lambda (grammar) (bind (((_ top-level _ gram abnf) grammar) (default-abnf-grammars `(("rsyslog" . ,abnf:*abnf-rsyslog*) ("syslog" . ,abnf:*abnf-rfc5424-syslog-protocol*) ("syslog-draft-15" . ,abnf:*abnf-rfc-syslog-draft-15*))) (grammar (cdr (assoc gram default-abnf-grammars :test #'string=)))) (cons top-level (concatenate 'string abnf '(#\Newline #\Newline) grammar))))) (defrule register-groups (and kw-registering rule-name-list) (:lambda (groups) (bind (((_ rule-names) groups)) rule-names))) (defrule syslog-match (and kw-when kw-matches rule-name kw-in rule-name register-groups target (? gucs)) (:lambda (matches) (bind (((_ _ top-level _ rule-name groups target gucs) matches)) (list :target target :gucs gucs :top-level top-level :grammar rule-name :groups groups)))) (defrule syslog-connection-uri (and dsn-prefix dsn-hostname (? "/")) (:lambda (syslog) (bind (((prefix host-port _) syslog) ((&key type host port) (append prefix host-port))) (list :type type :host host :port port)))) (defrule syslog-source (and ignore-whitespace kw-load kw-messages kw-from syslog-connection-uri) (:lambda (source) (bind (((_ _ _ _ uri) source)) uri))) (defrule load-syslog-messages (and syslog-source (+ syslog-match) (+ syslog-grammar)) (:lambda (syslog) (bind (((syslog-server matches grammars) syslog) ((&key ((:host syslog-host)) ((:port syslog-port)) &allow-other-keys) syslog-server) (scanners (loop for match in matches collect (destructuring-bind (&key target gucs top-level grammar groups) match (list :target target :gucs gucs :parser (abnf:parse-abnf-grammar (cdr (assoc grammar grammars :test #'string=)) top-level :registering-rules groups) :groups groups))))) `(lambda () (let ((scanners ',scanners)) (pgloader.syslog:stream-messages :host ,syslog-host :port ,syslog-port :scanners scanners)))))) pgloader/src/parsers/command-materialize-views.lisp0000644000175000017500000000224713047375022022765 0ustar vagrantvagrant ;;; ;;; Materialize views by copying their data over, allows for doing advanced ;;; ETL processing by having parts of the processing happen on the MySQL ;;; query side. ;;; (in-package #:pgloader.parser) (defrule view-name (and (alpha-char-p character) (* (or (alpha-char-p character) (digit-char-p character) #\_))) (:text t)) (defrule view-sql (and kw-as dollar-quoted) (:destructure (as sql) (declare (ignore as)) sql)) (defrule view-definition (and view-name (? view-sql)) (:destructure (name sql) (cons name sql))) (defrule another-view-definition (and comma view-definition) (:lambda (source) (bind (((_ view) source)) view))) (defrule views-list (and view-definition (* another-view-definition)) (:lambda (vlist) (destructuring-bind (view1 views) vlist (list* view1 views)))) (defrule materialize-all-views (and kw-materialize kw-all kw-views) (:constant :all)) (defrule materialize-view-list (and kw-materialize kw-views views-list) (:destructure (mat views list) (declare (ignore mat views)) list)) (defrule materialize-views (or materialize-view-list materialize-all-views) (:lambda (views) (cons :views views))) pgloader/src/parsers/command-sqlite.lisp0000644000175000017500000001401713126537350020625 0ustar vagrantvagrant;;; ;;; LOAD DATABASE FROM SQLite ;;; (in-package #:pgloader.parser) #| load database from sqlite:///Users/dim/Downloads/lastfm_tags.db into postgresql:///tags with drop tables, create tables, create indexes, reset sequences set work_mem to '16MB', maintenance_work_mem to '512 MB'; |# (defrule sqlite-option (or option-on-error-stop option-workers option-concurrency option-batch-rows option-batch-size option-prefetch-rows option-max-parallel-create-index option-reindex option-truncate option-disable-triggers option-data-only option-schema-only option-include-drop option-create-tables option-create-indexes option-reset-sequences option-foreign-keys option-encoding)) (defrule sqlite-options (and kw-with (and sqlite-option (* (and comma sqlite-option)))) (:function flatten-option-list)) (defrule including-like (and kw-including kw-only kw-table kw-names kw-like filter-list-like) (:lambda (source) (bind (((_ _ _ _ _ filter-list) source)) (cons :including filter-list)))) (defrule excluding-like (and kw-excluding kw-table kw-names kw-like filter-list-like) (:lambda (source) (bind (((_ _ _ _ filter-list) source)) (cons :excluding filter-list)))) (defrule sqlite-db-uri (and "sqlite://" filename) (:lambda (source) (bind (((_ filename) source)) filename))) (defrule sqlite-uri (or sqlite-db-uri http-uri maybe-quoted-filename) (:lambda (source) (destructuring-bind (kind url) source (case kind (:http (make-instance 'sqlite-connection :uri url)) (:filename (make-instance 'sqlite-connection :path url)))))) (defrule get-sqlite-uri-from-environment-variable (and kw-getenv name) (:lambda (p-e-v) (bind (((_ varname) p-e-v) (connstring (getenv-default varname))) (unless connstring (error "Environment variable ~s is unset." varname)) (parse 'sqlite-uri connstring)))) (defrule sqlite-source (and kw-load kw-database kw-from (or get-sqlite-uri-from-environment-variable sqlite-uri)) (:lambda (source) (bind (((_ _ _ uri) source)) uri))) (defrule load-sqlite-optional-clauses (* (or sqlite-options gucs casts alter-table alter-schema including-like excluding-like before-load after-load)) (:lambda (clauses-list) (alexandria:alist-plist clauses-list))) (defrule load-sqlite-command (and sqlite-source target load-sqlite-optional-clauses) (:lambda (command) (destructuring-bind (source target clauses) command `(,source ,target ,@clauses)))) (defun lisp-code-for-sqlite-dry-run (sqlite-db-conn pg-db-conn) `(lambda () (log-message :log "DRY RUN, only checking connections.") (check-connection ,sqlite-db-conn) (check-connection ,pg-db-conn))) (defun lisp-code-for-loading-from-sqlite (sqlite-db-conn pg-db-conn &key gucs casts before after options alter-table alter-schema ((:including incl)) ((:excluding excl))) `(lambda () (let* ((*default-cast-rules* ',*sqlite-default-cast-rules*) (*cast-rules* ',casts) ,@(pgsql-connection-bindings pg-db-conn gucs) ,@(batch-control-bindings options) (source-db (with-stats-collection ("fetch" :section :pre) (expand (fetch-file ,sqlite-db-conn)))) (source (make-instance 'pgloader.sqlite::copy-sqlite :target-db ,pg-db-conn :source-db source-db))) ,(sql-code-block pg-db-conn :pre before "before load") (pgloader.sqlite:copy-database source :alter-table ',alter-table :alter-schema ',alter-schema :set-table-oids t :including ',incl :excluding ',excl ,@(remove-batch-control-option options)) ,(sql-code-block pg-db-conn :post after "after load")))) (defrule load-sqlite-database load-sqlite-command (:lambda (source) (destructuring-bind (sqlite-uri pg-db-uri &key gucs casts before after options alter-table alter-schema including excluding) source (cond (*dry-run* (lisp-code-for-sqlite-dry-run sqlite-uri pg-db-uri)) (t (lisp-code-for-loading-from-sqlite sqlite-uri pg-db-uri :gucs gucs :casts casts :before before :after after :options options :alter-table alter-table :alter-schema alter-schema :including including :excluding excluding)))))) pgloader/src/parsers/command-cast-rules.lisp0000644000175000017500000001171013047375022021401 0ustar vagrantvagrant;;; ;;; Now parsing CAST rules for migrating from MySQL ;;; (in-package :pgloader.parser) (defrule cast-typemod-guard (and kw-when sexp) (:destructure (w expr) (declare (ignore w)) (cons :typemod expr))) (defrule cast-default-guard (and kw-when kw-default quoted-string) (:destructure (w d value) (declare (ignore w d)) (cons :default value))) (defrule cast-source-guards (* (or cast-default-guard cast-typemod-guard)) (:lambda (guards) (alexandria:alist-plist guards))) ;; at the moment we only know about extra auto_increment (defrule cast-source-extra (and kw-with kw-extra kw-auto-increment) (:constant (list :auto-increment t))) (defrule cast-source-type (and kw-type trimmed-name) (:destructure (kw name) (declare (ignore kw)) (list :type name))) (defrule table-column-name (and namestring "." namestring) (:destructure (table-name dot column-name) (declare (ignore dot)) (list :column (cons (text table-name) (text column-name))))) (defrule cast-source-column (and kw-column table-column-name) ;; well, we want namestring . namestring (:destructure (kw name) (declare (ignore kw)) name)) (defrule cast-source (and (or cast-source-type cast-source-column) (? cast-source-extra) (? cast-source-guards) ignore-whitespace) (:lambda (source) (bind (((name-and-type opts guards _) source) ((&key (default nil d-s-p) (typemod nil t-s-p) &allow-other-keys) guards) ((&key (auto-increment nil ai-s-p) &allow-other-keys) opts)) `(,@name-and-type ,@(when t-s-p (list :typemod typemod)) ,@(when d-s-p (list :default default)) ,@(when ai-s-p (list :auto-increment auto-increment)))))) (defrule cast-type-name (and (alpha-char-p character) (* (or (alpha-char-p character) (digit-char-p character)))) (:text t)) (defrule cast-to-type (and kw-to cast-type-name ignore-whitespace) (:lambda (source) (bind (((_ type-name _) source)) (list :type type-name)))) (defrule cast-keep-default (and kw-keep kw-default) (:constant (list :drop-default nil))) (defrule cast-keep-typemod (and kw-keep kw-typemod) (:constant (list :drop-typemod nil))) (defrule cast-keep-not-null (and kw-keep kw-not kw-null) (:constant (list :drop-not-null nil))) (defrule cast-drop-default (and kw-drop kw-default) (:constant (list :drop-default t))) (defrule cast-drop-typemod (and kw-drop kw-typemod) (:constant (list :drop-typemod t))) (defrule cast-drop-not-null (and kw-drop kw-not kw-null) (:constant (list :drop-not-null t))) (defrule cast-set-not-null (and kw-set kw-not kw-null) (:constant (list :set-not-null t))) (defrule cast-def (+ (or cast-to-type cast-keep-default cast-drop-default cast-keep-typemod cast-drop-typemod cast-keep-not-null cast-drop-not-null cast-set-not-null)) (:lambda (source) (destructuring-bind (&key type drop-default drop-typemod drop-not-null set-not-null &allow-other-keys) (apply #'append source) (list :type type :drop-default drop-default :drop-typemod drop-typemod :drop-not-null drop-not-null :set-not-null set-not-null)))) (defun function-name-character-p (char) (or (member char #.(quote (coerce "/.-%" 'list))) (alphanumericp char))) (defrule function-name (+ (function-name-character-p character)) (:lambda (fname) (text fname))) (defrule package-and-function-names (and function-name (or ":" "::") function-name) (:lambda (pfn) (bind (((pname _ fname) pfn)) (intern (string-upcase fname) (find-package (string-upcase pname)))))) (defrule maybe-qualified-function-name (or package-and-function-names function-name) (:lambda (fname) (typecase fname (string (intern (string-upcase fname) :pgloader.transforms)) (symbol fname)))) (defrule cast-function (and kw-using maybe-qualified-function-name) (:destructure (using symbol) (declare (ignore using)) symbol)) (defun fix-target-type (source target) "When target has :type nil, steal the source :type definition." (if (getf target :type) target (loop for (key value) on target by #'cddr append (list key (if (eq :type key) (getf source :type) value))))) (defrule cast-rule (and cast-source (? cast-def) (? cast-function)) (:lambda (cast) (destructuring-bind (source target function) cast (list :source source :target (fix-target-type source target) :using function)))) (defrule another-cast-rule (and comma cast-rule) (:lambda (source) (bind (((_ rule) source)) rule))) (defrule cast-rule-list (and cast-rule (* another-cast-rule)) (:lambda (source) (destructuring-bind (rule1 rules) source (list* rule1 rules)))) (defrule casts (and kw-cast cast-rule-list) (:lambda (source) (bind (((_ casts) source)) (cons :casts casts)))) pgloader/src/parsers/command-db-uri.lisp0000644000175000017500000002164513127254230020505 0ustar vagrantvagrant;;; ;;; The main target parsing ;;; ;;; COPY postgresql://user@localhost:5432/dbname?foo ;;; (in-package :pgloader.parser) ;; ;; Parse PostgreSQL database connection strings ;; ;; at postgresql://[user[:password]@][netloc][:port][/dbname]?table-name ;; ;; http://www.postgresql.org/docs/9.2/static/libpq-connect.html#LIBPQ-CONNSTRING ;; ;; Also parse MySQL connection strings and syslog service definition ;; strings, using the same model. ;; (defrule dsn-port (and ":" (* (digit-char-p character))) (:lambda (port) (bind (((_ digits &aux (port (coerce digits 'string))) port)) (list :port (if (null digits) digits (parse-integer port)))))) (defrule doubled-at-sign (and "@@") (:constant "@")) (defrule doubled-colon (and "::") (:constant ":")) (defrule password (+ (or (not "@") doubled-at-sign)) (:text t)) (defrule username (and (or #\_ (alpha-char-p character)) (* (or (alpha-char-p character) (digit-char-p character) #\. #\\ punct doubled-at-sign doubled-colon ))) (:text t)) (defrule dsn-user-password (and username (? (and ":" (? password))) "@") (:lambda (args) (bind (((username &optional password) (butlast args))) ;; password looks like '(":" "password") (list :user username :password (cadr password))))) (defun hexdigit-char-p (character) (member character #. (quote (coerce "0123456789abcdefABCDEF" 'list)))) (defrule ipv4-part (and (digit-char-p character) (? (digit-char-p character)) (? (digit-char-p character)))) (defrule ipv4 (and ipv4-part "." ipv4-part "." ipv4-part "." ipv4-part) (:lambda (ipv4) (list :ipv4 (text ipv4)))) ;;; socket directory is unix only, so we can forbid ":" on the parsing (defun socket-directory-character-p (char) (or (member char #.(quote (coerce "/.-_" 'list))) (alphanumericp char))) (defrule socket-directory (and "unix:" (* (socket-directory-character-p character))) (:destructure (unix socket-directory) (declare (ignore unix)) (list :unix (when socket-directory (text socket-directory))))) (defrule network-name (and namestring (* (and "." namestring))) (:lambda (name) (let ((host (text name))) (list :host (unless (string= "" host) host))))) (defrule hostname (or ipv4 socket-directory network-name) (:identity t)) (defun process-hostname (hostname) (destructuring-bind (type &optional name) hostname (ecase type (:unix (if name (cons :unix name) :unix)) (:ipv4 name) (:host name)))) (defrule dsn-hostname (and (? hostname) (? dsn-port)) (:lambda (host-port) (destructuring-bind (host &optional port) host-port (append (list :host (when host (process-hostname host))) port)))) (defrule dsn-dbname (and "/" (? namestring)) (:destructure (slash dbname) (declare (ignore slash)) (list :dbname dbname))) (defrule dsn-option-ssl-disable "disable" (:constant :no)) (defrule dsn-option-ssl-allow "allow" (:constant :try)) (defrule dsn-option-ssl-prefer "prefer" (:constant :try)) (defrule dsn-option-ssl-require "require" (:constant :yes)) (defrule dsn-option-ssl (and "sslmode" "=" (or dsn-option-ssl-disable dsn-option-ssl-allow dsn-option-ssl-prefer dsn-option-ssl-require)) (:lambda (ssl) (destructuring-bind (key e val) ssl (declare (ignore key e)) (cons :use-ssl val)))) (defrule maybe-quoted-namestring (or double-quoted-namestring quoted-namestring namestring)) (defrule qualified-table-name (and maybe-quoted-namestring "." maybe-quoted-namestring) (:destructure (schema dot table) (declare (ignore dot)) (cons (text schema) (text table)))) (defrule dsn-table-name (or qualified-table-name maybe-quoted-namestring) (:lambda (name) ;; we can't make a table instance yet here, because for that we need to ;; apply-identifier-case on it, and that requires to have initialized ;; the *pgsql-reserved-keywords*, and we can't do that before parsing ;; the target database connection string, can we? (cons :table-name name))) (defrule dsn-option-table-name (and (? (and "tablename" "=")) dsn-table-name) (:lambda (opt-tn) (bind (((_ table-name) opt-tn)) table-name))) (defrule uri-param (+ (not "&")) (:text t)) (defmacro make-dsn-option-rule (name param &optional (rule 'uri-param) fn) `(defrule ,name (and ,param "=" ,rule) (:lambda (x) (let ((cons (first (quri:url-decode-params (text x))))) (setf (car cons) (intern (string-upcase (car cons)) "KEYWORD")) (when ,fn (setf (cdr cons) (funcall ,fn (cdr cons)))) cons)))) (make-dsn-option-rule dsn-option-host "host" uri-param (lambda (hostname) (process-hostname (parse 'hostname ;; special case Unix Domain Socket paths (cond ((char= (aref hostname 0) #\/) (format nil "unix:~a" hostname)) (t hostname)))))) (make-dsn-option-rule dsn-option-port "port" (+ (digit-char-p character)) #'parse-integer) (make-dsn-option-rule dsn-option-dbname "dbname") (make-dsn-option-rule dsn-option-user "user") (make-dsn-option-rule dsn-option-pass "password") (defrule dsn-option (or dsn-option-ssl dsn-option-host dsn-option-port dsn-option-dbname dsn-option-user dsn-option-pass dsn-option-table-name)) (defrule another-dsn-option (and "&" dsn-option) (:lambda (source) (bind (((_ option) source)) option))) (defrule dsn-options (and "?" dsn-option (* another-dsn-option)) (:lambda (options) (destructuring-bind (qm opt1 opts) options (declare (ignore qm)) (alexandria:alist-plist `(,opt1 ,@opts))))) (defrule pgsql-prefix (and (or "postgresql" "postgres" "pgsql") "://") (:constant (list :type :postgresql))) (defrule pgsql-uri (and pgsql-prefix (? dsn-user-password) (? dsn-hostname) dsn-dbname (? dsn-options)) (:lambda (uri) (destructuring-bind (&key type user password host port dbname table-name use-ssl) ;; we want the options to take precedence over the URI components, ;; so we destructure the URI again and prepend options here. (destructuring-bind (prefix user-pass host-port dbname options) uri (apply #'append options prefix user-pass host-port (list dbname))) ;; Default to environment variables as described in ;; http://www.postgresql.org/docs/9.3/static/app-psql.html (declare (ignore type)) (make-instance 'pgsql-connection :user (or user (getenv-default "PGUSER" #+unix (getenv-default "USER") #-unix (getenv-default "UserName"))) :pass (or password (getenv-default "PGPASSWORD")) :host (or host (getenv-default "PGHOST" #+unix :unix #-unix "localhost")) :port (or port (parse-integer (getenv-default "PGPORT" "5432"))) :name (or dbname (getenv-default "PGDATABASE" user)) :use-ssl use-ssl :table-name table-name)))) (defrule get-pgsql-uri-from-environment-variable (and kw-getenv name) (:lambda (p-e-v) (bind (((_ varname) p-e-v)) (let ((connstring (getenv-default varname))) (unless connstring (error "Environment variable ~s is unset." varname)) (parse 'pgsql-uri connstring))))) (defrule target (and kw-into (or pgsql-uri get-pgsql-uri-from-environment-variable)) (:destructure (into target) (declare (ignore into)) target)) (defun pgsql-connection-bindings (pg-db-uri gucs) "Generate the code needed to set PostgreSQL connection bindings." `((*pg-settings* (pgloader.pgsql:sanitize-user-gucs ',gucs)) (*pgsql-reserved-keywords* (pgloader.pgsql:list-reserved-keywords ,pg-db-uri)))) pgloader/src/parsers/command-sql-block.lisp0000644000175000017500000000461313114344623021210 0ustar vagrantvagrant#| BEFORE LOAD DO $$ sql $$ LOAD CSV FROM '*/GeoLiteCity-Blocks.csv' ... LOAD DBF FROM '*/GeoLiteCity-Location.csv' ... FINALLY DO $$ sql $$; |# (in-package :pgloader.parser) (defrule double-dollar (and ignore-whitespace #\$ #\$ ignore-whitespace) (:constant :double-dollars)) (defrule dollar-quoted (and double-dollar (* (not double-dollar)) double-dollar) (:lambda (dq) (bind (((_ quoted _) dq)) (text quoted)))) (defrule another-dollar-quoted (and comma dollar-quoted) (:lambda (source) (bind (((_ quoted) source)) quoted))) (defrule dollar-quoted-list (and dollar-quoted (* another-dollar-quoted)) (:lambda (source) (destructuring-bind (dq1 dqs) source (list* dq1 dqs)))) (defrule sql-file (or maybe-quoted-filename) (:lambda (filename) (destructuring-bind (kind path) filename (ecase kind (:filename (pgloader.sql:read-queries (uiop:merge-pathnames* path *cwd*))))))) (defrule load-do (and kw-do dollar-quoted-list) (:lambda (bld) (destructuring-bind (do quoted) bld (declare (ignore do)) quoted))) (defrule load-execute (and kw-execute sql-file) (:lambda (ble) (bind (((_ sql) ble)) sql))) (defrule before-load (and kw-before kw-load (+ (or load-do load-execute))) (:lambda (before) (bind (((_ _ sql-list-of-list) before)) (cons :before (apply #'append sql-list-of-list))))) (defrule finally (and kw-finally (+ (or load-do load-execute))) (:lambda (finally) (bind (((_ sql-list-of-list) finally)) (cons :finally (apply #'append sql-list-of-list))))) (defrule after-load (and kw-after kw-load (+ (or load-do load-execute))) (:lambda (after) (bind (((_ _ sql-list-of-list) after)) (cons :after (apply #'append sql-list-of-list))))) (defun sql-code-block (pgconn section commands label) "Return lisp code to run COMMANDS against DBNAME, updating STATE." (when commands `(with-stats-collection (,label :dbname ,(db-name pgconn) :section ,section :use-result-as-read t :use-result-as-rows t) (log-message :notice "Executing SQL block for ~a" ,label) (with-pgsql-transaction (:pgconn ,pgconn) (loop for command in ',commands do (pgsql-execute command :client-min-messages :error) counting command))))) pgloader/src/parsers/command-keywords.lisp0000644000175000017500000001111613126540616021167 0ustar vagrantvagrant;;; ;;; Parse the pgloader commands grammar ;;; (in-package :pgloader.parser) ;;; ;;; Keywords ;;; (defmacro def-keyword-rule (keyword) (let ((rule-name (read-from-string (format nil "kw-~a" keyword))) (constant (read-from-string (format nil ":~a" keyword)))) `(defrule ,rule-name (and ignore-whitespace (~ ,keyword) ignore-whitespace) (:constant ',constant)))) (eval-when (:load-toplevel :compile-toplevel :execute) (def-keyword-rule "load") (def-keyword-rule "data") (def-keyword-rule "from") (def-keyword-rule "csv") (def-keyword-rule "dbf") (def-keyword-rule "ixf") (def-keyword-rule "fixed") (def-keyword-rule "copy") (def-keyword-rule "into") (def-keyword-rule "with") (def-keyword-rule "when") (def-keyword-rule "set") (def-keyword-rule "database") (def-keyword-rule "messages") (def-keyword-rule "matches") (def-keyword-rule "in") (def-keyword-rule "directory") (def-keyword-rule "registering") (def-keyword-rule "cast") (def-keyword-rule "column") (def-keyword-rule "target") (def-keyword-rule "columns") (def-keyword-rule "type") (def-keyword-rule "extra") (def-keyword-rule "include") (def-keyword-rule "drop") (def-keyword-rule "not") (def-keyword-rule "to") (def-keyword-rule "no") (def-keyword-rule "null") (def-keyword-rule "default") (def-keyword-rule "typemod") (def-keyword-rule "using") (def-keyword-rule "getenv") (def-keyword-rule "on") (def-keyword-rule "error") (def-keyword-rule "stop") (def-keyword-rule "parameters") ;; option for loading from a file (def-keyword-rule "workers") (def-keyword-rule "batch") (def-keyword-rule "rows") (def-keyword-rule "prefetch") (def-keyword-rule "size") (def-keyword-rule "concurrency") (def-keyword-rule "max") (def-keyword-rule "parallel") (def-keyword-rule "reject") (def-keyword-rule "file") (def-keyword-rule "log") (def-keyword-rule "level") (def-keyword-rule "encoding") (def-keyword-rule "timezone") (def-keyword-rule "decoding") (def-keyword-rule "truncate") (def-keyword-rule "disable") (def-keyword-rule "triggers") (def-keyword-rule "lines") (def-keyword-rule "having") (def-keyword-rule "fields") (def-keyword-rule "optionally") (def-keyword-rule "enclosed") (def-keyword-rule "by") (def-keyword-rule "escaped") (def-keyword-rule "terminated") (def-keyword-rule "escape") (def-keyword-rule "mode") (def-keyword-rule "nullif") (def-keyword-rule "blank") (def-keyword-rule "trim") (def-keyword-rule "both") (def-keyword-rule "left") (def-keyword-rule "right") (def-keyword-rule "whitespace") (def-keyword-rule "from") (def-keyword-rule "for") (def-keyword-rule "skip") (def-keyword-rule "header") (def-keyword-rule "null") (def-keyword-rule "if") (def-keyword-rule "as") (def-keyword-rule "blanks") (def-keyword-rule "date") (def-keyword-rule "format") (def-keyword-rule "keep") (def-keyword-rule "trim") (def-keyword-rule "unquoted") (def-keyword-rule "delimiter") ;; option for MySQL imports (def-keyword-rule "schema") (def-keyword-rule "schemas") (def-keyword-rule "only") (def-keyword-rule "drop") (def-keyword-rule "alter") (def-keyword-rule "create") (def-keyword-rule "rename") (def-keyword-rule "materialize") (def-keyword-rule "reset") (def-keyword-rule "table") (def-keyword-rule "name") (def-keyword-rule "names") (def-keyword-rule "tables") (def-keyword-rule "views") (def-keyword-rule "index") (def-keyword-rule "indexes") (def-keyword-rule "preserve") (def-keyword-rule "uniquify") (def-keyword-rule "sequences") (def-keyword-rule "foreign") (def-keyword-rule "keys") (def-keyword-rule "downcase") (def-keyword-rule "quote") (def-keyword-rule "identifiers") (def-keyword-rule "including") (def-keyword-rule "excluding") (def-keyword-rule "like") (def-keyword-rule "multiple") (def-keyword-rule "single") (def-keyword-rule "reader") (def-keyword-rule "readers") (def-keyword-rule "per") (def-keyword-rule "thread") (def-keyword-rule "range") ;; option for loading from an archive (def-keyword-rule "archive") (def-keyword-rule "before") (def-keyword-rule "after") (def-keyword-rule "finally") (def-keyword-rule "and") (def-keyword-rule "do") (def-keyword-rule "execute") (def-keyword-rule "filename") (def-keyword-rule "filenames") (def-keyword-rule "matching") (def-keyword-rule "first") (def-keyword-rule "all")) (defrule kw-auto-increment (and "auto_increment" (* (or #\Tab #\Space))) (:constant :auto-increment)) (defrule kw-postgresql (or (~ "pgsql") (~ "postgresql"))) (defrule kw-mysql (~ "mysql")) pgloader/src/parsers/parse-ini.lisp0000644000175000017500000003527413047375022017605 0ustar vagrantvagrant;;; ;;; Compatibility package to read old configuration file format. ;;; (in-package :pgloader.ini) (defparameter *global-section* "pgsql") (defstruct params filename table format is-template use-template fields columns truncate encoding logs rejects gucs separator null-as empty-string skip-lines) (defun process-true-false (value) "parse python boolean values" (cond ((string-equal "True" value) t) ((string-equal "False" value) nil) (t value))) (defun read-default-value-for-param (config option &optional default) "Fetch value for OPTION in the global section." (if (ini:has-option-p config *global-section* option) (ini:get-option config *global-section* option) default)) (defun read-value-for-param (config section option &key template default) "Read the value of OPTION in the SECTION part of the CONFIG or its TEMPLATE when one is defined, finally using provided DEFAULT." (cond ((ini:has-option-p config section option) (ini:get-option config section option)) (template ;; don't inherit the is-template property from the template (unless (string-equal "template" option) (if (ini:has-option-p config template option) (ini:get-option config template option) (read-default-value-for-param config option default)))) (t (read-default-value-for-param config option default)))) (defmethod set-param ((params params) config section option param &optional default) "Set the params structure slot PARAM, reading its value in the SECTION part of the CONFIG or its TEMPLATE when one is defined, finally using provided DEFAULT." (let ((value (process-true-false (read-value-for-param config section option :template (params-use-template params) :default default)))) (setf (slot-value params param) value))) (defmethod set-gucs ((params params) config section) (let* ((template (params-use-template params)) (encoding (string-trim "'" (read-value-for-param config section "client_encoding" :template template))) (datestyle (read-value-for-param config section "datestyle" :template template))) (setf (params-gucs params) (append (when encoding (list (cons "client_encoding" encoding))) (when datestyle (list (cons "datestyle" datestyle))) (merge-gucs (get-gucs config section) (when template (get-gucs config template)) (get-gucs config *global-section*)))))) (defun get-gucs (config section) "Get PostgreSQL settings from SECTION." (loop for (option . value) in (ini:items config section) when (and (< 10 (length option)) (string= "pg_option_" option :end2 10)) collect (cons (subseq option 10) value))) (defun merge-gucs (&rest gucs) "Merge several guc lists into a consolidated one. When the same GUC is found more than once, we keep the one found first." (remove-duplicates (apply #'append gucs) :from-end t :key #'car :test #'string=)) (defun user-defined-columns (config section) "Fetch all option that begin with udc_ as user defined columns" (loop for (option . value) in (ini:items config section) when (and (< 4 (length option)) (string= "udc_" option :end2 4)) collect (cons (subseq option 4) value))) (defun split-columns-specs (colspecs) "Return an alist of column name and column position from given COLSPEC" (loop for count from 1 for raw in (sq:split-sequence #\, colspecs) for colspec = (string-trim " " raw) for (name pos) = (sq:split-sequence #\: colspec) collect (cons name (or (when pos (parse-integer pos)) count)))) (defun get-pgsql-column-specs (config section) "Connect to PostgreSQL to get the column specs." (destructuring-bind (&key host port user pass dbname table-name) (get-connection-params config section) (let ((pgconn (make-instance 'pgsql-connection :host host :port port :user user :pass pass :name dbname :table-name table-name))) (loop :for pos :from 1 :for name :in (list-columns pgconn table-name) :collect (cons name pos))))) (defun parse-columns-spec (string config section &key trailing-sep) "Parse old-style columns specification, such as: * --> nil x, y, a, b, d:6, c:5 --> \"x, y, a, b, d, c\" Returns the list of fields to read from the file and the list of columns to fill-in in the database as separate values." (let* ((colspecs (if (string= string "*") (get-pgsql-column-specs config section) (split-columns-specs string)))) (values (append (mapcar #'car (sort (copy-list colspecs) #'< :key #'cdr)) (when trailing-sep '("trailing"))) (mapcar #'car colspecs)))) (defun parse-only-cols (columns only-cols) " columns = x, y, a, b, d:6, c:5 only_cols = 3-6 Note that parsing the columns value has already been done for us, what we are given here actually is (x y a b d c) Returns (a b d c)" (let ((indices (loop for raw in (sq:split-sequence #\, only-cols) for range = (string-trim " " raw) for (lower upper) = (mapcar #'parse-integer (sq:split-sequence #\- range)) when upper append (loop for i from lower to upper collect i) else collect lower))) (loop with cols = (coerce columns 'vector) for i in indices collect (aref cols (- i 1))))) (defun compute-columns (columns only-cols copy-columns user-defined config section) "For columns, if only-cols is set, restrict to that. If copy-columns is set, use that and replace references to user defined columns." (cond (only-cols ;; that's again something kind of special (parse-only-cols columns only-cols)) (copy-columns ;; that's the format used when user-defined columns are in play (multiple-value-bind (fields columns) (parse-columns-spec copy-columns config section) (declare (ignore fields)) (mapcar (lambda (colname) (let ((constant (cdr (assoc colname user-defined :test #'string=)))) (if constant (format nil "~a ~a using ~s" colname "text" constant) colname))) columns))) (t columns))) (defun parse-section (config section &optional (params (make-params))) "Parse a configuration section into a params structure." (unless (params-is-template params) (loop for (option . param) in '(("use_template" . use-template) ("template" . is-template) ("reject_log" . logs) ("reject_data" . rejects) ("table" . table) ("format" . format) ("filename" . filename) ("truncate" . truncate) ("input_encoding" . encoding) ("reject_log" . logs) ("reject_data" . rejects) ("field_sep" . separator) ("null" . null-as) ("empty_string" . empty-string) ("skip_head_lines" . skip-lines)) do (set-param params config section option param)) ;; now parse gucs (set-gucs params config section) ;; now parse fields and columns (let* ((template (params-use-template params)) (trailing-sep (read-value-for-param config section "trailing_sep" :template template)) (columns (read-value-for-param config section "columns" :template template)) (user-defined (append (user-defined-columns config section) (when template (user-defined-columns config template)) (user-defined-columns config *global-section*))) (copy-columns (read-value-for-param config section "copy_columns" :template template)) (only-cols (read-value-for-param config section "only_cols" :template template))) ;; make sense of the old cruft (multiple-value-bind (fields columns) (parse-columns-spec columns config section :trailing-sep trailing-sep) (setf (params-fields params) fields) (setf (params-columns params) (compute-columns columns only-cols copy-columns user-defined config section)))) params)) (defun get-connection-params (config section) "Return a property list with connection parameters for SECTION." (let ((defaults (pgloader:parse-target-string "pgsql:///"))) (append (loop for (param option section default) in `((:host "host" ,*global-section* ,(db-host defaults)) (:port "port" ,*global-section* ,(prin1-to-string (db-port defaults))) (:user "user" ,*global-section* ,(db-user defaults)) (:pass "pass" ,*global-section* ,(db-pass defaults)) (:dbname "base" ,*global-section* nil)) append (list param (coerce (read-value-for-param config section option :default default) 'simple-string))) ;; fetch table name from current section or its template maybe (let ((template (read-value-for-param config section "use_template"))) (list :table-name (read-value-for-param config section "table" :template template)))))) (defun get-connection-string (config section) "Return the connection parameters as a postgresql:// string." (destructuring-bind (&key host port user pass dbname table-name) (get-connection-params config section) (format nil "postgresql://~a:~a@~a:~a/~a?~a" user pass host port dbname table-name))) (defun read-ini-file (filename) (let ((config (ini:make-config))) (ini:read-files config (list filename)))) (defun parse-ini-file (filename) "Parse an old-style INI file into a list of PARAMS structures" (let* ((config (read-ini-file filename)) (sections (remove-if (lambda (s) (member s '("default" *global-section*) :test #'string=)) (ini:sections config)))) (remove-if #'null (mapcar (lambda (s) (parse-section config s)) sections)))) (defun print-csv-option (params option) "Print a CSV option in the new format." (let ((value (when (slot-exists-p params option) (slot-value params option)))) (case option (truncate (when value "truncate")) (quote (format nil "fields optionally enclosed by '~c'" #\")) (escape (format nil "fields escaped by double-quote")) (separator (format nil "fields terminated by '~c'" (aref value 0))) (skip-lines (when value (format nil "skip header = ~a" value)))))) (defun write-command-to-string (config section &key with-data-inline (end-command t)) "Return the new syntax for the command found in SECTION. When WITH-DATA-INLINE is true, instead of using the SECTION's filename option, use the constant INLINE in the command." (let ((params (parse-section config section))) (when (and (params-filename params) (params-separator params)) (with-output-to-string (s) (format s "LOAD CSV~%") (format s " FROM ~a ~@[WITH ENCODING ~a~]~%" (if with-data-inline "inline" (format nil "'~a'" (params-filename params))) (when (params-encoding params) (string-trim "'" (params-encoding params)))) (format s " ~@[(~{~&~10T~a~^,~}~%~8T)~]~%" (params-fields params)) (format s " INTO ~a~%" (get-connection-string config section)) (format s " ~@[(~{~&~10T~a~^,~}~%~8T)~]~%" (params-columns params)) ;; CSV options (format s "~% WITH ~{~a~^,~%~10T~}~%" (loop for name in '(truncate skip-lines quote escape separator) for option = (print-csv-option params name) when option collect it)) ;; GUCs (format s "~% SET ~{~a~^,~&~10T~}" (loop for (name . setting) in (params-gucs params) collect (format nil "~a to '~a'" name setting))) ;; End the command with a semicolon, unless asked not to (format s "~@[;~]" end-command))))) (defun convert-ini-into-commands (filename) "Read the INI file at FILENAME and convert each section of it to a command in the new pgloader format." (let ((config (read-ini-file filename))) (format t "~{~a~^~%~%~%~}" (loop for section in (ini:sections config) for command = (write-command-to-string config section) when command collect it)))) (defun convert-ini-into-files (filename target-directory &key with-data-inline include-sql-file) "Reads the INI file at FILENAME and creates files names
.load for each section in the INI file, in TARGET-DIRECTORY. When WITH-DATA-INLINE is true, read the CSV file listed as the section's filename and insert its content in the command itself, as inline data. When INCLUDE-SQL-FILE is :if-exists, try to find a sibling file to the data file, with the same name and with the \"sql\" type, and use its content in a BEFORE LOAD DO clause. When INCLUDE-SQL-FILE is t, not finding the SQL file is an error." (let ((config (read-ini-file filename))) ;; first mkdir -p (ensure-directories-exist target-directory) (loop for section in (ini:sections config) for target = (make-pathname :directory target-directory :name section :type "load") for command = (write-command-to-string config section :with-data-inline with-data-inline :end-command nil) when command do (with-open-file (c target :direction :output :if-exists :supersede :if-does-not-exist :create :external-format :utf-8) (format c "~a" command) (let* ((params (parse-section config section)) (datafile (merge-pathnames (params-filename params) (directory-namestring filename))) (sqlfile (make-pathname :directory (directory-namestring datafile) :name (pathname-name datafile) :type "sql")) (sql-file-exists (probe-file sqlfile)) (sql-commands (when sql-file-exists (read-file-into-string sqlfile)))) ;; First (if include-sql-file (if sql-file-exists (progn (format c "~%~% BEFORE LOAD DO") (format c "~{~&~3T$$ ~a; $$~^,~};~%" (remove-if (lambda (x) (string= "" (string-trim '(#\Space #\Return #\Linefeed) x))) (sq:split-sequence #\; sql-commands)))) (unless (eq sql-file-exists :if-exists) (error "File not found: ~s" sqlfile))) ;; don't include sql file (format c ";~%")) (when with-data-inline (let* ((params (parse-section config section)) (datafile (merge-pathnames (params-filename params) (directory-namestring filename)))) (format c "~%~%~%~%~a" (read-file-into-string datafile)))))) and collect target))) pgloader/src/parsers/command-fixed.lisp0000644000175000017500000001674013124541553020426 0ustar vagrantvagrant;;; ;;; LOAD FIXED COLUMNS FILE ;;; ;;; That has lots in common with CSV, so we share a fair amount of parsing ;;; rules with the CSV case. ;;; (in-package #:pgloader.parser) (defrule hex-number (and "0x" (+ (hexdigit-char-p character))) (:lambda (hex) (bind (((_ digits) hex)) (parse-integer (text digits) :radix 16)))) (defrule dec-number (+ (digit-char-p character)) (:lambda (digits) (parse-integer (text digits)))) (defrule number (or hex-number dec-number)) (defrule field-start-position (and (? kw-from) ignore-whitespace number) (:function third)) (defrule fixed-field-length (and (? kw-for) ignore-whitespace number) (:function third)) (defrule fixed-source-field (and csv-field-name field-start-position fixed-field-length csv-field-options) (:destructure (name start len opts) `(,name :start ,start :length ,len ,@opts))) (defrule another-fixed-source-field (and comma fixed-source-field) (:lambda (source) (bind (((_ field) source)) field))) (defrule fixed-source-fields (and fixed-source-field (* another-fixed-source-field)) (:lambda (source) (destructuring-bind (field1 fields) source (list* field1 fields)))) (defrule fixed-source-field-list (and open-paren fixed-source-fields close-paren) (:lambda (source) (bind (((_ field-defs _) source)) field-defs))) (defrule fixed-option (or option-on-error-stop option-workers option-concurrency option-batch-rows option-batch-size option-prefetch-rows option-max-parallel-create-index option-truncate option-drop-indexes option-disable-triggers option-identifiers-case option-skip-header)) (defrule fixed-options (and kw-with (and fixed-option (* (and comma fixed-option)))) (:function flatten-option-list)) (defrule fixed-uri (and "fixed://" filename) (:lambda (source) (bind (((_ filename) source)) (make-instance 'fixed-connection :spec filename)))) (defrule fixed-file-source (or stdin inline http-uri fixed-uri filename-matching maybe-quoted-filename) (:lambda (src) (if (typep src 'fixed-connection) src (destructuring-bind (type &rest specs) src (case type (:stdin (make-instance 'fixed-connection :spec src)) (:inline (make-instance 'fixed-connection :spec src)) (:filename (make-instance 'fixed-connection :spec src)) (:regex (make-instance 'fixed-connection :spec src)) (:http (make-instance 'fixed-connection :uri (first specs)))))))) (defrule get-fixed-file-source-from-environment-variable (and kw-getenv name) (:lambda (p-e-v) (bind (((_ varname) p-e-v) (connstring (getenv-default varname))) (unless connstring (error "Environment variable ~s is unset." varname)) (parse 'fixed-file-source connstring)))) (defrule fixed-source (and kw-load kw-fixed kw-from (or get-fixed-file-source-from-environment-variable fixed-file-source)) (:lambda (src) (bind (((_ _ _ source) src)) source))) (defrule load-fixed-cols-file-optional-clauses (* (or fixed-options gucs before-load after-load)) (:lambda (clauses-list) (alexandria:alist-plist clauses-list))) (defrule load-fixed-cols-file-command (and fixed-source (? file-encoding) fixed-source-field-list target (? csv-target-column-list) load-fixed-cols-file-optional-clauses) (:lambda (command) (destructuring-bind (source encoding fields target columns clauses) command `(,source ,encoding ,fields ,target ,columns ,@clauses)))) (defun lisp-code-for-loading-from-fixed (fixed-conn fields pg-db-conn &key (encoding :utf-8) columns gucs before after options &aux (worker-count (getf options :worker-count)) (concurrency (getf options :concurrency))) `(lambda () (let* (,@(pgsql-connection-bindings pg-db-conn gucs) ,@(batch-control-bindings options) ,@(identifier-case-binding options) (source-db (with-stats-collection ("fetch" :section :pre) (expand (fetch-file ,fixed-conn))))) (progn ,(sql-code-block pg-db-conn :pre before "before load") (let ((on-error-stop ,(getf options :on-error-stop)) (truncate ,(getf options :truncate)) (disable-triggers ,(getf options :disable-triggers)) (drop-indexes ,(getf options :drop-indexes)) (max-parallel-create-index ,(getf options :max-parallel-create-index)) (source (make-instance 'pgloader.fixed:copy-fixed :target-db ,pg-db-conn :source source-db :target (create-table ',(pgconn-table-name pg-db-conn)) :encoding ,encoding :fields ',fields :columns ',columns :skip-lines ,(or (getf options :skip-line) 0)))) (pgloader.sources:copy-database source ,@ (when worker-count (list :worker-count worker-count)) ,@ (when concurrency (list :concurrency concurrency)) :on-error-stop on-error-stop :truncate truncate :drop-indexes drop-indexes :disable-triggers disable-triggers :max-parallel-create-index max-parallel-create-index)) ,(sql-code-block pg-db-conn :post after "after load"))))) (defrule load-fixed-cols-file load-fixed-cols-file-command (:lambda (command) (bind (((source encoding fields pg-db-uri columns &key options gucs before after) command)) (cond (*dry-run* (lisp-code-for-csv-dry-run pg-db-uri)) (t (lisp-code-for-loading-from-fixed source fields pg-db-uri :encoding encoding :columns columns :gucs gucs :before before :after after :options options)))))) pgloader/src/parsers/command-archive.lisp0000644000175000017500000000465613047375022020753 0ustar vagrantvagrant;;; ;;; LOAD ARCHIVE ... ;;; (in-package #:pgloader.parser) (defrule archive-command (or load-csv-file load-dbf-file load-fixed-cols-file)) (defrule another-archive-command (and kw-and archive-command) (:lambda (source) (bind (((_ col) source)) col))) (defrule archive-command-list (and archive-command (* another-archive-command)) (:lambda (source) (destructuring-bind (col1 cols) source (cons :commands (list* col1 cols))))) (defrule archive-source (and kw-load kw-archive kw-from filename-or-http-uri) (:lambda (src) (bind (((_ _ _ source) src)) source))) (defrule load-archive-clauses (and archive-source (? target) (? before-load) archive-command-list (? finally)) (:lambda (command) (bind (((source target before commands finally) command) ((&key before commands finally) (alexandria:alist-plist (remove-if #'null (list before commands finally))))) (list source target :before before :commands commands :finally finally)))) (defrule load-archive load-archive-clauses (:lambda (archive) (destructuring-bind (source pg-db-conn &key before commands finally) archive (when (and (or before finally) (null pg-db-conn)) (error "When using a BEFORE LOAD DO or a FINALLY block, you must provide an archive level target database connection.")) `(lambda () (let* (,@(pgsql-connection-bindings pg-db-conn nil) (archive-file , (destructuring-bind (kind url) source (ecase kind (:http `(with-stats-collection ("download" :section :pre) (pgloader.archive:http-fetch-file ,url))) (:filename url)))) (*fd-path-root* (with-stats-collection ("extract" :section :pre) (pgloader.archive:expand-archive archive-file)))) (progn ,(sql-code-block pg-db-conn :pre before "before load") ;; import from files block ,@(loop for command in commands collect `(funcall ,command)) ,(sql-code-block pg-db-conn :post finally "finally"))))))) pgloader/README.md0000644000175000017500000001460613120677115014032 0ustar vagrantvagrant# PGLoader [![Build Status](https://travis-ci.org/dimitri/pgloader.svg?branch=master)](https://travis-ci.org/dimitri/pgloader) [![Join the chat at https://gitter.im/dimitri/pgloader](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dimitri/pgloader?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) pgloader is a data loading tool for PostgreSQL, using the `COPY` command. Its main advantage over just using `COPY` or `\copy`, and over using a *Foreign Data Wrapper*, is its transaction behaviour, where *pgloader* will keep a separate file of rejected data, but continue trying to `copy` good data in your database. The default PostgreSQL behaviour is transactional, which means that *any* erroneous line in the input data (file or remote database) will stop the entire bulk load for the table. pgloader also implements data reformatting, a typical example of that being the transformation of MySQL datestamps `0000-00-00` and `0000-00-00 00:00:00` to PostgreSQL `NULL` value (because our calendar never had a *year zero*). ## Versioning pgloader version 1.x is quite old and was developed in `TCL`. When faced with maintaining that code, the new emerging development team (hi!) picked `python` instead because that made sense at the time. So pgloader version 2.x was written in python. The current version of pgloader is the 3.x series, which is written in [Common Lisp](http://cliki.net/) for better development flexibility, runtime performance, and support of real threading. The versioning is now following the Emacs model, where any X.0 release number means you're using a development version (alpha, beta, or release candidate). The next stable versions are going to be `3.1` then `3.2` etc. When using a development snapshot rather than a released version the version number includes the git hash (in its abbreviated form): - `pgloader version "3.0.99"` Release candidate 9 for pgloader version 3.1, with a *git tag* named `v3.0.99` so that it's easy to checkout the same sources as the released code. - `pgloader version "3.0.fecae2c"` Development snapshot again *git hash* `fecae2c`. It's possible to have the same sources on another setup with using the git command `git checkout fecae2c`. - `pgloader version "3.1.0"` Stable release. ## LICENCE pgloader is available under [The PostgreSQL Licence](http://www.postgresql.org/about/licence/). ## INSTALL You can install pgloader directly from [apt.postgresql.org](https://wiki.postgresql.org/wiki/Apt) and from official debian repositories, see [packages.debian.org/pgloader](https://packages.debian.org/search?keywords=pgloader). $ apt-get install pgloader You can also use a **docker** image for pgloader at : $ docker pull dimitri/pgloader $ docker run --rm --name pgloader dimitri/pgloader:latest pgloader --version $ docker run --rm --name pgloader dimitri/pgloader:latest pgloader --help ## Build from sources pgloader is now a Common Lisp program, tested using the [SBCL](http://sbcl.org/) (>= 1.2.5) and [Clozure CL](http://ccl.clozure.com/) implementations with [Quicklisp](http://www.quicklisp.org/beta/). When building from sources, you should always build from the current git `HEAD` as it's basically the only source that is managed in a way to ensure it builds aginst current set of dependencies versions. ### Building from sources on debian $ apt-get install sbcl unzip libsqlite3-dev make curl gawk freetds-dev libzip-dev $ cd /path/to/pgloader $ make pgloader $ ./build/bin/pgloader --help ### Building from sources on MacOSX When using [brew](https://brew.sh), it should be a simple `brew install --HEAD pgloader`. When using [macports](https://www.macports.org), then we have a situation to deal with with shared objects pgloader depends on, as reported in issue #161 at : > I was able to get a clean build without having to disable compression after > symlinking /usr/local/lib to /opt/local/lib. Note that I did not have > anything installed to /usr/local/lib so I didn't lose anything here. ### Building from sources on Windows Building pgloader on Windows is supported, thanks to Common Lisp implementations being available on that platform, and to the Common Lisp Standard for making it easy to write actually portable code. It is recommended to have a look at the issues labelled with *Windows support* if you run into trouble when building pgloader: ## More options when building from source The `Makefile` target `pgloader` knows how to produce a Self Contained Binary file for pgloader, found at `./build/bin/pgloader`: $ make pgloader By default, the `Makefile` uses [SBCL](http://sbcl.org/) to compile your binary image, though it's possible to build using [CCL](http://ccl.clozure.com/). $ make CL=ccl pgloader If using `SBCL` and it supports core compression, the make process will use it to generate a smaller binary. To force disabling core compression, you may use: $ make COMPRESS_CORE=no pgloader The `--compress-core` is unique to SBCL, so not used when `CC` is different from the `sbcl` value. You can also tweak the default amount of memory that the `pgloader` image will allow itself using when running through your data (don't ask for more than your current RAM tho): $ make DYNSIZE=8192 pgloader The `make pgloader` command when successful outputs a `./build/bin/pgloader` file for you to use. ## Usage You can either give a command file to pgloader or run it all from the command line, see the [pgloader quick start](http://pgloader.io/howto/quickstart.html) on for more details. $ ./build/bin/pgloader --help $ ./build/bin/pgloader For example, for a full migration from SQLite: $ createdb newdb $ pgloader ./test/sqlite/sqlite.db postgresql:///newdb Or for a full migration from MySQL, including schema definition (tables, indexes, foreign keys, comments) and parallel loading of the corrected data: $ createdb pagila $ pgloader mysql://user@localhost/sakila postgresql:///pagila See the documentation file `pgloader.1.md` for details. You can compile that file into a manual page or an HTML page thanks to the `ronn` application: $ apt-get install ruby-ronn $ make docs pgloader/LICENSE0000644000175000017500000000201113121262300013526 0ustar vagrantvagrantpgloader Copyright (c) 2005-2017, The PostgreSQL Global Development Group Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without a written agreement is hereby granted, provided that the above copyright notice and this paragraph and the following two paragraphs appear in all copies. IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.pgloader/pgloader.asd0000644000175000017500000002436213127307525015043 0ustar vagrantvagrant;;;; pgloader.asd (asdf:defsystem #:pgloader :serial t :description "Load data into PostgreSQL" :author "Dimitri Fontaine " :license "The PostgreSQL Licence" :depends-on (#:uiop ; host system integration #:cl-log ; logging #:postmodern ; PostgreSQL protocol implementation #:cl-postgres ; low level bits for COPY streaming #:simple-date ; FIXME: recheck dependency #:qmynd ; MySQL protocol implemenation #:split-sequence ; some parsing is made easy #:cl-csv ; full CSV reader #:cl-fad ; file and directories #:lparallel ; threads, workers, queues #:esrap ; parser generator #:alexandria ; utils #:drakma ; http client, download archives #:flexi-streams ; streams #:usocket ; UDP / syslog #:local-time ; UDP date parsing #:command-line-arguments ; for the main function #:abnf ; ABNF parser generator (for syslog) #:db3 ; DBF version 3 file reader #:ixf ; IBM IXF file format reader #:py-configparser ; Read old-style INI config files #:sqlite ; Query a SQLite file #:cl-base64 ; Decode base64 data #:trivial-backtrace ; For --debug cli usage #:cl-markdown ; To produce the website #:metabang-bind ; the bind macro #:mssql ; M$ SQL connectivity #:uuid ; Transforming MS SQL unique identifiers #:quri ; decode URI parameters #:cl-ppcre ; Perl Compatible Regular Expressions ) :components ((:module "src" :components ((:file "params") (:file "package" :depends-on ("params")) (:module "monkey" :components ((:file "bind") (:file "mssql"))) (:module "utils" :depends-on ("package" "params") :components ((:file "charsets") (:file "batch") (:file "threads") (:file "logs") (:file "utils") (:file "state") ;; user defined transforms package and pgloader ;; provided ones (:file "transforms") ;; PostgreSQL related utils (:file "read-sql-files") (:file "queries") (:file "quoting") (:file "catalog" :depends-on ("quoting")) (:file "alter-table" :depends-on ("catalog")) ;; State, monitoring, reporting (:file "reject" :depends-on ("state")) (:file "report" :depends-on ("state" "utils" "catalog")) (:file "monitor" :depends-on ("logs" "state" "reject" "report")) (:file "archive" :depends-on ("logs")) ;; generic connection api (:file "connection" :depends-on ("archive")))) ;; package pgloader.pgsql (:module pgsql :depends-on ("package" "params" "utils") :serial t :components ((:file "copy-format") (:file "connection") (:file "pgsql-ddl") (:file "pgsql-schema") (:file "merge-catalogs" :depends-on ("pgsql-schema")) (:file "pgsql-trigger") (:file "pgsql-index-filter") (:file "pgsql-create-schema" :depends-on ("pgsql-trigger")) (:file "retry-batch") (:file "copy-from-queue" :depends-on ("copy-format" "connection" "retry-batch" "pgsql-create-schema" "pgsql-schema")))) (:module "parsers" :depends-on ("params" "package" "utils" "pgsql" "monkey") :serial t :components ((:file "parse-ini") (:file "command-utils") (:file "command-keywords") (:file "command-regexp") (:file "command-db-uri") (:file "command-source") (:file "command-options") (:file "command-sql-block") (:file "command-sexp") (:file "command-csv") (:file "command-ixf") (:file "command-fixed") (:file "command-copy") (:file "command-dbf") (:file "command-cast-rules") (:file "command-materialize-views") (:file "command-alter-table") (:file "command-mysql") (:file "command-including-like") (:file "command-mssql") (:file "command-sqlite") (:file "command-archive") (:file "command-parser") (:file "date-format"))) ;; Source format specific implementations (:module sources :depends-on ("monkey" ; mssql driver patches "params" "package" "pgsql" "utils" "parsers") :components ((:module "common" :components ((:file "api") (:file "methods" :depends-on ("api")) (:file "md-methods" :depends-on ("api")) (:file "db-methods" :depends-on ("api")) (:file "casting-rules") (:file "files-and-pathnames") (:file "project-fields"))) (:module "csv" :depends-on ("common") :components ((:file "csv-guess") ;; (:file "csv-database") (:file "csv"))) (:file "fixed" :depends-on ("common" "csv")) (:file "copy" :depends-on ("common" "csv")) (:module "db3" :depends-on ("common" "csv") :components ((:file "db3-schema") (:file "db3" :depends-on ("db3-schema")))) (:module "ixf" :depends-on ("common") :components ((:file "ixf-schema") (:file "ixf" :depends-on ("ixf-schema")))) ;(:file "syslog") ; experimental... (:module "sqlite" :depends-on ("common") :components ((:file "sqlite-cast-rules") (:file "sqlite-schema" :depends-on ("sqlite-cast-rules")) (:file "sqlite" :depends-on ("sqlite-cast-rules" "sqlite-schema")))) (:module "mssql" :depends-on ("common") :components ((:file "mssql-cast-rules") (:file "mssql-schema" :depends-on ("mssql-cast-rules")) (:file "mssql" :depends-on ("mssql-cast-rules" "mssql-schema")) (:file "mssql-index-filters" :depends-on ("mssql")))) (:module "mysql" :depends-on ("common") :components ((:file "mysql-cast-rules") (:file "mysql-schema" :depends-on ("mysql-cast-rules")) ;; (:file "mysql-csv" ;; :depends-on ("mysql-schema")) (:file "mysql" :depends-on ("mysql-cast-rules" "mysql-schema")))))) (:module "regress" :depends-on ("params" "package" "utils" "pgsql") :components ((:file "regress"))) ;; the main entry file, used when building a stand-alone ;; executable image (:file "main" :depends-on ("params" "package" "utils" "parsers" "sources" "regress")))) ;; to produce the website (:module "docs" :components ((:module src :components ((:file "docs"))))))) pgloader/test/0000755000175000017500000000000013127307053013521 5ustar vagrantvagrantpgloader/test/reformat.load0000644000175000017500000000174613047375022016213 0ustar vagrantvagrant/* * This test is ported from pgloader 2.x where it was defined as: * * [reformat] * table = reformat * format = text * filename = reformat/reformat.data * field_sep = | * columns = id, timestamp * reformat = timestamp:mysql:timestamp * */ LOAD CSV FROM inline (id, timestamp) INTO postgresql:///pgloader?reformat ( id, timestamp timestamptz using (date-with-no-separator timestamp) ) WITH fields optionally enclosed by '"', fields escaped by double-quote, fields terminated by '|' SET client_encoding to 'latin1', work_mem to '12MB', standard_conforming_strings to 'on' BEFORE LOAD DO $$ drop table if exists reformat; $$, $$ create table reformat ( id integer primary key, timestamp timestamp with time zone ); $$; 1|20071119150718 2|20041002153048 3|20060111060850 4|20060111060958 5|00000000000000 pgloader/test/dbf.load0000644000175000017500000000042513114021347015111 0ustar vagrantvagrant/* * The file comes from: * * http://www.insee.fr/fr/methodes/nomenclatures/cog/telechargement/2013/dbf/reg2013.dbf */ LOAD DBF FROM data/reg2013.dbf with encoding cp850 INTO postgresql:///pgloader?public.reg2013 WITH truncate, create table, disable triggers; pgloader/test/bossa.sql0000644000175000017500000000116513047375022015356 0ustar vagrantvagrant--- --- We need to run some tests where we don't provide for the schema within --- the pgloader command itself, so we prepare the schema "manually" here in --- advance. --- drop table if exists intf_derivatives, intf_stocks; create table intf_stocks ( ticker text, quote_date date, open numeric, high numeric, low numeric, close numeric, volume bigint ); create table intf_derivatives ( ticker text, quote_date date, open numeric, high numeric, low numeric, close numeric, volume bigint, openint bigint ); pgloader/test/README.md0000644000175000017500000000021613047375022015001 0ustar vagrantvagrant# pgloader tests In the `parser` directory are tests for the parser only, in the current directory are tests that can be run to import data. pgloader/test/csv-newline.load0000644000175000017500000000065713047375022016626 0ustar vagrantvagrantLOAD CSV FROM INLINE INTO postgresql:///pgloader?lines (f1, f2, f3) WITH truncate, fields optionally enclosed by '"', fields escaped by double-quote, fields terminated by '¦', lines terminated by '¶' BEFORE LOAD DO $$ drop table if exists lines; $$, $$ create table if not exists lines (id serial, f1 text, f2 text, f3 text); $$; plop¦bar¦foo¶plip¦second line¦bar¶ pgloader/test/sqlite.load0000644000175000017500000000104213116323671015662 0ustar vagrantvagrantload database from 'sqlite/sqlite.db' into postgresql:///pgloader -- with include drop, create tables, create indexes, reset sequences before load do $$ drop schema if exists sqlite cascade; $$, $$ create schema if not exists sqlite; $$ cast column character.f1 to text drop typemod, column appointments.time to timestamptz drop default, type intege to integer, type character to varchar keep typemod set work_mem to '16MB', maintenance_work_mem to '512 MB', search_path to 'sqlite'; pgloader/test/archive.load0000644000175000017500000000403513047375022016007 0ustar vagrantvagrant/* * Loading from a ZIP archive containing CSV files. The full test can be * done with using the archive found at * http://geolite.maxmind.com/download/geoip/database/GeoLiteCity_CSV/GeoLiteCity-latest.zip * * And a very light version of this data set is found at * http://pgsql.tapoueh.org/temp/foo.zip for quick testing. */ LOAD ARCHIVE FROM http://pgsql.tapoueh.org/temp/foo.zip INTO postgresql:///ip4r BEFORE LOAD DO $$ create extension if not exists ip4r; $$, $$ create schema if not exists geolite; $$ EXECUTE 'geolite.sql' LOAD CSV FROM FILENAME MATCHING ~/GeoLiteCity-Location.csv/ WITH ENCODING iso-8859-1 ( locId, country, region [ null if blanks ], city [ null if blanks ], postalCode [ null if blanks ], latitude, longitude, metroCode [ null if blanks ], areaCode [ null if blanks ] ) INTO postgresql:///ip4r?geolite.location ( locid,country,region,city,postalCode, location point using (format nil "(~a,~a)" longitude latitude), metroCode,areaCode ) WITH skip header = 2, fields optionally enclosed by '"', fields escaped by double-quote, fields terminated by ',' AND LOAD CSV FROM FILENAME MATCHING ~/GeoLiteCity-Blocks.csv/ WITH ENCODING iso-8859-1 ( startIpNum, endIpNum, locId ) INTO postgresql:///ip4r?geolite.blocks ( iprange ip4r using (ip-range startIpNum endIpNum), locId ) WITH skip header = 2, fields optionally enclosed by '"', fields escaped by double-quote, fields terminated by ',' AFTER LOAD DO $$ create index blocks_ip4r_idx on geolite.blocks using gist(iprange); $$; pgloader/test/sqlite-base64.load0000644000175000017500000000032013047375022016742 0ustar vagrantvagrantload database from 'sqlite/storage.sqlite' into postgresql:///storage with include drop, create tables, create indexes, reset sequences set work_mem to '16MB', maintenance_work_mem to '512 MB';pgloader/test/csv-escape-mode.load0000644000175000017500000001035013047375022017336 0ustar vagrantvagrantLOAD CSV FROM inline ( pageid, createDate, archive, label, crawlid, wptid, wptrun, url, urlShort, urlhash, cdn [null if '\N'], startedDateTime, TTFB [null if '\N'], renderStart, onContentLoaded [null if '\N'], onLoad, fullyLoaded, visualComplete, PageSpeed [null if '\N'], SpeedIndex [null if '\N'], rank [null if '\N'], reqTotal, reqHtml, reqJS, reqCSS, reqImg, reqGif, reqJpg, reqPng, reqFont, reqFlash, reqJson, reqOther, bytesTotal, bytesHtml, bytesJS, bytesCSS, bytesImg, bytesGif, bytesJpg, bytesPng, bytesFont, bytesFlash, bytesJson, bytesOther, bytesHtmlDoc, numDomains, maxDomainReqs, numRedirects, numHttps, numGlibs, numErrors, numCompressed, numDomElements, maxageNull, maxage0, maxage1, maxage30, maxage365, maxageMore, gzipTotal, gzipSavings, _connections, _adult_site, avg_dom_depth, document_height, document_width, localstorage_size, sessionstorage_size, num_iframes, num_scripts, doctype, meta_viewport) INTO postgresql:///pgloader?csv_escape_mode ( id bigint using (identity pageid), doctype ) WITH fields optionally enclosed by '"', fields escaped by '\', fields terminated by ',', csv escape mode following BEFORE LOAD DO $$ drop table if exists csv_escape_mode; $$, $$ CREATE TABLE csv_escape_mode ( id serial primary key, doctype text ); $$ ; "27955878","1434380476","All","Jun 15 2015","329","150615_0_D0M","3","http://www.flydubai.com/","http://www.flydubai.com/","9211","Incapsula","1434376648","1543","6326",\N,"11959","12813","11600","80","8854","8521","119","8","42","13","53","10","4","38","0","0","0","2","661291","16571","320664","54020","270035","7815","200089","60725","0","0","0","0","15555","17","99","8","0","0","5","50","1007","0","49","69","1","0","0","409245","0","33","0","11","1317","1008","69","37","2","55","HTML","","0","0","1","0","0","0","0","0","1","0","0","0" "27955879","1434380476","All","Jun 15 2015","329","150615_0_D2D","1","http://www.seb.se/","http://www.seb.se/","2702",\N,"1434376676","1317","6470",\N,"10319","15431","9300","64","7668","8578","31","2","10","1","12","2","7","1","4","0","0","1","917326","36574","247483","297144","214183","89","208214","3199","121942","0","0","0","36354","6","24","3","0","1","3","2","382","0","14","3","10","3","1","587035","434622","10","0","9","2091","1008","0","0","0","8","html","width=device-width, initial-scale=1.0","0","0","1","0","0","1","0","0","0","0","0","387" "27955880","1434380476","All","Jun 15 2015","329","150615_0_CW1","3","http://www.teletalk.com.bd/","http://www.teletalk.com.bd/","9502",\N,"1434376510","712","3808","904","10953","11564","13600","72","5541","8374","46","4","0","1","39","1","36","1","0","2","0","0","708768","62576","0","13165","266762","2419","245978","18071","0","366265","0","0","484","1","46","0","1","0","0","0","8","0","46","0","0","0","0","75752","66373","44","0","2","698","1008","0","0","0","0","HTML -//W3C//DTD HTML 4.01 Frameset//EN\\","","0","2","0","0","0","0","0","366265","0","0","0","0" "27955881","1434380476","All","Jun 15 2015","329","150615_0_D2J","2","http://www.helpster.de/","http://www.helpster.de/","59167",\N,"1434376702","388","2935","5607","6922","8640","4100","90","2984","8583","54","3","14","1","30","4","18","8","2","0","0","4","492958","74870","153806","10578","228001","156","184659","43186","25700","0","0","3","74512","14","18","2","1","0","1","14","644","0","18","3","2","31","0","257661","6511","22","0","10","4295","1112","90","0","1","26","html","width=device-width, initial-scale=1","0","0","0","0","0","0","0","0","0","0","0","0" "27955882","1434380476","All","Jun 15 2015","329","150615_0_CW6","1","http://www.namepros.com/","http://www.namepros.com/","32025","Cloudflare","1434376387","2323","5314",\N,"8087","18242","12500","92","6179","8379","93","8","30","3","48","6","24","17","1","0","0","3","933198","80301","579744","25109","165484","248","129691","35284","82560","0","0","0","35788","26","47","1","1","0","92","40","2548","0","16","11","26","38","2","705183","0","38","0","11","3655","1008","0","0","7","34","html","width=device-width, initial-scale=1","0","0","0","0","0","0","0","0","0","0","0","0"pgloader/test/partial.load0000644000175000017500000000172113047375022016021 0ustar vagrantvagrant/* * This test is ported from pgloader 2.x where it was defined as: * * [partial] * table = partial * format = text * filename = partial/partial.data * field_sep = % * columns = * * only_cols = 1-3, 5 * */ LOAD CSV FROM inline (a, b, c, d, e) INTO postgresql:///pgloader?csv.partial (a, b, c, e) WITH drop indexes, fields optionally enclosed by '"', fields escaped by double-quote, fields terminated by '%' SET client_encoding to 'latin1', work_mem to '12MB', standard_conforming_strings to 'on' BEFORE LOAD DO $$ drop table if exists csv.partial; $$, $$ create table csv.partial ( a integer unique, b text, c text, d text, e text ); $$, $$ create index on csv.partial(b); $$ ; 1%foo%bar%baz%hop 2%foo%bar%baz%hop 3%foo%bar%baz%hop 4%foo%bar%baz%hop 5%foo%bar%baz%hop 6%foo%bar%baz%hop 7%foo%bar%baz%hop pgloader/test/sakila-data.load0000644000175000017500000000302113047375022016533 0ustar vagrantvagrantload database from mysql://root@localhost/sakila into postgresql:///sakila -- WITH include drop, create tables, no truncate, -- create indexes, reset sequences, foreign keys -- WITH batch rows = 10000 WITH concurrency = 1, workers = 6, max parallel create index = 4 -- uncomment the following line to test loading into an already -- existing schema, and make sure the schema actually is ready by -- having done a first migration without those options: , create no tables, include drop, truncate SET maintenance_work_mem to '128MB', work_mem to '12MB', search_path to 'sakila, public, "$user"' CAST type date drop not null drop default using zero-dates-to-null, type datetime to timestamp drop default drop not null using zero-dates-to-null -- type tinyint to boolean using tinyint-to-boolean, -- type year to integer drop typemod -- now a default -- MATERIALIZE VIEWS film_list, staff_list MATERIALIZE ALL VIEWS ALTER TABLE NAMES MATCHING ~/_list$/, 'sales_by_store', ~/sales_by/ SET SCHEMA 'mv' ALTER TABLE NAMES MATCHING 'sales_by_store' RENAME TO 'sales_by_store_list' ALTER TABLE NAMES MATCHING 'film' RENAME TO 'films' ALTER SCHEMA 'sakila' RENAME TO 'pagila' -- INCLUDING ONLY TABLE NAMES MATCHING ~/film/, 'actor' EXCLUDING TABLE NAMES MATCHING ~ ; -- BEFORE LOAD DO -- $$ create schema if not exists sakila; $$, -- $$ create schema if not exists mv; $$, -- $$ alter database sakila set search_path to sakila, mv, public; $$ pgloader/test/csv-keep-extra-blanks.load0000644000175000017500000000131513047375022020472 0ustar vagrantvagrantLOAD CSV FROM INLINE INTO postgresql:///pgloader?nulls (f1, f2, f3) WITH truncate, keep unquoted blanks, fields optionally enclosed by '"', fields escaped by double-quote, fields terminated by ',' BEFORE LOAD DO $$ drop table if exists nulls; $$, $$ create table if not exists nulls (id serial, f1 text, f2 text, f3 text); $$; "quoted empty string","","should be empty string" "no value between separators",,"should be null" "quoted blanks"," ","should be blanks" "unquoted blanks", ,"should be null" "unquoted string",no quote,"should be 'no quote'" "quoted separator","a,b,c","should be 'a,b,c'" "keep extra blanks", test string , "should be an error" pgloader/test/nofile.load0000644000175000017500000000103713047375022015641 0ustar vagrantvagrantLOAD CSV FROM 'this/file/does/not/exists.csv' WITH ENCODING latin1 (a, b, c, d, e) INTO postgresql:///pgloader?csv.nofile WITH truncate, skip header = 1, fields optionally enclosed by '"', fields escaped by double-quote, fields terminated by ',' BEFORE LOAD DO $$ create schema if not exists csv; $$, $$ create table if not exists csv.nofile ( a text, b text, c text, d text, e text ); $$; pgloader/test/csv-header.load0000644000175000017500000000104213047375022016402 0ustar vagrantvagrantLOAD CSV FROM INLINE INTO postgresql:///pgloader?"group" WITH truncate, fields terminated by ',', csv header BEFORE LOAD DO $$ drop table if exists "group"; $$, $$ CREATE TABLE "group" ( somefields text, rekplcode text, "repl$grpid" text, "repl$id" text, another text, fields text ) $$; somefields,reklpcode,repl$grpid,repl$id,another,fields a,b,c,d,e,f foo,bar,baz,quux,foobar,fizzbuzz pgloader/test/sqlite-testpk.load0000644000175000017500000000033613116206772017201 0ustar vagrantvagrantload database from 'sqlite/test_pk.db' into postgresql:///pgloader before load do $$ drop schema if exists sqlite cascade; $$, $$ create schema if not exists sqlite; $$ set search_path to 'sqlite'; pgloader/test/csv-districts-stdin.load0000644000175000017500000000265613047375022020315 0ustar vagrantvagrant/* * The data file comes from the US census website: * * http://www.census.gov/geo/maps-data/data/gazetteer2013.html * * We import it directly into pgloader git repository so that we have at * least a CSV test where we read from a local file... */ LOAD CSV FROM stdin ( usps, -- United States Postal Service State Abbreviation geoid, -- Geographic Identifier aland, -- Land Area (square meters) awater, -- Water Area (square meters) aland_sqmi, -- SQMI Land Area (square miles) awater_sqmi, -- SQMI Water Area (square miles) intptlat, -- Latitude (decimal degrees) intptlong -- Longitude (decimal degrees) ) INTO postgresql:///pgloader?districts ( usps, geoid, aland, awater, aland_sqmi, awater_sqmi, location point using (format nil "(~a,~a)" intptlong intptlat) ) WITH truncate, skip header = 1, batch rows = 200, batch size = 1024 kB, batch concurrency = 3, fields terminated by '\t' BEFORE LOAD DO $$ drop table if exists districts; $$, $$ create table districts ( usps text, geoid text, aland bigint, awater bigint, aland_sqmi double precision, awater_sqmi double precision, location point ); $$; pgloader/test/serial.load0000644000175000017500000000160713047375022015647 0ustar vagrantvagrant/* * This test is ported from pgloader 2.x where it was defined as: * * [serial] * table = serial * format = text * filename = serial/serial.data * field_sep = ; * columns = b:2, c:1 * */ LOAD CSV FROM inline (c, b) INTO postgresql:///pgloader?serial (b, c) WITH fields optionally enclosed by '"', fields escaped by double-quote, fields terminated by ';' SET client_encoding to 'latin1', work_mem to '12MB', standard_conforming_strings to 'on' BEFORE LOAD DO $$ drop table if exists serial; $$, $$ create table serial ( a serial primary key, b date, c text ); $$; some first row text;2006-11-11 some second row text;2006-11-11 some third row text;2006-10-12 \ ;2006-10-4 some fifth row text;2006-5-12 some sixth row text;2006-7-10 some null date to play with; pgloader/test/csv-before-after.load0000644000175000017500000004025013047375022017517 0ustar vagrantvagrantLOAD CSV FROM INLINE WITH ENCODING iso-8859-1 ( startIpNum, endIpNum, locId ) INTO postgresql:///pgloader?csv.blocks ( iprange ip4r using (ip-range startIpNum endIpNum), locId ) WITH truncate, fields optionally enclosed by '"', fields escaped by double-quote, fields terminated by ',' SET work_mem to '32 MB', maintenance_work_mem to '64 MB' BEFORE LOAD DO $$ create extension if not exists ip4r; $$, $$ drop schema if exists csv cascade; $$, $$ create schema csv; $$, $$ create table if not exists csv.blocks ( iprange ip4r, locid integer ); $$, $$ drop index if exists csv.blocks_ip4r_idx; $$, $$ truncate table csv.blocks; $$ AFTER LOAD DO $$ create index blocks_ip4r_idx on csv.blocks using gist(iprange); $$; "3754901760","3754902015","195756" "3754902016","3754903039","209" "3754903040","3754903551","29727" "3754903552","3754904319","209" "3754904320","3754904575","29727" "3754904576","3754904703","209" "3754904704","3754904831","29727" "3754904832","3754906111","209" "3754906112","3754906367","107738" "3754906368","3754908159","209" "3754908160","3754908415","152101" "3754908416","3754908671","22537" "3754908672","3754908927","152101" "3754908928","3754909695","209" "3754909696","3754909951","22537" "3754909952","3754911231","209" "3754911232","3754911487","258257" "3754911488","3754914047","209" "3754914048","3754914303","157887" "3754914304","3754914815","209" "3754914816","3754915071","157887" "3754915072","3754915327","36801" "3754915328","3754915839","209" "3754915840","3754916351","157887" "3754916352","3754916607","36801" "3754916608","3754916863","209" "3754916864","3754917119","36801" "3754917120","3754917375","209" "3754917376","3754917887","36801" "3754917888","3754918143","209" "3754918144","3754918399","36801" "3754918400","3754919423","209" "3754919424","3754919935","36801" "3754919936","3754920447","22537" "3754920448","3754920959","209" "3754920960","3754921215","105970" "3754921216","3754921983","209" "3754921984","3754922239","195756" "3754922240","3754923007","209" "3754923008","3754923519","29727" "3754923520","3754927615","209" "3754927616","3754927871","104087" "3754927872","3754928639","209" "3754928640","3754928895","111006" "3754928896","3754930175","209" "3754930176","3754930431","104486" "3754930432","3754930687","157991" "3754930688","3754930943","104486" "3754930944","3754934271","209" "3754934272","3754934783","29727" "3754934784","3754935807","209" "3754935808","3754936319","29727" "3754936320","3754941439","209" "3754941440","3754941695","199446" "3754941696","3754941951","209" "3754941952","3754942207","152101" "3754942208","3754942719","209" "3754942720","3754942975","108056" "3754942976","3754950655","209" "3754950656","3754983423","24328" "3754983424","3755016191","47667" "3755016192","3755044863","24328" "3755044864","3755048959","104221" "3755048960","3755114495","24328" "3755114496","3755122687","104025" "3755122688","3755180031","24328" "3755180032","3755196415","104025" "3755196416","3755212799","24328" "3755212800","3755343871","16496" "3755343872","3755474943","104129" "3755474944","3755476735","14614" "3755476736","3755476991","346442" "3755476992","3755494143","14614" "3755494144","3755494399","113046" "3755494400","3755494911","14614" "3755494912","3755495167","341794" "3755495168","3755507967","14614" "3755507968","3755508223","53101" "3755508224","3755508479","14614" "3755508480","3755508735","113548" "3755508736","3755509759","14614" "3755509760","3755510015","53101" "3755510016","3755511039","14614" "3755511040","3755511295","53101" "3755511296","3755512063","14614" "3755512064","3755512319","336695" "3755512320","3755539711","14614" "3755539712","3755539967","53101" "3755539968","3755540735","14614" "3755540736","3755540991","336677" "3755540992","3755541247","20630" "3755541248","3755541759","14614" "3755541760","3755542015","20630" "3755542016","3755542271","14614" "3755542272","3755542527","336677" "3755542528","3755544319","14614" "3755544320","3755544575","113245" "3755544576","3755544831","112160" "3755544832","3755545855","14614" "3755545856","3755546111","104325" "3755546112","3755553535","14614" "3755553536","3755553791","112896" "3755553792","3755556095","14614" "3755556096","3755556351","106120" "3755556352","3755565311","14614" "3755565312","3755565823","112608" "3755565824","3755567871","14614" "3755567872","3755568127","112398" "3755568128","3755576319","14614" "3755576320","3755576575","336692" "3755576576","3755578367","14614" "3755578368","3755578879","337936" "3755578880","3755582463","14614" "3755582464","3755582719","338005" "3755582720","3755583999","14614" "3755584000","3755584255","337522" "3755584256","3755587583","14614" "3755587584","3755587839","106418" "3755587840","3755588863","14614" "3755588864","3755589375","109797" "3755589376","3755604479","14614" "3755604480","3755604735","57645" "3755604736","3755604991","346205" "3755604992","3755610111","14614" "3755610112","3755610367","111975" "3755610368","3755612927","14614" "3755612928","3755613183","112589" "3755613184","3755615999","14614" "3755616000","3755616255","104239" "3755616256","3755619583","14614" "3755619584","3755619839","41997" "3755619840","3755623423","14614" "3755623424","3755623679","337505" "3755623680","3755624191","14614" "3755624192","3755624447","105896" "3755624448","3755624703","337505" "3755624704","3755633663","14614" "3755633664","3755633919","64704" "3755633920","3755634175","113229" "3755634176","3755638783","14614" "3755638784","3755639039","336674" "3755639040","3755639295","341516" "3755639296","3755639551","14614" "3755639552","3755639807","336674" "3755639808","3755640831","14614" "3755640832","3755641087","21250" "3755641088","3755641855","14614" "3755641856","3755642111","336674" "3755642112","3755643391","14614" "3755643392","3755643647","21250" "3755643648","3755644415","14614" "3755644416","3755644671","21250" "3755644672","3755645951","14614" "3755645952","3755646207","336674" "3755646208","3755647487","14614" "3755647488","3755647743","21250" "3755647744","3755647999","14614" "3755648000","3755648255","21250" "3755648256","3755648511","14614" "3755648512","3755648767","56483" "3755648768","3755649791","14614" "3755649792","3755650047","336674" "3755650048","3755650815","14614" "3755650816","3755651071","31831" "3755651072","3755651327","14614" "3755651328","3755651839","104232" "3755651840","3755652095","14614" "3755652096","3755652351","336674" "3755652352","3755661055","14614" "3755661056","3755661311","109384" "3755661312","3755661567","14614" "3755661568","3755661823","285672" "3755661824","3755672319","14614" "3755672320","3755672575","112305" "3755672576","3755685887","14614" "3755685888","3755686143","416519" "3755686144","3755690751","14614" "3755690752","3755691007","113121" "3755691008","3755693567","14614" "3755693568","3755693823","104230" "3755693824","3755704319","14614" "3755704320","3755704831","337510" "3755704832","3755705855","14614" "3755705856","3755706111","106419" "3755706112","3755707135","14614" "3755707136","3755707391","337510" "3755707392","3755710207","14614" "3755710208","3755710463","337510" "3755710464","3755717375","14614" "3755717376","3755717631","106417" "3755717632","3755719679","14614" "3755719680","3755719935","336676" "3755719936","3755725311","14614" "3755725312","3755725567","113477" "3755725568","3755732223","14614" "3755732224","3755732479","337495" "3755732480","3755733247","14614" "3755733248","3755733503","112338" "3755733504","3755734527","14614" "3755734528","3755734783","337495" "3755734784","3755735551","14614" "3755735552","3755735807","112214" "3755735808","3755737087","14614" "3755737088","3755868159","104339" "3755868160","3755933695","119" "3755933696","3755935487","69710" "3755935488","3755935999","336681" "3755936000","3755939327","69710" "3755939328","3755939583","336681" "3755939584","3755945215","69710" "3755945216","3755945471","336681" "3755945472","3755947007","69710" "3755947008","3755947263","336681" "3755947264","3755952639","69710" "3755952640","3755952895","336681" "3755952896","3755966463","69710" "3755966464","3755966719","103" "3755966720","3755966975","45899" "3755966976","3755967743","103" "3755967744","3755968511","45899" "3755968512","3755968767","103" "3755968768","3755969535","45899" "3755969536","3755970303","103" "3755970304","3755970559","45899" "3755970560","3755970815","108155" "3755970816","3755971071","45899" "3755971072","3755971327","103" "3755971328","3755972095","45899" "3755972096","3755972351","103" "3755972352","3755973887","45899" "3755973888","3755974655","103" "3755974656","3755974911","112503" "3755974912","3755976703","111" "3755976704","3755978751","114" "3755978752","3755986943","49" "3755986944","3755987967","111" "3755987968","3755988223","342351" "3755988224","3755988991","111" "3755988992","3755990015","94" "3755990016","3755991039","191" "3755991040","3755999231","111" "3755999232","3756002815","103" "3756002816","3756003071","127" "3756003072","3756009215","103" "3756009216","3756009471","348867" "3756009472","3756010495","103" "3756010496","3756010751","368477" "3756010752","3756014079","103" "3756014080","3756014335","45899" "3756014336","3756015616","103" "3756015617","3756031998","20067" "3756031999","3756032000","103" "3756032001","3756064766","20067" "3756064767","3756064767","103" "3756064768","3756083967","108155" "3756083968","3756084223","402895" "3756084224","3756086271","108155" "3756086272","3756086527","70072" "3756086528","3756130302","108155" "3756130303","3756130303","103" "3756130304","3756130815","105450" "3756130816","3756131327","25833" "3756131328","3756147967","105450" "3756147968","3756148223","24852" "3756148224","3756153087","105450" "3756153088","3756153343","25938" "3756153344","3756154111","105450" "3756154112","3756154367","24852" "3756154368","3756157183","105450" "3756157184","3756157439","45896" "3756157440","3756162815","105450" "3756162816","3756163071","25938" "3756163072","3756195838","105450" "3756195839","3756195839","103" "3756195840","3756254463","108155" "3756254464","3756254719","20067" "3756254720","3756255487","108155" "3756255488","3756255743","125023" "3756255744","3756261374","108155" "3756261375","3756261375","103" "3756261376","3756284159","322866" "3756284160","3756284415","20067" "3756284416","3756324863","322866" "3756324864","3756325375","20067" "3756325376","3756326910","322866" "3756326911","3756326911","103" "3756326912","3756392446","322866" "3756392447","3756392447","103" "3756392448","3756395263","105450" "3756395264","3756395519","114830" "3756395520","3756399359","105450" "3756399360","3756399615","107341" "3756399616","3756422911","105450" "3756422912","3756423167","187304" "3756423168","3756457982","105450" "3756457983","3756457983","103" "3756457984","3756474111","108155" "3756474112","3756474367","45899" "3756474368","3756494591","108155" "3756494592","3756494847","30619" "3756494848","3756499455","108155" "3756499456","3756499711","30619" "3756499712","3756523518","108155" "3756523519","3756523519","103" "3756523520","3756526847","20067" "3756526848","3756527103","32723" "3756527104","3756529919","20067" "3756529920","3756530175","114830" "3756530176","3756532991","20067" "3756532992","3756533247","114830" "3756533248","3756539391","20067" "3756539392","3756539647","114830" "3756539648","3756541695","20067" "3756541696","3756541951","114830" "3756541952","3756543487","20067" "3756543488","3756543743","202074" "3756543744","3756545023","20067" "3756545024","3756545279","114830" "3756545280","3756552447","20067" "3756552448","3756552703","114830" "3756552704","3756553727","20067" "3756553728","3756553983","62392" "3756553984","3756559103","20067" "3756559104","3756559359","32723" "3756559360","3756589054","20067" "3756589055","3756589055","103" "3756589056","3756608511","105450" "3756608512","3756608767","30619" "3756608768","3756654590","105450" "3756654591","3756654591","103" "3756654592","3756662015","20067" "3756662016","3756662271","30619" "3756662272","3756668671","20067" "3756668672","3756668927","30619" "3756668928","3756671487","20067" "3756671488","3756671743","30619" "3756671744","3756677887","20067" "3756677888","3756678399","30619" "3756678400","3756697087","20067" "3756697088","3756697343","30619" "3756697344","3756706559","20067" "3756706560","3756706815","109805" "3756706816","3756715519","20067" "3756715520","3756715775","30619" "3756715776","3756720126","20067" "3756720127","3756720127","103" "3756720128","3756734463","108155" "3756734464","3756734719","30619" "3756734720","3756752639","108155" "3756752640","3756752895","106037" "3756752896","3756768767","108155" "3756768768","3756769023","30619" "3756769024","3756769279","108155" "3756769280","3756769535","109350" "3756769536","3756780543","108155" "3756780544","3756780799","30619" "3756780800","3756785662","108155" "3756785663","3756785663","103" "3756785664","3756834303","108155" "3756834304","3756834559","30619" "3756834560","3756838143","108155" "3756838144","3756838399","30619" "3756838400","3756851198","108155" "3756851199","3756851199","103" "3756851200","3756916734","20067" "3756916735","3756916735","103" "3756916736","3756921087","105450" "3756921088","3756921343","20067" "3756921344","3756925951","105450" "3756925952","3756926207","20067" "3756926208","3756931327","105450" "3756931328","3756931583","20067" "3756931584","3756937983","105450" "3756937984","3756938239","20067" "3756938240","3756944127","105450" "3756944128","3756944383","20067" "3756944384","3756950527","105450" "3756950528","3756950783","20067" "3756950784","3756956415","105450" "3756956416","3756956671","20067" "3756956672","3756960255","105450" "3756960256","3756960511","20067" "3756960512","3756975871","105450" "3756975872","3756976127","20067" "3756976128","3756977151","105450" "3756977152","3756977407","20067" "3756977408","3756982270","105450" "3756982271","3756982271","103" "3756982272","3757023231","20067" "3757023232","3757027327","45899" "3757027328","3757032191","20067" "3757032192","3757032447","22962" "3757032448","3757032703","20067" "3757032704","3757033215","22962" "3757033216","3757047806","20067" "3757047807","3757047807","103" "3757047808","3757572095","104129" "3757572096","3757834239","14431" "3757834240","3757867007","11716" "3757867008","3757875199","24328" "3757875200","3757883391","49" "3757883392","3757891583","47667" "3757891584","3757899775","14431" "3757899776","3757965311","22883" "3757965312","3758030847","103995" "3758030848","3758063615","24328" "3758063616","3758063871","35428" "3758063872","3758064127","25389" "3758064128","3758064383","35428" "3758064384","3758064639","14416" "3758064640","3758065919","35428" "3758065920","3758066175","14416" "3758066176","3758066943","35428" "3758066944","3758067199","104037" "3758067200","3758067711","35428" "3758067712","3758067967","14416" "3758067968","3758068223","35428" "3758068224","3758068351","21240" "3758068352","3758068479","14416" "3758068480","3758068735","35428" "3758068736","3758068991","21240" "3758068992","3758069503","35428" "3758069504","3758070015","14416" "3758070016","3758071295","35428" "3758071296","3758071807","14416" "3758071808","3758072063","35428" "3758072064","3758072319","14416" "3758072320","3758073855","35428" "3758073856","3758074367","21240" "3758074368","3758074623","35428" "3758074624","3758074879","14416" "3758074880","3758078975","35428" "3758078976","3758079231","14416" "3758079232","3758079487","35428" "3758079488","3758079615","14416" "3758079616","3758079743","21240" "3758079744","3758079999","35428" "3758080000","3758088191","22883" "3758088192","3758088223","32979" "3758088224","3758088703","206376" "3758088704","3758088959","104200" "3758088960","3758089503","206376" "3758089504","3758089535","47976" "3758089536","3758089551","206376" "3758089552","3758089727","47976" "3758089728","3758089983","206376" "3758089984","3758090015","105611" "3758090016","3758090047","337502" "3758090048","3758090111","206376" "3758090112","3758090143","36834" "3758090144","3758090239","206376" "3758090240","3758091263","17" "3758091264","3758092287","49" "3758092288","3758093311","94" "3758093312","3758093823","108612" "3758093824","3758094335","103" "3758094336","3758095359","17" "3758095360","3758095871","49" "3758095872","3758096127","191" "3758096128","3758096383","17" pgloader/test/csv-nulls.load0000644000175000017500000000073613047375022016320 0ustar vagrantvagrantLOAD CSV FROM INLINE (id, number [null if '\N'], data) INTO postgresql:///pgloader?nullif BEFORE LOAD DO $$ drop table if exists nullif; $$, $$ CREATE TABLE nullif ( id serial primary key, number integer, data text ); $$ WITH fields terminated by ',', fields enclosed by '"', fields escaped by backslash-quote; "1",\N,"testing nulls" "2","2","another test"pgloader/test/csv-parse-date.load0000644000175000017500000000144413056552450017207 0ustar vagrantvagrantLOAD CSV FROM inline ( "row num", ts [date format 'MM-DD-YYYY HH24-MI-SS.US'], hr [date format 'HH24:MI.SS'] ) INTO postgresql:///pgloader?dateformat ("row num", ts, hr) WITH truncate, fields optionally enclosed by '"', fields escaped by double-quote, fields terminated by ',' SET timezone to 'Europe/Paris', work_mem to '12MB', standard_conforming_strings to 'on' BEFORE LOAD DO $$ drop table if exists dateformat; $$, $$ create table dateformat ( "row num" smallint, ts timestamptz, hr time ); $$; 1,10-02-1999 00-33-12.123456,"00:05.02" 2,10-02-2014 00-33-13.123,"18:25.52" 3,10-02-2014 00-33-14.1234,13:14.15 pgloader/test/csv-temp.load0000644000175000017500000000112313047375022016117 0ustar vagrantvagrant-- -- See https://github.com/dimitri/pgloader/issues/297 -- -- The "t" field would be "temperature", for instance. -- LOAD CSV FROM inline (a, b, nil, t) INTO postgresql:///pgloader?temp(a,b,nil,t) WITH fields terminated by ';' BEFORE LOAD DO $$ drop table if exists temp; $$, $$ CREATE TABLE temp ( a integer, b timestamp without time zone, nil real, t real ); $$; 100;2015-01-01 00:00:00;-6;10 101;2015-01-02 00:00:00;-2.1;12.5 102;2015-01-03 00:00:00;3.4;5.5 103;2015-01-04 00:00:00;4.7;-2.3 104;2015-01-05 00:00:00;0.4;0pgloader/test/geolite.load0000644000175000017500000000354213126005314016010 0ustar vagrantvagrant/* * Loading from a ZIP archive containing CSV files. The full test can be * done with using the archive found at * http://geolite.maxmind.com/download/geoip/database/GeoLiteCity_CSV/GeoLiteCity-latest.zip * * And a very light version of this data set is found at * http://pgsql.tapoueh.org/temp/foo.zip for quick testing. */ LOAD ARCHIVE FROM http://geolite.maxmind.com/download/geoip/database/GeoLiteCity_CSV/GeoLiteCity-latest.zip INTO postgresql:///tapoueh LOAD CSV FROM FILENAME MATCHING ~/GeoLiteCity-Location.csv/ WITH ENCODING iso-8859-1 ( locId, country, region [ null if blanks ], city [ null if blanks ], postalCode [ null if blanks ], latitude, longitude, metroCode [ null if blanks ], areaCode [ null if blanks ] ) INTO postgresql:///tapoueh?geolite.location ( locid,country,region,city,postalCode, location point using (format nil "(~a,~a)" longitude latitude), metroCode,areaCode ) WITH skip header = 2, fields optionally enclosed by '"', fields escaped by double-quote, fields terminated by ',' AND LOAD CSV FROM FILENAME MATCHING ~/GeoLiteCity-Blocks.csv/ WITH ENCODING iso-8859-1 ( startIpNum, endIpNum, locId ) INTO postgresql:///tapoueh?geolite.blocks ( iprange ip4r using (ip-range startIpNum endIpNum), locId ) WITH skip header = 2, fields optionally enclosed by '"', fields escaped by double-quote, fields terminated by ',' ; pgloader/test/csv-error.load0000644000175000017500000000110713047375022016305 0ustar vagrantvagrantLOAD CSV FROM INLINE with encoding 'ascii' INTO postgresql:///pgloader?jordane WITH truncate, fields terminated by '|', fields not enclosed, fields escaped by backslash-quote SET work_mem to '128MB', standard_conforming_strings to 'on' BEFORE LOAD DO $$ drop table if exists jordane; $$, $$ CREATE TABLE jordane ( "NOM" character(20), "PRENOM" character(20) ) $$; BORDET|Jordane BORDET|Audrey LASTNAME|"opening quote BONNIER|testprenombe~aucouptroplong JOURDAIN|héhé¶ pgloader/test/csv-trim-extra-blanks.load0000644000175000017500000000132213047375022020517 0ustar vagrantvagrantLOAD CSV FROM INLINE INTO postgresql:///pgloader?nulls (f1, f2, f3) WITH truncate, trim unquoted blanks, fields optionally enclosed by '"', fields escaped by double-quote, fields terminated by ',' BEFORE LOAD DO $$ drop table if exists nulls; $$, $$ create table if not exists nulls (id serial, f1 text, f2 text, f3 text); $$; "quoted empty string","","should be empty string" "no value between separators",,"should be null" "quoted blanks"," ","should be blanks" "unquoted blanks", ,"should be null" "unquoted string",no quote,"should be 'no quote'" "quoted separator","a,b,c","should be 'a,b,c'" "trim extra blanks", test string , "should be 'test string'" pgloader/test/csv-districts.load0000644000175000017500000000301513047375022017164 0ustar vagrantvagrant/* * The data file comes from the US census website: * * http://www.census.gov/geo/maps-data/data/gazetteer2013.html * * We import it directly into pgloader git repository so that we have at * least a CSV test where we read from a local file... */ LOAD CSV FROM data/2013_Gaz_113CDs_national.txt HAVING FIELDS ( usps, -- United States Postal Service State Abbreviation geoid, -- Geographic Identifier aland, -- Land Area (square meters) awater, -- Water Area (square meters) aland_sqmi, -- SQMI Land Area (square miles) awater_sqmi, -- SQMI Water Area (square miles) intptlat, -- Latitude (decimal degrees) intptlong -- Longitude (decimal degrees) ) INTO postgresql:///pgloader?districts TARGET COLUMNS ( usps, geoid, aland, awater, aland_sqmi, awater_sqmi, location point using (format nil "(~a,~a)" intptlong intptlat) ) WITH truncate, disable triggers, skip header = 1, batch rows = 200, batch size = 1024 kB, batch concurrency = 3, fields terminated by '\t' BEFORE LOAD DO $$ drop table if exists districts; $$, $$ create table districts ( usps text, geoid text, aland bigint, awater bigint, aland_sqmi double precision, awater_sqmi double precision, location point ); $$; pgloader/test/csv-filename-pattern.load0000644000175000017500000000073613047375022020416 0ustar vagrantvagrantload csv from all filenames matching ~ in directory 'data' having fields (id, field) into postgres:///pgloader?matching with fields optionally enclosed by '"', fields terminated by ',', truncate, disable triggers, drop indexes -- workers = 8, -- concurrency = 1 before load do $$ drop table if exists matching; $$, $$ create table matching(id int, field text); $$; pgloader/test/allcols.load0000644000175000017500000000166613047375022016026 0ustar vagrantvagrant/* * This test is ported from pgloader 2.x where it was defined as: * * [allcols] * table = allcols * format = csv * filename = allcols/allcols.data * field_sep = : * columns = * * pg_option_work_mem = 14MB * */ LOAD CSV FROM inline (a, b, c) INTO postgresql:///pgloader?allcols (a, b, c) WITH fields optionally enclosed by '"', fields escaped by double-quote, fields terminated by ':' SET client_encoding to 'latin1', work_mem to '14MB', standard_conforming_strings to 'on' BEFORE LOAD DO $$ drop table if exists allcols; $$, $$ create table allcols ( a integer primary key, b date, c text ); $$; 1:2008-02-18:first entry 2:2008-02-19:second one 3:2008-02-20:another 4:2008-02-21:still running 5:2008-02-22:well, some more 6:2008-02-23:antepenultima 7:2008-02-24:next to last 8:2008-02-25:hey, it's today! pgloader/test/copy.load0000644000175000017500000000137713047375022015346 0ustar vagrantvagrantLOAD COPY FROM copy://./data/track.copy ( trackid, track, album, media, genre, composer, milliseconds, bytes, unitprice ) INTO postgresql:///pgloader?track_full WITH truncate, drop indexes SET client_encoding to 'latin1', work_mem to '14MB', standard_conforming_strings to 'on' BEFORE LOAD DO $$ drop table if exists track_full; $$, $$ create table track_full ( trackid bigserial primary key, track text, album text, media text, genre text, composer text, milliseconds bigint, bytes bigint, unitprice numeric ); $$; pgloader/test/parse/0000755000175000017500000000000013047375022014635 5ustar vagrantvagrantpgloader/test/parse/mix.load0000644000175000017500000000211413047375022016271 0ustar vagrantvagrantload database from mysql://localhost/adv into postgresql://dim@localhost/adv with drop tables, truncate, create tables, create indexes, reset sequences, downcase identifiers set work_mem to '128MB', maintenance_work_mem to '512 MB' cast type datetime to timestamptz drop default using zero-dates-to-null, type date drop not null drop default using zero-dates-to-null, type tinyint to boolean using tinyint-to-boolean; LOAD DBF FROM '/Users/dim/Downloads/comsimp2013.dbf' INTO postgresql://dim@localhost:54393/dim?comsimp2013 WITH truncate, create table, table name = 'comsimp2013'; LOAD CSV FROM '*/GeoLiteCity-Blocks.csv' WITH ENCODING iso-646-us ( startIpNum, endIpNum, locId ) INTO postgresql://dim@localhost:54393/dim?geolite.blocks ( iprange ip4r using (ip-range startIpNum endIpNum), locId ) WITH truncate, skip header = 2, fields optionally enclosed by '"', fields escaped by backslash-quote, fields terminated by '\t'; pgloader/test/parse/csv-with-projection.load0000644000175000017500000000072113047375022021414 0ustar vagrantvagrantLOAD CSV FROM '*/GeoLiteCity-Blocks.csv' WITH ENCODING iso-646-us ( startIpNum, endIpNum, locId ) INTO postgresql://dim@localhost:54393/dim?geolite.blocks ( iprange ip4r using (ip-range startIpNum endIpNum), locId ) WITH truncate, skip header = 2, fields optionally enclosed by '"', fields escaped by backslash-quote, fields terminated by '\t'; pgloader/test/parse/my.load0000644000175000017500000000062113047375022016122 0ustar vagrantvagrantload database from mysql://localhost/adv into postgresql://dim@localhost/adv with include drop, truncate, create tables, create indexes, reset sequences, downcase identifiers set work_mem to '128MB', maintenance_work_mem to '512 MB' cast type datetime to timestamptz drop default using zero-dates-to-null, type date drop not null drop default using zero-dates-to-null; pgloader/test/parse/hans.goeuro.load0000644000175000017500000000320113047375022017722 0ustar vagrantvagrantLOAD DATABASE FROM mysql://root@unix:/tmp/mysql.sock:/goeuro INTO postgresql://dim@unix:/tmp:/godollar -- INCLUDING ONLY TABLE NAMES MATCHING ~/sizes/ EXCLUDING TABLE NAMES MATCHING ~/encoding/ DECODING TABLE NAMES MATCHING ~/messed/, ~/encoding/ AS utf-8 SET maintenance_work_mem to '1 GB' CAST type datetime to timestamptz drop default drop not null using zero-dates-to-null, type date drop not null drop default using zero-dates-to-null, type timestamp to timestamptz drop not null using zero-dates-to-null, -- now the default for tinyint(1) -- column bools.a to boolean drop typemod using tinyint-to-boolean, -- override char(1) to varchar(1), just use char(1) here. type char when (= precision 1) to char keep typemod, -- bit(1) is a boolean too! -- it's a default setting, just shows how to type it in type bit when (= precision 1) to boolean drop typemod using bits-to-boolean, column ascii.s using byte-vector-to-bytea, column enumerate.foo using empty-string-to-null, column ip.ip_address to inet keep not null drop typemod, type decimal when (= precision 1) to boolean drop typemod, -- type varbinary to text drop typemod using babel:octets-to-string type varbinary to text drop typemod using varbinary-to-string MATERIALIZE VIEWS nonexisting, d as $$ select cast(d as date) as d, count(*) as n from plop where d > '2013-10-02' group by cast(d as date); $$ WITH include drop, create tables, create indexes, preserve index names, reset sequences, disable triggers; pgloader/test/parse/database.load0000644000175000017500000000112613047375022017242 0ustar vagrantvagrantLOAD DATABASE FROM mysql://localhost:3306/dbname INTO postgresql://localhost/db WITH drop tables, truncate, create tables, create indexes, reset sequences, downcase identifiers SET guc_1 = 'value', guc_2 = 'other value' CAST column col1 to timestamptz drop default using zero-dates-to-null, type varchar to text, type int with extra auto_increment to bigserial, type datetime to timestamptz drop default using zero-dates-to-null, type date drop not null drop default using zero-dates-to-null; pgloader/test/parse/csv.load0000644000175000017500000000043613047375022016274 0ustar vagrantvagrantLOAD CSV FROM '/Users/dim/dev/CL/pgloader/galaxya/yagoa/communaute_profil.csv' INTO postgresql://dim@localhost:54393/yagoa?communaute_profil WITH truncate, fields not enclosed, fields terminated by '\t' SET work_mem to '32 MB', maintenance_work_mem to '64 MB'; pgloader/test/parse/messages.load0000644000175000017500000000105413047375022017305 0ustar vagrantvagrantLOAD MESSAGES FROM syslog://localhost:10514/ WHEN MATCHES rsyslog-msg IN apache REGISTERING timestamp, ip, rest INTO postgresql://localhost/db?logs.apache SET guc_1 = 'value', guc_2 = 'other value' WHEN MATCHES rsyslog-msg IN others REGISTERING timestamp, app-name, data INTO postgresql://localhost/db?logs.others SET guc_1 = 'value', guc_2 = 'other value' WITH apache = rsyslog DATA = IP REST IP = 1*3DIGIT "." 1*3DIGIT "."1*3DIGIT "."1*3DIGIT REST = ~/.*/ WITH others = rsyslog; pgloader/test/parse/AdventureWorks2008R2.load0000644000175000017500000000116513047375022021202 0ustar vagrantvagrantload database from mssql://dim:pass@localhost/AdventureWorks2008R2 into postgresql:///advworks -- WITH include drop, create tables, no truncate, -- create indexes, reset sequences, foreign keys SET maintenance_work_mem to '128MB', work_mem to '12MB' BEFORE LOAD DO $$ drop schema if exists humanresources cascade; $$, $$ drop schema if exists person cascade; $$, $$ drop schema if exists production cascade; $$, $$ drop schema if exists public cascade; $$, $$ drop schema if exists purchasing cascade; $$, $$ drop schema if exists sales cascade; $$; pgloader/test/regress/0000755000175000017500000000000013047375022015175 5ustar vagrantvagrantpgloader/test/regress/expected/0000755000175000017500000000000013047375022016776 5ustar vagrantvagrantpgloader/test/regress/expected/csv-escape-mode.out0000644000175000017500000000015313047375022022501 0ustar vagrantvagrant27955878 HTML 27955879 html 27955880 HTML -//W3C//DTD HTML 4.01 Frameset//EN\\ 27955881 html 27955882 html pgloader/test/regress/expected/serial.out0000644000175000017500000000032713047375022021010 0ustar vagrantvagrant1 2006-11-11 some first row text 2 2006-11-11 some second row text 3 2006-10-12 some third row text 4 2006-10-04 \\ 5 2006-05-12 some fifth row text 6 2006-07-10 some sixth row text 7 \N some null date to play with pgloader/test/regress/expected/copy.out0000644000175000017500000133542313047375022020514 0ustar vagrantvagrant1 For Those About To Rock (We Salute You) For Those About To Rock We Salute You MPEG audio file Rock Angus Young, Malcolm Young, Brian Johnson 343719 11170334 0.99 2 Balls to the Wall Balls to the Wall Protected AAC audio file Rock \N 342562 5510424 0.99 3 Fast As a Shark Restless and Wild Protected AAC audio file Rock F. Baltes, S. Kaufman, U. Dirkscneider & W. Hoffman 230619 3990994 0.99 4 Restless and Wild Restless and Wild Protected AAC audio file Rock F. Baltes, R.A. Smith-Diesel, S. Kaufman, U. Dirkscneider & W. Hoffman 252051 4331779 0.99 5 Princess of the Dawn Restless and Wild Protected AAC audio file Rock Deaffy & R.A. Smith-Diesel 375418 6290521 0.99 6 Put The Finger On You For Those About To Rock We Salute You MPEG audio file Rock Angus Young, Malcolm Young, Brian Johnson 205662 6713451 0.99 7 Let's Get It Up For Those About To Rock We Salute You MPEG audio file Rock Angus Young, Malcolm Young, Brian Johnson 233926 7636561 0.99 8 Inject The Venom For Those About To Rock We Salute You MPEG audio file Rock Angus Young, Malcolm Young, Brian Johnson 210834 6852860 0.99 9 Snowballed For Those About To Rock We Salute You MPEG audio file Rock Angus Young, Malcolm Young, Brian Johnson 203102 6599424 0.99 10 Evil Walks For Those About To Rock We Salute You MPEG audio file Rock Angus Young, Malcolm Young, Brian Johnson 263497 8611245 0.99 11 C.O.D. For Those About To Rock We Salute You MPEG audio file Rock Angus Young, Malcolm Young, Brian Johnson 199836 6566314 0.99 12 Breaking The Rules For Those About To Rock We Salute You MPEG audio file Rock Angus Young, Malcolm Young, Brian Johnson 263288 8596840 0.99 13 Night Of The Long Knives For Those About To Rock We Salute You MPEG audio file Rock Angus Young, Malcolm Young, Brian Johnson 205688 6706347 0.99 14 Spellbound For Those About To Rock We Salute You MPEG audio file Rock Angus Young, Malcolm Young, Brian Johnson 270863 8817038 0.99 15 Go Down Let There Be Rock MPEG audio file Rock AC/DC 331180 10847611 0.99 16 Dog Eat Dog Let There Be Rock MPEG audio file Rock AC/DC 215196 7032162 0.99 17 Let There Be Rock Let There Be Rock MPEG audio file Rock AC/DC 366654 12021261 0.99 18 Bad Boy Boogie Let There Be Rock MPEG audio file Rock AC/DC 267728 8776140 0.99 19 Problem Child Let There Be Rock MPEG audio file Rock AC/DC 325041 10617116 0.99 20 Overdose Let There Be Rock MPEG audio file Rock AC/DC 369319 12066294 0.99 21 Hell Ain't A Bad Place To Be Let There Be Rock MPEG audio file Rock AC/DC 254380 8331286 0.99 22 Whole Lotta Rosie Let There Be Rock MPEG audio file Rock AC/DC 323761 10547154 0.99 23 Walk On Water Big Ones MPEG audio file Rock Steven Tyler, Joe Perry, Jack Blades, Tommy Shaw 295680 9719579 0.99 24 Love In An Elevator Big Ones MPEG audio file Rock Steven Tyler, Joe Perry 321828 10552051 0.99 25 Rag Doll Big Ones MPEG audio file Rock Steven Tyler, Joe Perry, Jim Vallance, Holly Knight 264698 8675345 0.99 26 What It Takes Big Ones MPEG audio file Rock Steven Tyler, Joe Perry, Desmond Child 310622 10144730 0.99 27 Dude (Looks Like A Lady) Big Ones MPEG audio file Rock Steven Tyler, Joe Perry, Desmond Child 264855 8679940 0.99 28 Janie's Got A Gun Big Ones MPEG audio file Rock Steven Tyler, Tom Hamilton 330736 10869391 0.99 29 Cryin' Big Ones MPEG audio file Rock Steven Tyler, Joe Perry, Taylor Rhodes 309263 10056995 0.99 30 Amazing Big Ones MPEG audio file Rock Steven Tyler, Richie Supa 356519 11616195 0.99 31 Blind Man Big Ones MPEG audio file Rock Steven Tyler, Joe Perry, Taylor Rhodes 240718 7877453 0.99 32 Deuces Are Wild Big Ones MPEG audio file Rock Steven Tyler, Jim Vallance 215875 7074167 0.99 33 The Other Side Big Ones MPEG audio file Rock Steven Tyler, Jim Vallance 244375 7983270 0.99 34 Crazy Big Ones MPEG audio file Rock Steven Tyler, Joe Perry, Desmond Child 316656 10402398 0.99 35 Eat The Rich Big Ones MPEG audio file Rock Steven Tyler, Joe Perry, Jim Vallance 251036 8262039 0.99 36 Angel Big Ones MPEG audio file Rock Steven Tyler, Desmond Child 307617 9989331 0.99 37 Livin' On The Edge Big Ones MPEG audio file Rock Steven Tyler, Joe Perry, Mark Hudson 381231 12374569 0.99 38 All I Really Want Jagged Little Pill MPEG audio file Rock Alanis Morissette & Glenn Ballard 284891 9375567 0.99 39 You Oughta Know Jagged Little Pill MPEG audio file Rock Alanis Morissette & Glenn Ballard 249234 8196916 0.99 40 Perfect Jagged Little Pill MPEG audio file Rock Alanis Morissette & Glenn Ballard 188133 6145404 0.99 41 Hand In My Pocket Jagged Little Pill MPEG audio file Rock Alanis Morissette & Glenn Ballard 221570 7224246 0.99 42 Right Through You Jagged Little Pill MPEG audio file Rock Alanis Morissette & Glenn Ballard 176117 5793082 0.99 43 Forgiven Jagged Little Pill MPEG audio file Rock Alanis Morissette & Glenn Ballard 300355 9753256 0.99 44 You Learn Jagged Little Pill MPEG audio file Rock Alanis Morissette & Glenn Ballard 239699 7824837 0.99 45 Head Over Feet Jagged Little Pill MPEG audio file Rock Alanis Morissette & Glenn Ballard 267493 8758008 0.99 46 Mary Jane Jagged Little Pill MPEG audio file Rock Alanis Morissette & Glenn Ballard 280607 9163588 0.99 47 Ironic Jagged Little Pill MPEG audio file Rock Alanis Morissette & Glenn Ballard 229825 7598866 0.99 48 Not The Doctor Jagged Little Pill MPEG audio file Rock Alanis Morissette & Glenn Ballard 227631 7604601 0.99 49 Wake Up Jagged Little Pill MPEG audio file Rock Alanis Morissette & Glenn Ballard 293485 9703359 0.99 50 You Oughta Know (Alternate) Jagged Little Pill MPEG audio file Rock Alanis Morissette & Glenn Ballard 491885 16008629 0.99 51 We Die Young Facelift MPEG audio file Rock Jerry Cantrell 152084 4925362 0.99 52 Man In The Box Facelift MPEG audio file Rock Jerry Cantrell, Layne Staley 286641 9310272 0.99 53 Sea Of Sorrow Facelift MPEG audio file Rock Jerry Cantrell 349831 11316328 0.99 54 Bleed The Freak Facelift MPEG audio file Rock Jerry Cantrell 241946 7847716 0.99 55 I Can't Remember Facelift MPEG audio file Rock Jerry Cantrell, Layne Staley 222955 7302550 0.99 56 Love, Hate, Love Facelift MPEG audio file Rock Jerry Cantrell, Layne Staley 387134 12575396 0.99 57 It Ain't Like That Facelift MPEG audio file Rock Jerry Cantrell, Michael Starr, Sean Kinney 277577 8993793 0.99 58 Sunshine Facelift MPEG audio file Rock Jerry Cantrell 284969 9216057 0.99 59 Put You Down Facelift MPEG audio file Rock Jerry Cantrell 196231 6420530 0.99 60 Confusion Facelift MPEG audio file Rock Jerry Cantrell, Michael Starr, Layne Staley 344163 11183647 0.99 61 I Know Somethin (Bout You) Facelift MPEG audio file Rock Jerry Cantrell 261955 8497788 0.99 62 Real Thing Facelift MPEG audio file Rock Jerry Cantrell, Layne Staley 243879 7937731 0.99 63 Desafinado Warner 25 Anos MPEG audio file Jazz \N 185338 5990473 0.99 64 Garota De Ipanema Warner 25 Anos MPEG audio file Jazz \N 285048 9348428 0.99 65 Samba De Uma Nota Só (One Note Samba) Warner 25 Anos MPEG audio file Jazz \N 137273 4535401 0.99 66 Por Causa De Você Warner 25 Anos MPEG audio file Jazz \N 169900 5536496 0.99 67 Ligia Warner 25 Anos MPEG audio file Jazz \N 251977 8226934 0.99 68 Fotografia Warner 25 Anos MPEG audio file Jazz \N 129227 4198774 0.99 69 Dindi (Dindi) Warner 25 Anos MPEG audio file Jazz \N 253178 8149148 0.99 70 Se Todos Fossem Iguais A Você (Instrumental) Warner 25 Anos MPEG audio file Jazz \N 134948 4393377 0.99 71 Falando De Amor Warner 25 Anos MPEG audio file Jazz \N 219663 7121735 0.99 72 Angela Warner 25 Anos MPEG audio file Jazz \N 169508 5574957 0.99 73 Corcovado (Quiet Nights Of Quiet Stars) Warner 25 Anos MPEG audio file Jazz \N 205662 6687994 0.99 74 Outra Vez Warner 25 Anos MPEG audio file Jazz \N 126511 4110053 0.99 75 O Boto (Bôto) Warner 25 Anos MPEG audio file Jazz \N 366837 12089673 0.99 76 Canta, Canta Mais Warner 25 Anos MPEG audio file Jazz \N 271856 8719426 0.99 77 Enter Sandman Plays Metallica By Four Cellos MPEG audio file Metal Apocalyptica 221701 7286305 0.99 78 Master Of Puppets Plays Metallica By Four Cellos MPEG audio file Metal Apocalyptica 436453 14375310 0.99 79 Harvester Of Sorrow Plays Metallica By Four Cellos MPEG audio file Metal Apocalyptica 374543 12372536 0.99 80 The Unforgiven Plays Metallica By Four Cellos MPEG audio file Metal Apocalyptica 322925 10422447 0.99 81 Sad But True Plays Metallica By Four Cellos MPEG audio file Metal Apocalyptica 288208 9405526 0.99 82 Creeping Death Plays Metallica By Four Cellos MPEG audio file Metal Apocalyptica 308035 10110980 0.99 83 Wherever I May Roam Plays Metallica By Four Cellos MPEG audio file Metal Apocalyptica 369345 12033110 0.99 84 Welcome Home (Sanitarium) Plays Metallica By Four Cellos MPEG audio file Metal Apocalyptica 350197 11406431 0.99 85 Cochise Audioslave MPEG audio file Rock Audioslave/Chris Cornell 222380 5339931 0.99 86 Show Me How to Live Audioslave MPEG audio file Rock Audioslave/Chris Cornell 277890 6672176 0.99 87 Gasoline Audioslave MPEG audio file Rock Audioslave/Chris Cornell 279457 6709793 0.99 88 What You Are Audioslave MPEG audio file Rock Audioslave/Chris Cornell 249391 5988186 0.99 89 Like a Stone Audioslave MPEG audio file Rock Audioslave/Chris Cornell 294034 7059624 0.99 90 Set It Off Audioslave MPEG audio file Rock Audioslave/Chris Cornell 263262 6321091 0.99 91 Shadow on the Sun Audioslave MPEG audio file Rock Audioslave/Chris Cornell 343457 8245793 0.99 92 I am the Highway Audioslave MPEG audio file Rock Audioslave/Chris Cornell 334942 8041411 0.99 93 Exploder Audioslave MPEG audio file Rock Audioslave/Chris Cornell 206053 4948095 0.99 94 Hypnotize Audioslave MPEG audio file Rock Audioslave/Chris Cornell 206628 4961887 0.99 95 Bring'em Back Alive Audioslave MPEG audio file Rock Audioslave/Chris Cornell 329534 7911634 0.99 96 Light My Way Audioslave MPEG audio file Rock Audioslave/Chris Cornell 303595 7289084 0.99 97 Getaway Car Audioslave MPEG audio file Rock Audioslave/Chris Cornell 299598 7193162 0.99 98 The Last Remaining Light Audioslave MPEG audio file Rock Audioslave/Chris Cornell 317492 7622615 0.99 99 Your Time Has Come Out Of Exile MPEG audio file Alternative & Punk Cornell, Commerford, Morello, Wilk 255529 8273592 0.99 100 Out Of Exile Out Of Exile MPEG audio file Alternative & Punk Cornell, Commerford, Morello, Wilk 291291 9506571 0.99 101 Be Yourself Out Of Exile MPEG audio file Alternative & Punk Cornell, Commerford, Morello, Wilk 279484 9106160 0.99 102 Doesn't Remind Me Out Of Exile MPEG audio file Alternative & Punk Cornell, Commerford, Morello, Wilk 255869 8357387 0.99 103 Drown Me Slowly Out Of Exile MPEG audio file Alternative & Punk Cornell, Commerford, Morello, Wilk 233691 7609178 0.99 104 Heaven's Dead Out Of Exile MPEG audio file Alternative & Punk Cornell, Commerford, Morello, Wilk 276688 9006158 0.99 105 The Worm Out Of Exile MPEG audio file Alternative & Punk Cornell, Commerford, Morello, Wilk 237714 7710800 0.99 106 Man Or Animal Out Of Exile MPEG audio file Alternative & Punk Cornell, Commerford, Morello, Wilk 233195 7542942 0.99 107 Yesterday To Tomorrow Out Of Exile MPEG audio file Alternative & Punk Cornell, Commerford, Morello, Wilk 273763 8944205 0.99 108 Dandelion Out Of Exile MPEG audio file Alternative & Punk Cornell, Commerford, Morello, Wilk 278125 9003592 0.99 109 #1 Zero Out Of Exile MPEG audio file Alternative & Punk Cornell, Commerford, Morello, Wilk 299102 9731988 0.99 110 The Curse Out Of Exile MPEG audio file Alternative & Punk Cornell, Commerford, Morello, Wilk 309786 10029406 0.99 111 Money BackBeat Soundtrack MPEG audio file Rock And Roll Berry Gordy, Jr./Janie Bradford 147591 2365897 0.99 397 Linha Do Horizonte Chill: Brazil (Disc 2) MPEG audio file Latin Vários 279484 9275929 0.99 112 Long Tall Sally BackBeat Soundtrack MPEG audio file Rock And Roll Enotris Johnson/Little Richard/Robert "Bumps" Blackwell 106396 1707084 0.99 113 Bad Boy BackBeat Soundtrack MPEG audio file Rock And Roll Larry Williams 116088 1862126 0.99 114 Twist And Shout BackBeat Soundtrack MPEG audio file Rock And Roll Bert Russell/Phil Medley 161123 2582553 0.99 115 Please Mr. Postman BackBeat Soundtrack MPEG audio file Rock And Roll Brian Holland/Freddie Gorman/Georgia Dobbins/Robert Bateman/William Garrett 137639 2206986 0.99 116 C'Mon Everybody BackBeat Soundtrack MPEG audio file Rock And Roll Eddie Cochran/Jerry Capehart 140199 2247846 0.99 117 Rock 'N' Roll Music BackBeat Soundtrack MPEG audio file Rock And Roll Chuck Berry 141923 2276788 0.99 118 Slow Down BackBeat Soundtrack MPEG audio file Rock And Roll Larry Williams 163265 2616981 0.99 119 Roadrunner BackBeat Soundtrack MPEG audio file Rock And Roll Bo Diddley 143595 2301989 0.99 120 Carol BackBeat Soundtrack MPEG audio file Rock And Roll Chuck Berry 143830 2306019 0.99 121 Good Golly Miss Molly BackBeat Soundtrack MPEG audio file Rock And Roll Little Richard 106266 1704918 0.99 122 20 Flight Rock BackBeat Soundtrack MPEG audio file Rock And Roll Ned Fairchild 107807 1299960 0.99 123 Quadrant The Best Of Billy Cobham MPEG audio file Jazz Billy Cobham 261851 8538199 0.99 124 Snoopy's search-Red baron The Best Of Billy Cobham MPEG audio file Jazz Billy Cobham 456071 15075616 0.99 125 Spanish moss-"A sound portrait"-Spanish moss The Best Of Billy Cobham MPEG audio file Jazz Billy Cobham 248084 8217867 0.99 126 Moon germs The Best Of Billy Cobham MPEG audio file Jazz Billy Cobham 294060 9714812 0.99 127 Stratus The Best Of Billy Cobham MPEG audio file Jazz Billy Cobham 582086 19115680 0.99 128 The pleasant pheasant The Best Of Billy Cobham MPEG audio file Jazz Billy Cobham 318066 10630578 0.99 129 Solo-Panhandler The Best Of Billy Cobham MPEG audio file Jazz Billy Cobham 246151 8230661 0.99 130 Do what cha wanna The Best Of Billy Cobham MPEG audio file Jazz George Duke 274155 9018565 0.99 131 Intro/ Low Down Alcohol Fueled Brewtality Live! [Disc 1] MPEG audio file Metal \N 323683 10642901 0.99 132 13 Years Of Grief Alcohol Fueled Brewtality Live! [Disc 1] MPEG audio file Metal \N 246987 8137421 0.99 133 Stronger Than Death Alcohol Fueled Brewtality Live! [Disc 1] MPEG audio file Metal \N 300747 9869647 0.99 134 All For You Alcohol Fueled Brewtality Live! [Disc 1] MPEG audio file Metal \N 235833 7726948 0.99 135 Super Terrorizer Alcohol Fueled Brewtality Live! [Disc 1] MPEG audio file Metal \N 319373 10513905 0.99 136 Phoney Smile Fake Hellos Alcohol Fueled Brewtality Live! [Disc 1] MPEG audio file Metal \N 273606 9011701 0.99 137 Lost My Better Half Alcohol Fueled Brewtality Live! [Disc 1] MPEG audio file Metal \N 284081 9355309 0.99 138 Bored To Tears Alcohol Fueled Brewtality Live! [Disc 1] MPEG audio file Metal \N 247327 8130090 0.99 139 A.N.D.R.O.T.A.Z. Alcohol Fueled Brewtality Live! [Disc 1] MPEG audio file Metal \N 266266 8574746 0.99 140 Born To Booze Alcohol Fueled Brewtality Live! [Disc 1] MPEG audio file Metal \N 282122 9257358 0.99 141 World Of Trouble Alcohol Fueled Brewtality Live! [Disc 1] MPEG audio file Metal \N 359157 11820932 0.99 142 No More Tears Alcohol Fueled Brewtality Live! [Disc 1] MPEG audio file Metal \N 555075 18041629 0.99 143 The Begining... At Last Alcohol Fueled Brewtality Live! [Disc 1] MPEG audio file Metal \N 365662 11965109 0.99 144 Heart Of Gold Alcohol Fueled Brewtality Live! [Disc 2] MPEG audio file Metal \N 194873 6417460 0.99 145 Snowblind Alcohol Fueled Brewtality Live! [Disc 2] MPEG audio file Metal \N 420022 13842549 0.99 146 Like A Bird Alcohol Fueled Brewtality Live! [Disc 2] MPEG audio file Metal \N 276532 9115657 0.99 147 Blood In The Wall Alcohol Fueled Brewtality Live! [Disc 2] MPEG audio file Metal \N 284368 9359475 0.99 148 The Beginning...At Last Alcohol Fueled Brewtality Live! [Disc 2] MPEG audio file Metal \N 271960 8975814 0.99 149 Black Sabbath Black Sabbath MPEG audio file Metal \N 382066 12440200 0.99 150 The Wizard Black Sabbath MPEG audio file Metal \N 264829 8646737 0.99 151 Behind The Wall Of Sleep Black Sabbath MPEG audio file Metal \N 217573 7169049 0.99 152 N.I.B. Black Sabbath MPEG audio file Metal \N 368770 12029390 0.99 153 Evil Woman Black Sabbath MPEG audio file Metal \N 204930 6655170 0.99 154 Sleeping Village Black Sabbath MPEG audio file Metal \N 644571 21128525 0.99 155 Warning Black Sabbath MPEG audio file Metal \N 212062 6893363 0.99 156 Wheels Of Confusion / The Straightener Black Sabbath Vol. 4 (Remaster) MPEG audio file Metal Tony Iommi, Bill Ward, Geezer Butler, Ozzy Osbourne 494524 16065830 0.99 157 Tomorrow's Dream Black Sabbath Vol. 4 (Remaster) MPEG audio file Metal Tony Iommi, Bill Ward, Geezer Butler, Ozzy Osbourne 192496 6252071 0.99 158 Changes Black Sabbath Vol. 4 (Remaster) MPEG audio file Metal Tony Iommi, Bill Ward, Geezer Butler, Ozzy Osbourne 286275 9175517 0.99 159 FX Black Sabbath Vol. 4 (Remaster) MPEG audio file Metal Tony Iommi, Bill Ward, Geezer Butler, Ozzy Osbourne 103157 3331776 0.99 160 Supernaut Black Sabbath Vol. 4 (Remaster) MPEG audio file Metal Tony Iommi, Bill Ward, Geezer Butler, Ozzy Osbourne 285779 9245971 0.99 161 Snowblind Black Sabbath Vol. 4 (Remaster) MPEG audio file Metal Tony Iommi, Bill Ward, Geezer Butler, Ozzy Osbourne 331676 10813386 0.99 162 Cornucopia Black Sabbath Vol. 4 (Remaster) MPEG audio file Metal Tony Iommi, Bill Ward, Geezer Butler, Ozzy Osbourne 234814 7653880 0.99 163 Laguna Sunrise Black Sabbath Vol. 4 (Remaster) MPEG audio file Metal Tony Iommi, Bill Ward, Geezer Butler, Ozzy Osbourne 173087 5671374 0.99 164 St. Vitus Dance Black Sabbath Vol. 4 (Remaster) MPEG audio file Metal Tony Iommi, Bill Ward, Geezer Butler, Ozzy Osbourne 149655 4884969 0.99 165 Under The Sun/Every Day Comes and Goes Black Sabbath Vol. 4 (Remaster) MPEG audio file Metal Tony Iommi, Bill Ward, Geezer Butler, Ozzy Osbourne 350458 11360486 0.99 166 Smoked Pork Body Count MPEG audio file Alternative & Punk \N 47333 1549074 0.99 167 Body Count's In The House Body Count MPEG audio file Alternative & Punk \N 204251 6715413 0.99 168 Now Sports Body Count MPEG audio file Alternative & Punk \N 4884 161266 0.99 169 Body Count Body Count MPEG audio file Alternative & Punk \N 317936 10489139 0.99 170 A Statistic Body Count MPEG audio file Alternative & Punk \N 6373 211997 0.99 171 Bowels Of The Devil Body Count MPEG audio file Alternative & Punk \N 223216 7324125 0.99 172 The Real Problem Body Count MPEG audio file Alternative & Punk \N 11650 387360 0.99 173 KKK Bitch Body Count MPEG audio file Alternative & Punk \N 173008 5709631 0.99 174 D Note Body Count MPEG audio file Alternative & Punk \N 95738 3067064 0.99 175 Voodoo Body Count MPEG audio file Alternative & Punk \N 300721 9875962 0.99 176 The Winner Loses Body Count MPEG audio file Alternative & Punk \N 392254 12843821 0.99 177 There Goes The Neighborhood Body Count MPEG audio file Alternative & Punk \N 350171 11443471 0.99 178 Oprah Body Count MPEG audio file Alternative & Punk \N 6635 224313 0.99 179 Evil Dick Body Count MPEG audio file Alternative & Punk \N 239020 7828873 0.99 180 Body Count Anthem Body Count MPEG audio file Alternative & Punk \N 166426 5463690 0.99 181 Momma's Gotta Die Tonight Body Count MPEG audio file Alternative & Punk \N 371539 12122946 0.99 182 Freedom Of Speech Body Count MPEG audio file Alternative & Punk \N 281234 9337917 0.99 183 King In Crimson Chemical Wedding MPEG audio file Metal Roy Z 283167 9218499 0.99 184 Chemical Wedding Chemical Wedding MPEG audio file Metal Roy Z 246177 8022764 0.99 185 The Tower Chemical Wedding MPEG audio file Metal Roy Z 285257 9435693 0.99 186 Killing Floor Chemical Wedding MPEG audio file Metal Adrian Smith 269557 8854240 0.99 187 Book Of Thel Chemical Wedding MPEG audio file Metal Eddie Casillas/Roy Z 494393 16034404 0.99 188 Gates Of Urizen Chemical Wedding MPEG audio file Metal Roy Z 265351 8627004 0.99 189 Jerusalem Chemical Wedding MPEG audio file Metal Roy Z 402390 13194463 0.99 190 Trupets Of Jericho Chemical Wedding MPEG audio file Metal Roy Z 359131 11820908 0.99 191 Machine Men Chemical Wedding MPEG audio file Metal Adrian Smith 341655 11138147 0.99 192 The Alchemist Chemical Wedding MPEG audio file Metal Roy Z 509413 16545657 0.99 193 Realword Chemical Wedding MPEG audio file Metal Roy Z 237531 7802095 0.99 194 First Time I Met The Blues The Best Of Buddy Guy - The Millenium Collection MPEG audio file Blues Eurreal Montgomery 140434 4604995 0.99 195 Let Me Love You Baby The Best Of Buddy Guy - The Millenium Collection MPEG audio file Blues Willie Dixon 175386 5716994 0.99 196 Stone Crazy The Best Of Buddy Guy - The Millenium Collection MPEG audio file Blues Buddy Guy 433397 14184984 0.99 197 Pretty Baby The Best Of Buddy Guy - The Millenium Collection MPEG audio file Blues Willie Dixon 237662 7848282 0.99 198 When My Left Eye Jumps The Best Of Buddy Guy - The Millenium Collection MPEG audio file Blues Al Perkins/Willie Dixon 235311 7685363 0.99 199 Leave My Girl Alone The Best Of Buddy Guy - The Millenium Collection MPEG audio file Blues Buddy Guy 204721 6859518 0.99 200 She Suits Me To A Tee The Best Of Buddy Guy - The Millenium Collection MPEG audio file Blues Buddy Guy 136803 4456321 0.99 201 Keep It To Myself (Aka Keep It To Yourself) The Best Of Buddy Guy - The Millenium Collection MPEG audio file Blues Sonny Boy Williamson [I] 166060 5487056 0.99 202 My Time After Awhile The Best Of Buddy Guy - The Millenium Collection MPEG audio file Blues Robert Geddins/Ron Badger/Sheldon Feinberg 182491 6022698 0.99 203 Too Many Ways (Alternate) The Best Of Buddy Guy - The Millenium Collection MPEG audio file Blues Willie Dixon 135053 4459946 0.99 204 Talkin' 'Bout Women Obviously The Best Of Buddy Guy - The Millenium Collection MPEG audio file Blues Amos Blakemore/Buddy Guy 589531 19161377 0.99 205 Jorge Da Capadócia Prenda Minha MPEG audio file Latin Jorge Ben 177397 5842196 0.99 206 Prenda Minha Prenda Minha MPEG audio file Latin Tradicional 99369 3225364 0.99 207 Meditação Prenda Minha MPEG audio file Latin Tom Jobim - Newton Mendoça 148793 4865597 0.99 208 Terra Prenda Minha MPEG audio file Latin Caetano Veloso 482429 15889054 0.99 209 Eclipse Oculto Prenda Minha MPEG audio file Latin Caetano Veloso 221936 7382703 0.99 210 Texto "Verdade Tropical" Prenda Minha MPEG audio file Latin Caetano Veloso 84088 2752161 0.99 211 Bem Devagar Prenda Minha MPEG audio file Latin Gilberto Gil 133172 4333651 0.99 212 Drão Prenda Minha MPEG audio file Latin Gilberto Gil 156264 5065932 0.99 213 Saudosismo Prenda Minha MPEG audio file Latin Caetano Veloso 144326 4726981 0.99 214 Carolina Prenda Minha MPEG audio file Latin Chico Buarque 181812 5924159 0.99 215 Sozinho Prenda Minha MPEG audio file Latin Peninha 190589 6253200 0.99 216 Esse Cara Prenda Minha MPEG audio file Latin Caetano Veloso 223111 7217126 0.99 217 Mel Prenda Minha MPEG audio file Latin Caetano Veloso - Waly Salomão 294765 9854062 0.99 218 Linha Do Equador Prenda Minha MPEG audio file Latin Caetano Veloso - Djavan 299337 10003747 0.99 219 Odara Prenda Minha MPEG audio file Latin Caetano Veloso 141270 4704104 0.99 220 A Luz De Tieta Prenda Minha MPEG audio file Latin Caetano Veloso 251742 8507446 0.99 221 Atrás Da Verd-E-Rosa Só Não Vai Quem Já Morreu Prenda Minha MPEG audio file Latin David Corrêa - Paulinho Carvalho - Carlos Sena - Bira do Ponto 307252 10364247 0.99 222 Vida Boa Prenda Minha MPEG audio file Latin Fausto Nilo - Armandinho 281730 9411272 0.99 223 Sozinho (Hitmakers Classic Mix) Sozinho Remix Ao Vivo MPEG audio file Latin \N 436636 14462072 0.99 224 Sozinho (Hitmakers Classic Radio Edit) Sozinho Remix Ao Vivo MPEG audio file Latin \N 195004 6455134 0.99 225 Sozinho (Caêdrum 'n' Bass) Sozinho Remix Ao Vivo MPEG audio file Latin \N 328071 10975007 0.99 226 Carolina Minha Historia MPEG audio file Latin \N 163056 5375395 0.99 227 Essa Moça Ta Diferente Minha Historia MPEG audio file Latin \N 167235 5568574 0.99 228 Vai Passar Minha Historia MPEG audio file Latin \N 369763 12359161 0.99 229 Samba De Orly Minha Historia MPEG audio file Latin \N 162429 5431854 0.99 230 Bye, Bye Brasil Minha Historia MPEG audio file Latin \N 283402 9499590 0.99 231 Atras Da Porta Minha Historia MPEG audio file Latin \N 189675 6132843 0.99 232 Tatuagem Minha Historia MPEG audio file Latin \N 172120 5645703 0.99 233 O Que Será (À Flor Da Terra) Minha Historia MPEG audio file Latin \N 167288 5574848 0.99 234 Morena De Angola Minha Historia MPEG audio file Latin \N 186801 6373932 0.99 235 Apesar De Você Minha Historia MPEG audio file Latin \N 234501 7886937 0.99 236 A Banda Minha Historia MPEG audio file Latin \N 132493 4349539 0.99 237 Minha Historia Minha Historia MPEG audio file Latin \N 182256 6029673 0.99 238 Com Açúcar E Com Afeto Minha Historia MPEG audio file Latin \N 175386 5846442 0.99 239 Brejo Da Cruz Minha Historia MPEG audio file Latin \N 214099 7270749 0.99 240 Meu Caro Amigo Minha Historia MPEG audio file Latin \N 260257 8778172 0.99 241 Geni E O Zepelim Minha Historia MPEG audio file Latin \N 317570 10342226 0.99 242 Trocando Em Miúdos Minha Historia MPEG audio file Latin \N 169717 5461468 0.99 243 Vai Trabalhar Vagabundo Minha Historia MPEG audio file Latin \N 139154 4693941 0.99 244 Gota D'água Minha Historia MPEG audio file Latin \N 153208 5074189 0.99 245 Construção / Deus Lhe Pague Minha Historia MPEG audio file Latin \N 383059 12675305 0.99 246 Mateus Enter Afrociberdelia MPEG audio file Latin Chico Science 33149 1103013 0.99 247 O Cidadão Do Mundo Afrociberdelia MPEG audio file Latin Chico Science 200933 6724966 0.99 248 Etnia Afrociberdelia MPEG audio file Latin Chico Science 152555 5061413 0.99 249 Quilombo Groove [Instrumental] Afrociberdelia MPEG audio file Latin Chico Science 151823 5042447 0.99 250 Macô Afrociberdelia MPEG audio file Latin Chico Science 249600 8253934 0.99 251 Um Passeio No Mundo Livre Afrociberdelia MPEG audio file Latin Chico Science 240091 7984291 0.99 252 Samba Do Lado Afrociberdelia MPEG audio file Latin Chico Science 227317 7541688 0.99 253 Maracatu Atômico Afrociberdelia MPEG audio file Latin Chico Science 284264 9670057 0.99 254 O Encontro De Isaac Asimov Com Santos Dumont No Céu Afrociberdelia MPEG audio file Latin Chico Science 99108 3240816 0.99 255 Corpo De Lama Afrociberdelia MPEG audio file Latin Chico Science 232672 7714954 0.99 256 Sobremesa Afrociberdelia MPEG audio file Latin Chico Science 240091 7960868 0.99 257 Manguetown Afrociberdelia MPEG audio file Latin Chico Science 194560 6475159 0.99 258 Um Satélite Na Cabeça Afrociberdelia MPEG audio file Latin Chico Science 126615 4272821 0.99 259 Baião Ambiental [Instrumental] Afrociberdelia MPEG audio file Latin Chico Science 152659 5198539 0.99 260 Sangue De Bairro Afrociberdelia MPEG audio file Latin Chico Science 132231 4415557 0.99 261 Enquanto O Mundo Explode Afrociberdelia MPEG audio file Latin Chico Science 88764 2968650 0.99 262 Interlude Zumbi Afrociberdelia MPEG audio file Latin Chico Science 71627 2408550 0.99 263 Criança De Domingo Afrociberdelia MPEG audio file Latin Chico Science 208222 6984813 0.99 264 Amor De Muito Afrociberdelia MPEG audio file Latin Chico Science 175333 5881293 0.99 265 Samidarish [Instrumental] Afrociberdelia MPEG audio file Latin Chico Science 272431 8911641 0.99 266 Maracatu Atômico [Atomic Version] Afrociberdelia MPEG audio file Latin Chico Science 273084 9019677 0.99 267 Maracatu Atômico [Ragga Mix] Afrociberdelia MPEG audio file Latin Chico Science 210155 6986421 0.99 268 Maracatu Atômico [Trip Hop] Afrociberdelia MPEG audio file Latin Chico Science 221492 7380787 0.99 269 Banditismo Por Uma Questa Da Lama Ao Caos MPEG audio file Latin \N 307095 10251097 0.99 270 Banditismo Por Uma Questa Da Lama Ao Caos MPEG audio file Latin \N 243644 8147224 0.99 271 Rios Pontes & Overdrives Da Lama Ao Caos MPEG audio file Latin \N 286720 9659152 0.99 272 Cidade Da Lama Ao Caos MPEG audio file Latin \N 216346 7241817 0.99 273 Praiera Da Lama Ao Caos MPEG audio file Latin \N 183640 6172781 0.99 274 Samba Makossa Da Lama Ao Caos MPEG audio file Latin \N 271856 9095410 0.99 275 Da Lama Ao Caos Da Lama Ao Caos MPEG audio file Latin \N 251559 8378065 0.99 276 Maracatu De Tiro Certeiro Da Lama Ao Caos MPEG audio file Latin \N 88868 2901397 0.99 277 Salustiano Song Da Lama Ao Caos MPEG audio file Latin \N 215405 7183969 0.99 278 Antene Se Da Lama Ao Caos MPEG audio file Latin \N 248372 8253618 0.99 279 Risoflora Da Lama Ao Caos MPEG audio file Latin \N 105586 3536938 0.99 280 Lixo Do Mangue Da Lama Ao Caos MPEG audio file Latin \N 193253 6534200 0.99 281 Computadores Fazem Arte Da Lama Ao Caos MPEG audio file Latin \N 404323 13702771 0.99 282 Girassol Acústico MTV [Live] MPEG audio file Reggae Bino Farias/Da Gama/Lazão/Pedro Luis/Toni Garrido 249808 8327676 0.99 283 A Sombra Da Maldade Acústico MTV [Live] MPEG audio file Reggae Da Gama/Toni Garrido 230922 7697230 0.99 284 Johnny B. Goode Acústico MTV [Live] MPEG audio file Reggae Chuck Berry 254615 8505985 0.99 285 Soldado Da Paz Acústico MTV [Live] MPEG audio file Reggae Herbert Vianna 194220 6455080 0.99 286 Firmamento Acústico MTV [Live] MPEG audio file Reggae Bino Farias/Da Gama/Henry Lawes/Lazão/Toni Garrido/Winston Foser-Vers 222145 7402658 0.99 287 Extra Acústico MTV [Live] MPEG audio file Reggae Gilberto Gil 304352 10078050 0.99 288 O Erê Acústico MTV [Live] MPEG audio file Reggae Bernardo Vilhena/Bino Farias/Da Gama/Lazão/Toni Garrido 236382 7866924 0.99 289 Podes Crer Acústico MTV [Live] MPEG audio file Reggae Bino Farias/Da Gama/Lazão/Toni Garrido 232280 7747747 0.99 290 A Estrada Acústico MTV [Live] MPEG audio file Reggae Bino Farias/Da Gama/Lazão/Toni Garrido 248842 8275673 0.99 291 Berlim Acústico MTV [Live] MPEG audio file Reggae Da Gama/Toni Garrido 207542 6920424 0.99 292 Já Foi Acústico MTV [Live] MPEG audio file Reggae Bino Farias/Da Gama/Lazão/Toni Garrido 221544 7388466 0.99 293 Onde Você Mora? Acústico MTV [Live] MPEG audio file Reggae Marisa Monte/Nando Reis 256026 8502588 0.99 294 Pensamento Acústico MTV [Live] MPEG audio file Reggae Bino Farias/Da Gamma/Lazão/Rás Bernard 173008 5748424 0.99 295 Conciliação Acústico MTV [Live] MPEG audio file Reggae Da Gama/Lazão/Rás Bernardo 257619 8552474 0.99 296 Realidade Virtual Acústico MTV [Live] MPEG audio file Reggae Bino Farias/Da Gama/Lazão/Toni Garrido 195239 6503533 0.99 297 Mensagem Acústico MTV [Live] MPEG audio file Reggae Bino Farias/Da Gama/Lazão/Rás Bernardo 225332 7488852 0.99 298 A Cor Do Sol Acústico MTV [Live] MPEG audio file Reggae Bernardo Vilhena/Da Gama/Lazão 231392 7663348 0.99 299 Onde Você Mora? Cidade Negra - Hits MPEG audio file Reggae Marisa Monte/Nando Reis 298396 10056970 0.99 300 O Erê Cidade Negra - Hits MPEG audio file Reggae Bernardo Vilhena/Bino/Da Gama/Lazao/Toni Garrido 206942 6950332 0.99 301 A Sombra Da Maldade Cidade Negra - Hits MPEG audio file Reggae Da Gama/Toni Garrido 285231 9544383 0.99 302 A Estrada Cidade Negra - Hits MPEG audio file Reggae Da Gama/Lazao/Toni Garrido 282174 9344477 0.99 303 Falar A Verdade Cidade Negra - Hits MPEG audio file Reggae Bino/Da Gama/Ras Bernardo 244950 8189093 0.99 304 Firmamento Cidade Negra - Hits MPEG audio file Reggae Harry Lawes/Winston Foster-Vers 225488 7507866 0.99 305 Pensamento Cidade Negra - Hits MPEG audio file Reggae Bino/Da Gama/Ras Bernardo 192391 6399761 0.99 306 Realidade Virtual Cidade Negra - Hits MPEG audio file Reggae Bino/Da Gamma/Lazao/Toni Garrido 240300 8069934 0.99 307 Doutor Cidade Negra - Hits MPEG audio file Reggae Bino/Da Gama/Toni Garrido 178155 5950952 0.99 308 Na Frente Da TV Cidade Negra - Hits MPEG audio file Reggae Bino/Da Gama/Lazao/Ras Bernardo 289750 9633659 0.99 309 Downtown Cidade Negra - Hits MPEG audio file Reggae Cidade Negra 239725 8024386 0.99 310 Sábado A Noite Cidade Negra - Hits MPEG audio file Reggae Lulu Santos 267363 8895073 0.99 311 A Cor Do Sol Cidade Negra - Hits MPEG audio file Reggae Bernardo Vilhena/Da Gama/Lazao 273031 9142937 0.99 312 Eu Também Quero Beijar Cidade Negra - Hits MPEG audio file Reggae Fausto Nilo/Moraes Moreira/Pepeu Gomes 211147 7029400 0.99 313 Noite Do Prazer Na Pista MPEG audio file Latin \N 311353 10309980 0.99 314 À Francesa Na Pista MPEG audio file Latin \N 244532 8150846 0.99 315 Cada Um Cada Um (A Namoradeira) Na Pista MPEG audio file Latin \N 253492 8441034 0.99 316 Linha Do Equador Na Pista MPEG audio file Latin \N 244715 8123466 0.99 317 Amor Demais Na Pista MPEG audio file Latin \N 254040 8420093 0.99 318 Férias Na Pista MPEG audio file Latin \N 264202 8731945 0.99 319 Gostava Tanto De Você Na Pista MPEG audio file Latin \N 230452 7685326 0.99 320 Flor Do Futuro Na Pista MPEG audio file Latin \N 275748 9205941 0.99 321 Felicidade Urgente Na Pista MPEG audio file Latin \N 266605 8873358 0.99 322 Livre Pra Viver Na Pista MPEG audio file Latin \N 214595 7111596 0.99 323 Dig-Dig, Lambe-Lambe (Ao Vivo) Axé Bahia 2001 MPEG audio file Pop Cassiano Costa/Cintia Maviane/J.F./Lucas Costa 205479 6892516 0.99 324 Pererê Axé Bahia 2001 MPEG audio file Pop Augusto Conceição/Chiclete Com Banana 198661 6643207 0.99 325 TriboTchan Axé Bahia 2001 MPEG audio file Pop Cal Adan/Paulo Levi 194194 6507950 0.99 326 Tapa Aqui, Descobre Ali Axé Bahia 2001 MPEG audio file Pop Paulo Levi/W. Rangel 188630 6327391 0.99 327 Daniela Axé Bahia 2001 MPEG audio file Pop Jorge Cardoso/Pierre Onasis 230791 7748006 0.99 328 Bate Lata Axé Bahia 2001 MPEG audio file Pop Fábio Nolasco/Gal Sales/Ivan Brasil 206733 7034985 0.99 329 Garotas do Brasil Axé Bahia 2001 MPEG audio file Pop Garay, Ricardo Engels/Luca Predabom/Ludwig, Carlos Henrique/Maurício Vieira 210155 6973625 0.99 330 Levada do Amor (Ailoviu) Axé Bahia 2001 MPEG audio file Pop Luiz Wanderley/Paulo Levi 190093 6457752 0.99 331 Lavadeira Axé Bahia 2001 MPEG audio file Pop Do Vale, Valverde/Gal Oliveira/Luciano Pinto 214256 7254147 0.99 332 Reboladeira Axé Bahia 2001 MPEG audio file Pop Cal Adan/Ferrugem/Julinho Carioca/Tríona Ní Dhomhnaill 210599 7027525 0.99 333 É que Nessa Encarnação Eu Nasci Manga Axé Bahia 2001 MPEG audio file Pop Lucina/Luli 196519 6568081 0.99 334 Reggae Tchan Axé Bahia 2001 MPEG audio file Pop Cal Adan/Del Rey, Tension/Edu Casanova 206654 6931328 0.99 335 My Love Axé Bahia 2001 MPEG audio file Pop Jauperi/Zeu Góes 203493 6772813 0.99 336 Latinha de Cerveja Axé Bahia 2001 MPEG audio file Pop Adriano Bernandes/Edmar Neves 166687 5532564 0.99 337 You Shook Me BBC Sessions [Disc 1] [Live] MPEG audio file Rock J B Lenoir/Willie Dixon 315951 10249958 0.99 338 I Can't Quit You Baby BBC Sessions [Disc 1] [Live] MPEG audio file Rock Willie Dixon 263836 8581414 0.99 339 Communication Breakdown BBC Sessions [Disc 1] [Live] MPEG audio file Rock Jimmy Page/John Bonham/John Paul Jones 192653 6287257 0.99 340 Dazed and Confused BBC Sessions [Disc 1] [Live] MPEG audio file Rock Jimmy Page 401920 13035765 0.99 341 The Girl I Love She Got Long Black Wavy Hair BBC Sessions [Disc 1] [Live] MPEG audio file Rock Jimmy Page/John Bonham/John Estes/John Paul Jones/Robert Plant 183327 5995686 0.99 342 What is and Should Never Be BBC Sessions [Disc 1] [Live] MPEG audio file Rock Jimmy Page/Robert Plant 260675 8497116 0.99 343 Communication Breakdown(2) BBC Sessions [Disc 1] [Live] MPEG audio file Rock Jimmy Page/John Bonham/John Paul Jones 161149 5261022 0.99 344 Travelling Riverside Blues BBC Sessions [Disc 1] [Live] MPEG audio file Rock Jimmy Page/Robert Johnson/Robert Plant 312032 10232581 0.99 345 Whole Lotta Love BBC Sessions [Disc 1] [Live] MPEG audio file Rock Jimmy Page/John Bonham/John Paul Jones/Robert Plant/Willie Dixon 373394 12258175 0.99 346 Somethin' Else BBC Sessions [Disc 1] [Live] MPEG audio file Rock Bob Cochran/Sharon Sheeley 127869 4165650 0.99 347 Communication Breakdown(3) BBC Sessions [Disc 1] [Live] MPEG audio file Rock Jimmy Page/John Bonham/John Paul Jones 185260 6041133 0.99 348 I Can't Quit You Baby(2) BBC Sessions [Disc 1] [Live] MPEG audio file Rock Willie Dixon 380551 12377615 0.99 349 You Shook Me(2) BBC Sessions [Disc 1] [Live] MPEG audio file Rock J B Lenoir/Willie Dixon 619467 20138673 0.99 350 How Many More Times BBC Sessions [Disc 1] [Live] MPEG audio file Rock Chester Burnett/Jimmy Page/John Bonham/John Paul Jones/Robert Plant 711836 23092953 0.99 351 Debra Kadabra Bongo Fury MPEG audio file Rock Frank Zappa 234553 7649679 0.99 352 Carolina Hard-Core Ecstasy Bongo Fury MPEG audio file Rock Frank Zappa 359680 11731061 0.99 353 Sam With The Showing Scalp Flat Top Bongo Fury MPEG audio file Rock Don Van Vliet 171284 5572993 0.99 354 Poofter's Froth Wyoming Plans Ahead Bongo Fury MPEG audio file Rock Frank Zappa 183902 6007019 0.99 355 200 Years Old Bongo Fury MPEG audio file Rock Frank Zappa 272561 8912465 0.99 356 Cucamonga Bongo Fury MPEG audio file Rock Frank Zappa 144483 4728586 0.99 357 Advance Romance Bongo Fury MPEG audio file Rock Frank Zappa 677694 22080051 0.99 358 Man With The Woman Head Bongo Fury MPEG audio file Rock Don Van Vliet 88894 2922044 0.99 359 Muffin Man Bongo Fury MPEG audio file Rock Frank Zappa 332878 10891682 0.99 360 Vai-Vai 2001 Carnaval 2001 MPEG audio file Soundtrack \N 276349 9402241 0.99 361 X-9 2001 Carnaval 2001 MPEG audio file Soundtrack \N 273920 9310370 0.99 362 Gavioes 2001 Carnaval 2001 MPEG audio file Soundtrack \N 282723 9616640 0.99 363 Nene 2001 Carnaval 2001 MPEG audio file Soundtrack \N 284969 9694508 0.99 364 Rosas De Ouro 2001 Carnaval 2001 MPEG audio file Soundtrack \N 284342 9721084 0.99 365 Mocidade Alegre 2001 Carnaval 2001 MPEG audio file Soundtrack \N 282488 9599937 0.99 366 Camisa Verde 2001 Carnaval 2001 MPEG audio file Soundtrack \N 283454 9633755 0.99 367 Leandro De Itaquera 2001 Carnaval 2001 MPEG audio file Soundtrack \N 274808 9451845 0.99 368 Tucuruvi 2001 Carnaval 2001 MPEG audio file Soundtrack \N 287921 9883335 0.99 369 Aguia De Ouro 2001 Carnaval 2001 MPEG audio file Soundtrack \N 284160 9698729 0.99 370 Ipiranga 2001 Carnaval 2001 MPEG audio file Soundtrack \N 248293 8522591 0.99 371 Morro Da Casa Verde 2001 Carnaval 2001 MPEG audio file Soundtrack \N 284708 9718778 0.99 372 Perola Negra 2001 Carnaval 2001 MPEG audio file Soundtrack \N 281626 9619196 0.99 373 Sao Lucas 2001 Carnaval 2001 MPEG audio file Soundtrack \N 296254 10020122 0.99 374 Guanabara Chill: Brazil (Disc 1) MPEG audio file Latin Marcos Valle 247614 8499591 0.99 375 Mas Que Nada Chill: Brazil (Disc 1) MPEG audio file Latin Jorge Ben 248398 8255254 0.99 376 Vôo Sobre o Horizonte Chill: Brazil (Disc 1) MPEG audio file Latin J.r.Bertami/Parana 225097 7528825 0.99 377 A Paz Chill: Brazil (Disc 1) MPEG audio file Latin Donato/Gilberto Gil 263183 8619173 0.99 378 Wave (Vou te Contar) Chill: Brazil (Disc 1) MPEG audio file Latin Antonio Carlos Jobim 271647 9057557 0.99 379 Água de Beber Chill: Brazil (Disc 1) MPEG audio file Latin Antonio Carlos Jobim/Vinicius de Moraes 146677 4866476 0.99 380 Samba da Bençaco Chill: Brazil (Disc 1) MPEG audio file Latin Baden Powell/Vinicius de Moraes 282200 9440676 0.99 381 Pode Parar Chill: Brazil (Disc 1) MPEG audio file Latin Jorge Vercilo/Jota Maranhao 179408 6046678 0.99 382 Menino do Rio Chill: Brazil (Disc 1) MPEG audio file Latin Caetano Veloso 262713 8737489 0.99 383 Ando Meio Desligado Chill: Brazil (Disc 1) MPEG audio file Latin Caetano Veloso 195813 6547648 0.99 384 Mistério da Raça Chill: Brazil (Disc 1) MPEG audio file Latin Luiz Melodia/Ricardo Augusto 184320 6191752 0.99 385 All Star Chill: Brazil (Disc 1) MPEG audio file Latin Nando Reis 176326 5891697 0.99 386 Menina Bonita Chill: Brazil (Disc 1) MPEG audio file Latin Alexandre Brazil/Pedro Luis/Rodrigo Cabelo 237087 7938246 0.99 387 Pescador de Ilusões Chill: Brazil (Disc 1) MPEG audio file Latin Macelo Yuka/O Rappa 245524 8267067 0.99 388 À Vontade (Live Mix) Chill: Brazil (Disc 1) MPEG audio file Latin Bombom/Ed Motta 180636 5972430 0.99 389 Maria Fumaça Chill: Brazil (Disc 1) MPEG audio file Latin Luiz Carlos/Oberdan 141008 4743149 0.99 390 Sambassim (dj patife remix) Chill: Brazil (Disc 1) MPEG audio file Latin Alba Carvalho/Fernando Porto 213655 7243166 0.99 391 Garota De Ipanema Chill: Brazil (Disc 2) MPEG audio file Latin Vários 279536 9141343 0.99 392 Tim Tim Por Tim Tim Chill: Brazil (Disc 2) MPEG audio file Latin Vários 213237 7143328 0.99 393 Tarde Em Itapoã Chill: Brazil (Disc 2) MPEG audio file Latin Vários 313704 10344491 0.99 394 Tanto Tempo Chill: Brazil (Disc 2) MPEG audio file Latin Vários 170292 5572240 0.99 395 Eu Vim Da Bahia - Live Chill: Brazil (Disc 2) MPEG audio file Latin Vários 157988 5115428 0.99 396 Alô Alô Marciano Chill: Brazil (Disc 2) MPEG audio file Latin Vários 238106 8013065 0.99 398 Only A Dream In Rio Chill: Brazil (Disc 2) MPEG audio file Latin Vários 371356 12192989 0.99 399 Abrir A Porta Chill: Brazil (Disc 2) MPEG audio file Latin Vários 271960 8991141 0.99 400 Alice Chill: Brazil (Disc 2) MPEG audio file Latin Vários 165982 5594341 0.99 401 Momentos Que Marcam Chill: Brazil (Disc 2) MPEG audio file Latin Vários 280137 9313740 0.99 402 Um Jantar Pra Dois Chill: Brazil (Disc 2) MPEG audio file Latin Vários 237714 7819755 0.99 403 Bumbo Da Mangueira Chill: Brazil (Disc 2) MPEG audio file Latin Vários 270158 9073350 0.99 404 Mr Funk Samba Chill: Brazil (Disc 2) MPEG audio file Latin Vários 213890 7102545 0.99 405 Santo Antonio Chill: Brazil (Disc 2) MPEG audio file Latin Vários 162716 5492069 0.99 406 Por Você Chill: Brazil (Disc 2) MPEG audio file Latin Vários 205557 6792493 0.99 407 Só Tinha De Ser Com Você Chill: Brazil (Disc 2) MPEG audio file Latin Vários 389642 13085596 0.99 408 Free Speech For The Dumb Garage Inc. (Disc 1) MPEG audio file Metal Molaney/Morris/Roberts/Wainwright 155428 5076048 0.99 409 It's Electric Garage Inc. (Disc 1) MPEG audio file Metal Harris/Tatler 213995 6978601 0.99 410 Sabbra Cadabra Garage Inc. (Disc 1) MPEG audio file Metal Black Sabbath 380342 12418147 0.99 411 Turn The Page Garage Inc. (Disc 1) MPEG audio file Metal Seger 366524 11946327 0.99 412 Die Die My Darling Garage Inc. (Disc 1) MPEG audio file Metal Danzig 149315 4867667 0.99 413 Loverman Garage Inc. (Disc 1) MPEG audio file Metal Cave 472764 15446975 0.99 414 Mercyful Fate Garage Inc. (Disc 1) MPEG audio file Metal Diamond/Shermann 671712 21942829 0.99 415 Astronomy Garage Inc. (Disc 1) MPEG audio file Metal A.Bouchard/J.Bouchard/S.Pearlman 397531 13065612 0.99 416 Whiskey In The Jar Garage Inc. (Disc 1) MPEG audio file Metal Traditional 305005 9943129 0.99 417 Tuesday's Gone Garage Inc. (Disc 1) MPEG audio file Metal Collins/Van Zandt 545750 17900787 0.99 418 The More I See Garage Inc. (Disc 1) MPEG audio file Metal Molaney/Morris/Roberts/Wainwright 287973 9378873 0.99 419 A Kind Of Magic Greatest Hits II MPEG audio file Rock Roger Taylor 262608 8689618 0.99 420 Under Pressure Greatest Hits II MPEG audio file Rock Queen & David Bowie 236617 7739042 0.99 421 Radio GA GA Greatest Hits II MPEG audio file Rock Roger Taylor 343745 11358573 0.99 422 I Want It All Greatest Hits II MPEG audio file Rock Queen 241684 7876564 0.99 423 I Want To Break Free Greatest Hits II MPEG audio file Rock John Deacon 259108 8552861 0.99 424 Innuendo Greatest Hits II MPEG audio file Rock Queen 387761 12664591 0.99 425 It's A Hard Life Greatest Hits II MPEG audio file Rock Freddie Mercury 249417 8112242 0.99 426 Breakthru Greatest Hits II MPEG audio file Rock Queen 249234 8150479 0.99 427 Who Wants To Live Forever Greatest Hits II MPEG audio file Rock Brian May 297691 9577577 0.99 428 Headlong Greatest Hits II MPEG audio file Rock Queen 273057 8921404 0.99 429 The Miracle Greatest Hits II MPEG audio file Rock Queen 294974 9671923 0.99 430 I'm Going Slightly Mad Greatest Hits II MPEG audio file Rock Queen 248032 8192339 0.99 431 The Invisible Man Greatest Hits II MPEG audio file Rock Queen 238994 7920353 0.99 432 Hammer To Fall Greatest Hits II MPEG audio file Rock Brian May 220316 7255404 0.99 433 Friends Will Be Friends Greatest Hits II MPEG audio file Rock Freddie Mercury & John Deacon 248920 8114582 0.99 434 The Show Must Go On Greatest Hits II MPEG audio file Rock Queen 263784 8526760 0.99 435 One Vision Greatest Hits II MPEG audio file Rock Queen 242599 7936928 0.99 436 Detroit Rock City Greatest Kiss MPEG audio file Rock Paul Stanley, B. Ezrin 218880 7146372 0.99 437 Black Diamond Greatest Kiss MPEG audio file Rock Paul Stanley 314148 10266007 0.99 438 Hard Luck Woman Greatest Kiss MPEG audio file Rock Paul Stanley 216032 7109267 0.99 439 Sure Know Something Greatest Kiss MPEG audio file Rock Paul Stanley, Vincent Poncia 242468 7939886 0.99 440 Love Gun Greatest Kiss MPEG audio file Rock Paul Stanley 196257 6424915 0.99 441 Deuce Greatest Kiss MPEG audio file Rock Gene Simmons 185077 6097210 0.99 442 Goin' Blind Greatest Kiss MPEG audio file Rock Gene Simmons, S. Coronel 216215 7045314 0.99 443 Shock Me Greatest Kiss MPEG audio file Rock Ace Frehley 227291 7529336 0.99 444 Do You Love Me Greatest Kiss MPEG audio file Rock Paul Stanley, B. Ezrin, K. Fowley 214987 6976194 0.99 445 She Greatest Kiss MPEG audio file Rock Gene Simmons, S. Coronel 248346 8229734 0.99 446 I Was Made For Loving You Greatest Kiss MPEG audio file Rock Paul Stanley, Vincent Poncia, Desmond Child 271360 9018078 0.99 447 Shout It Out Loud Greatest Kiss MPEG audio file Rock Paul Stanley, Gene Simmons, B. Ezrin 219742 7194424 0.99 448 God Of Thunder Greatest Kiss MPEG audio file Rock Paul Stanley 255791 8309077 0.99 449 Calling Dr. Love Greatest Kiss MPEG audio file Rock Gene Simmons 225332 7395034 0.99 450 Beth Greatest Kiss MPEG audio file Rock S. Penridge, Bob Ezrin, Peter Criss 166974 5360574 0.99 451 Strutter Greatest Kiss MPEG audio file Rock Paul Stanley, Gene Simmons 192496 6317021 0.99 452 Rock And Roll All Nite Greatest Kiss MPEG audio file Rock Paul Stanley, Gene Simmons 173609 5735902 0.99 453 Cold Gin Greatest Kiss MPEG audio file Rock Ace Frehley 262243 8609783 0.99 454 Plaster Caster Greatest Kiss MPEG audio file Rock Gene Simmons 207333 6801116 0.99 455 God Gave Rock 'n' Roll To You Greatest Kiss MPEG audio file Rock Paul Stanley, Gene Simmons, Rus Ballard, Bob Ezrin 320444 10441590 0.99 456 Heart of the Night Heart of the Night MPEG audio file Jazz \N 273737 9098263 0.99 457 De La Luz Heart of the Night MPEG audio file Jazz \N 315219 10518284 0.99 458 Westwood Moon Heart of the Night MPEG audio file Jazz \N 295627 9765802 0.99 459 Midnight Heart of the Night MPEG audio file Jazz \N 266866 8851060 0.99 460 Playtime Heart of the Night MPEG audio file Jazz \N 273580 9070880 0.99 461 Surrender Heart of the Night MPEG audio file Jazz \N 287634 9422926 0.99 462 Valentino's Heart of the Night MPEG audio file Jazz \N 296124 9848545 0.99 463 Believe Heart of the Night MPEG audio file Jazz \N 310778 10317185 0.99 464 As We Sleep Heart of the Night MPEG audio file Jazz \N 316865 10429398 0.99 465 When Evening Falls Heart of the Night MPEG audio file Jazz \N 298135 9863942 0.99 466 J Squared Heart of the Night MPEG audio file Jazz \N 288757 9480777 0.99 467 Best Thing Heart of the Night MPEG audio file Jazz \N 274259 9069394 0.99 468 Maria International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 167262 5484747 0.99 469 Poprocks And Coke International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 158354 5243078 0.99 470 Longview International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 234083 7714939 0.99 471 Welcome To Paradise International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 224208 7406008 0.99 472 Basket Case International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 181629 5951736 0.99 473 When I Come Around International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 178364 5839426 0.99 474 She International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 134164 4425128 0.99 475 J.A.R. (Jason Andrew Relva) International Superhits MPEG audio file Alternative & Punk Mike Dirnt -Words Green Day -Music 170997 5645755 0.99 476 Geek Stink Breath International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 135888 4408983 0.99 477 Brain Stew International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 193149 6305550 0.99 478 Jaded International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 90331 2950224 0.99 479 Walking Contradiction International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 151170 4932366 0.99 480 Stuck With Me International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 135523 4431357 0.99 481 Hitchin' A Ride International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 171546 5616891 0.99 482 Good Riddance (Time Of Your Life) International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 153600 5075241 0.99 483 Redundant International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 198164 6481753 0.99 484 Nice Guys Finish Last International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 170187 5604618 0.99 485 Minority International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 168803 5535061 0.99 486 Warning International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 221910 7343176 0.99 487 Waiting International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 192757 6316430 0.99 488 Macy's Day Parade International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 213420 7075573 0.99 489 Into The Light Into The Light MPEG audio file Rock David Coverdale 76303 2452653 0.99 490 River Song Into The Light MPEG audio file Rock David Coverdale 439510 14359478 0.99 491 She Give Me ... Into The Light MPEG audio file Rock David Coverdale 252551 8385478 0.99 492 Don't You Cry Into The Light MPEG audio file Rock David Coverdale 347036 11269612 0.99 493 Love Is Blind Into The Light MPEG audio file Rock David Coverdale/Earl Slick 344999 11409720 0.99 494 Slave Into The Light MPEG audio file Rock David Coverdale/Earl Slick 291892 9425200 0.99 495 Cry For Love Into The Light MPEG audio file Rock Bossi/David Coverdale/Earl Slick 293015 9567075 0.99 496 Living On Love Into The Light MPEG audio file Rock Bossi/David Coverdale/Earl Slick 391549 12785876 0.99 497 Midnight Blue Into The Light MPEG audio file Rock David Coverdale/Earl Slick 298631 9750990 0.99 498 Too Many Tears Into The Light MPEG audio file Rock Adrian Vanderberg/David Coverdale 359497 11810238 0.99 499 Don't Lie To Me Into The Light MPEG audio file Rock David Coverdale/Earl Slick 283585 9288007 0.99 500 Wherever You May Go Into The Light MPEG audio file Rock David Coverdale 239699 7803074 0.99 501 Grito De Alerta Meus Momentos MPEG audio file Latin Gonzaga Jr. 202213 6539422 0.99 502 Não Dá Mais Pra Segurar (Explode Coração) Meus Momentos MPEG audio file Latin \N 219768 7083012 0.99 503 Começaria Tudo Outra Vez Meus Momentos MPEG audio file Latin \N 196545 6473395 0.99 504 O Que É O Que É ? Meus Momentos MPEG audio file Latin \N 259291 8650647 0.99 505 Sangrando Meus Momentos MPEG audio file Latin Gonzaga Jr/Gonzaguinha 169717 5494406 0.99 506 Diga Lá, Coração Meus Momentos MPEG audio file Latin \N 255921 8280636 0.99 507 Lindo Lago Do Amor Meus Momentos MPEG audio file Latin Gonzaga Jr. 249678 8353191 0.99 508 Eu Apenas Queria Que Voçê Soubesse Meus Momentos MPEG audio file Latin \N 155637 5130056 0.99 509 Com A Perna No Mundo Meus Momentos MPEG audio file Latin Gonzaga Jr. 227448 7747108 0.99 510 E Vamos À Luta Meus Momentos MPEG audio file Latin \N 222406 7585112 0.99 511 Um Homem Também Chora (Guerreiro Menino) Meus Momentos MPEG audio file Latin \N 207229 6854219 0.99 512 Comportamento Geral Meus Momentos MPEG audio file Latin Gonzaga Jr 181577 5997444 0.99 513 Ponto De Interrogação Meus Momentos MPEG audio file Latin \N 180950 5946265 0.99 514 Espere Por Mim, Morena Meus Momentos MPEG audio file Latin Gonzaguinha 207072 6796523 0.99 515 Meia-Lua Inteira Minha Historia MPEG audio file Latin \N 222093 7466288 0.99 516 Voce e Linda Minha Historia MPEG audio file Latin \N 242938 8050268 0.99 517 Um Indio Minha Historia MPEG audio file Latin \N 195944 6453213 0.99 518 Podres Poderes Minha Historia MPEG audio file Latin \N 259761 8622495 0.99 519 Voce Nao Entende Nada - Cotidiano Minha Historia MPEG audio file Latin \N 421982 13885612 0.99 520 O Estrangeiro Minha Historia MPEG audio file Latin \N 374700 12472890 0.99 521 Menino Do Rio Minha Historia MPEG audio file Latin \N 147670 4862277 0.99 522 Qualquer Coisa Minha Historia MPEG audio file Latin \N 193410 6372433 0.99 523 Sampa Minha Historia MPEG audio file Latin \N 185051 6151831 0.99 524 Queixa Minha Historia MPEG audio file Latin \N 299676 9953962 0.99 525 O Leaozinho Minha Historia MPEG audio file Latin \N 184398 6098150 0.99 526 Fora Da Ordem Minha Historia MPEG audio file Latin \N 354011 11746781 0.99 527 Terra Minha Historia MPEG audio file Latin \N 401319 13224055 0.99 528 Alegria, Alegria Minha Historia MPEG audio file Latin \N 169221 5497025 0.99 529 Balada Do Louco Minha História MPEG audio file Alternative & Punk Arnaldo Baptista - Rita Lee 241057 7852328 0.99 530 Ando Meio Desligado Minha História MPEG audio file Alternative & Punk Arnaldo Baptista - Rita Lee - Sérgio Dias 287817 9484504 0.99 531 Top Top Minha História MPEG audio file Alternative & Punk Os Mutantes - Arnolpho Lima Filho 146938 4875374 0.99 532 Baby Minha História MPEG audio file Alternative & Punk Caetano Veloso 177188 5798202 0.99 533 A E O Z Minha História MPEG audio file Alternative & Punk Mutantes 518556 16873005 0.99 534 Panis Et Circenses Minha História MPEG audio file Alternative & Punk Caetano Veloso - Gilberto Gil 125152 4069688 0.99 535 Chão De Estrelas Minha História MPEG audio file Alternative & Punk Orestes Barbosa-Sílvio Caldas 284813 9433620 0.99 536 Vida De Cachorro Minha História MPEG audio file Alternative & Punk Rita Lee - Arnaldo Baptista - Sérgio Baptista 195186 6411149 0.99 537 Bat Macumba Minha História MPEG audio file Alternative & Punk Gilberto Gil - Caetano Veloso 187794 6295223 0.99 538 Desculpe Babe Minha História MPEG audio file Alternative & Punk Arnaldo Baptista - Rita Lee 170422 5637959 0.99 539 Rita Lee Minha História MPEG audio file Alternative & Punk Arnaldo Baptista/Rita Lee/Sérgio Dias 189257 6270503 0.99 540 Posso Perder Minha Mulher, Minha Mãe, Desde Que Eu Tenha O Rock And Roll Minha História MPEG audio file Alternative & Punk Arnaldo Baptista - Rita Lee - Arnolpho Lima Filho 222955 7346254 0.99 541 Banho De Lua Minha História MPEG audio file Alternative & Punk B. de Filippi - F. Migliaci - Versão: Fred Jorge 221831 7232123 0.99 542 Meu Refrigerador Não Funciona Minha História MPEG audio file Alternative & Punk Arnaldo Baptista - Rita Lee - Sérgio Dias 382981 12495906 0.99 543 Burn MK III The Final Concerts [Disc 1] MPEG audio file Rock Coverdale/Lord/Paice 453955 14775708 0.99 544 Stormbringer MK III The Final Concerts [Disc 1] MPEG audio file Rock Coverdale 277133 9050022 0.99 545 Gypsy MK III The Final Concerts [Disc 1] MPEG audio file Rock Coverdale/Hughes/Lord/Paice 339173 11046952 0.99 546 Lady Double Dealer MK III The Final Concerts [Disc 1] MPEG audio file Rock Coverdale 233586 7608759 0.99 547 Mistreated MK III The Final Concerts [Disc 1] MPEG audio file Rock Coverdale 758648 24596235 0.99 548 Smoke On The Water MK III The Final Concerts [Disc 1] MPEG audio file Rock Gillan/Glover/Lord/Paice 618031 20103125 0.99 549 You Fool No One MK III The Final Concerts [Disc 1] MPEG audio file Rock Coverdale/Lord/Paice 804101 26369966 0.99 550 Custard Pie Physical Graffiti [Disc 1] MPEG audio file Rock Jimmy Page/Robert Plant 253962 8348257 0.99 551 The Rover Physical Graffiti [Disc 1] MPEG audio file Rock Jimmy Page/Robert Plant 337084 11011286 0.99 552 In My Time Of Dying Physical Graffiti [Disc 1] MPEG audio file Rock John Bonham/John Paul Jones 666017 21676727 0.99 553 Houses Of The Holy Physical Graffiti [Disc 1] MPEG audio file Rock Jimmy Page/Robert Plant 242494 7972503 0.99 554 Trampled Under Foot Physical Graffiti [Disc 1] MPEG audio file Rock John Paul Jones 336692 11154468 0.99 555 Kashmir Physical Graffiti [Disc 1] MPEG audio file Rock John Bonham 508604 16686580 0.99 556 Imperatriz Sambas De Enredo 2001 MPEG audio file Latin Guga/Marquinho Lessa/Tuninho Professor 339173 11348710 0.99 557 Beija-Flor Sambas De Enredo 2001 MPEG audio file Latin Caruso/Cleber/Deo/Osmar 327000 10991159 0.99 558 Viradouro Sambas De Enredo 2001 MPEG audio file Latin Dadinho/Gilbreto Gomes/Gustavo/P.C. Portugal/R. Mocoto 344320 11484362 0.99 559 Mocidade Sambas De Enredo 2001 MPEG audio file Latin Domenil/J. Brito/Joaozinho/Rap, Marcelo Do 261720 8817757 0.99 560 Unidos Da Tijuca Sambas De Enredo 2001 MPEG audio file Latin Douglas/Neves, Vicente Das/Silva, Gilmar L./Toninho Gentil/Wantuir 338834 11440689 0.99 561 Salgueiro Sambas De Enredo 2001 MPEG audio file Latin Augusto/Craig Negoescu/Rocco Filho/Saara, Ze Carlos Da 305920 10294741 0.99 562 Mangueira Sambas De Enredo 2001 MPEG audio file Latin Bizuca/Clóvis Pê/Gilson Bernini/Marelo D'Aguia 298318 9999506 0.99 563 União Da Ilha Sambas De Enredo 2001 MPEG audio file Latin Dito/Djalma Falcao/Ilha, Almir Da/Márcio André 330945 11100945 0.99 564 Grande Rio Sambas De Enredo 2001 MPEG audio file Latin Carlos Santos/Ciro/Claudio Russo/Zé Luiz 307252 10251428 0.99 565 Portela Sambas De Enredo 2001 MPEG audio file Latin Flavio Bororo/Paulo Apparicio/Wagner Alves/Zeca Sereno 319608 10712216 0.99 566 Caprichosos Sambas De Enredo 2001 MPEG audio file Latin Gule/Jorge 101/Lequinho/Luiz Piao 351320 11870956 0.99 567 Tradição Sambas De Enredo 2001 MPEG audio file Latin Adalto Magalha/Lourenco 269165 9114880 0.99 568 Império Serrano Sambas De Enredo 2001 MPEG audio file Latin Arlindo Cruz/Carlos Sena/Elmo Caetano/Mauricao 334942 11161196 0.99 569 Tuiuti Sambas De Enredo 2001 MPEG audio file Latin Claudio Martins/David Lima/Kleber Rodrigues/Livre, Cesare Som 259657 8749492 0.99 570 (Da Le) Yaleo Supernatural MPEG audio file Rock Santana 353488 11769507 0.99 571 Love Of My Life Supernatural MPEG audio file Rock Carlos Santana & Dave Matthews 347820 11634337 0.99 572 Put Your Lights On Supernatural MPEG audio file Rock E. Shrody 285178 9394769 0.99 573 Africa Bamba Supernatural MPEG audio file Rock I. Toure, S. Tidiane Toure, Carlos Santana & K. Perazzo 282827 9492487 0.99 574 Smooth Supernatural MPEG audio file Rock M. Itaal Shur & Rob Thomas 298161 9867455 0.99 575 Do You Like The Way Supernatural MPEG audio file Rock L. Hill 354899 11741062 0.99 576 Maria Maria Supernatural MPEG audio file Rock W. Jean, J. Duplessis, Carlos Santana, K. Perazzo & R. Rekow 262635 8664601 0.99 577 Migra Supernatural MPEG audio file Rock R. Taha, Carlos Santana & T. Lindsay 329064 10963305 0.99 578 Corazon Espinado Supernatural MPEG audio file Rock F. Olivera 276114 9206802 0.99 579 Wishing It Was Supernatural MPEG audio file Rock Eale-Eye Cherry, M. Simpson, J. King & M. Nishita 292832 9771348 0.99 580 El Farol Supernatural MPEG audio file Rock Carlos Santana & KC Porter 291160 9599353 0.99 581 Primavera Supernatural MPEG audio file Rock KC Porter & JB Eckl 378618 12504234 0.99 582 The Calling Supernatural MPEG audio file Rock Carlos Santana & C. Thompson 747755 24703884 0.99 583 Solução The Best of Ed Motta MPEG audio file Latin \N 247431 8100449 0.99 584 Manuel The Best of Ed Motta MPEG audio file Latin \N 230269 7677671 0.99 585 Entre E Ouça The Best of Ed Motta MPEG audio file Latin \N 286302 9391004 0.99 586 Um Contrato Com Deus The Best of Ed Motta MPEG audio file Latin \N 202501 6636465 0.99 587 Um Jantar Pra Dois The Best of Ed Motta MPEG audio file Latin \N 244009 8021589 0.99 588 Vamos Dançar The Best of Ed Motta MPEG audio file Latin \N 226194 7617432 0.99 589 Um Love The Best of Ed Motta MPEG audio file Latin \N 181603 6095524 0.99 590 Seis Da Tarde The Best of Ed Motta MPEG audio file Latin \N 238445 7935898 0.99 591 Baixo Rio The Best of Ed Motta MPEG audio file Latin \N 198008 6521676 0.99 592 Sombras Do Meu Destino The Best of Ed Motta MPEG audio file Latin \N 280685 9161539 0.99 593 Do You Have Other Loves? The Best of Ed Motta MPEG audio file Latin \N 295235 9604273 0.99 594 Agora Que O Dia Acordou The Best of Ed Motta MPEG audio file Latin \N 323213 10572752 0.99 595 Já!!! The Best of Ed Motta MPEG audio file Latin \N 217782 7103608 0.99 596 A Rua The Best of Ed Motta MPEG audio file Latin \N 238027 7930264 0.99 597 Now's The Time The Essential Miles Davis [Disc 1] MPEG audio file Jazz Miles Davis 197459 6358868 0.99 598 Jeru The Essential Miles Davis [Disc 1] MPEG audio file Jazz Miles Davis 193410 6222536 0.99 599 Compulsion The Essential Miles Davis [Disc 1] MPEG audio file Jazz Miles Davis 345025 11254474 0.99 600 Tempus Fugit The Essential Miles Davis [Disc 1] MPEG audio file Jazz Miles Davis 231784 7548434 0.99 601 Walkin' The Essential Miles Davis [Disc 1] MPEG audio file Jazz Miles Davis 807392 26411634 0.99 602 'Round Midnight The Essential Miles Davis [Disc 1] MPEG audio file Jazz Miles Davis 357459 11590284 0.99 603 Bye Bye Blackbird The Essential Miles Davis [Disc 1] MPEG audio file Jazz Miles Davis 476003 15549224 0.99 604 New Rhumba The Essential Miles Davis [Disc 1] MPEG audio file Jazz Miles Davis 277968 9018024 0.99 605 Generique The Essential Miles Davis [Disc 1] MPEG audio file Jazz Miles Davis 168777 5437017 0.99 606 Summertime The Essential Miles Davis [Disc 1] MPEG audio file Jazz Miles Davis 200437 6461370 0.99 607 So What The Essential Miles Davis [Disc 1] MPEG audio file Jazz Miles Davis 564009 18360449 0.99 608 The Pan Piper The Essential Miles Davis [Disc 1] MPEG audio file Jazz Miles Davis 233769 7593713 0.99 609 Someday My Prince Will Come The Essential Miles Davis [Disc 1] MPEG audio file Jazz Miles Davis 544078 17890773 0.99 610 My Funny Valentine (Live) The Essential Miles Davis [Disc 2] MPEG audio file Jazz Miles Davis 907520 29416781 0.99 611 E.S.P. The Essential Miles Davis [Disc 2] MPEG audio file Jazz Miles Davis 330684 11079866 0.99 612 Nefertiti The Essential Miles Davis [Disc 2] MPEG audio file Jazz Miles Davis 473495 15478450 0.99 613 Petits Machins (Little Stuff) The Essential Miles Davis [Disc 2] MPEG audio file Jazz Miles Davis 487392 16131272 0.99 614 Miles Runs The Voodoo Down The Essential Miles Davis [Disc 2] MPEG audio file Jazz Miles Davis 843964 27967919 0.99 615 Little Church (Live) The Essential Miles Davis [Disc 2] MPEG audio file Jazz Miles Davis 196101 6273225 0.99 616 Black Satin The Essential Miles Davis [Disc 2] MPEG audio file Jazz Miles Davis 316682 10529483 0.99 617 Jean Pierre (Live) The Essential Miles Davis [Disc 2] MPEG audio file Jazz Miles Davis 243461 7955114 0.99 618 Time After Time The Essential Miles Davis [Disc 2] MPEG audio file Jazz Miles Davis 220734 7292197 0.99 619 Portia The Essential Miles Davis [Disc 2] MPEG audio file Jazz Miles Davis 378775 12520126 0.99 620 Space Truckin' The Final Concerts (Disc 2) MPEG audio file Rock Blackmore/Gillan/Glover/Lord/Paice 1196094 39267613 0.99 621 Going Down / Highway Star The Final Concerts (Disc 2) MPEG audio file Rock Gillan/Glover/Lord/Nix - Blackmore/Paice 913658 29846063 0.99 622 Mistreated (Alternate Version) The Final Concerts (Disc 2) MPEG audio file Rock Blackmore/Coverdale 854700 27775442 0.99 623 You Fool No One (Alternate Version) The Final Concerts (Disc 2) MPEG audio file Rock Blackmore/Coverdale/Lord/Paice 763924 24887209 0.99 624 Jeepers Creepers Up An' Atom MPEG audio file Jazz \N 185965 5991903 0.99 625 Blue Rythm Fantasy Up An' Atom MPEG audio file Jazz \N 348212 11204006 0.99 626 Drum Boogie Up An' Atom MPEG audio file Jazz \N 191555 6185636 0.99 627 Let Me Off Uptown Up An' Atom MPEG audio file Jazz \N 187637 6034685 0.99 628 Leave Us Leap Up An' Atom MPEG audio file Jazz \N 182726 5898810 0.99 629 Opus No.1 Up An' Atom MPEG audio file Jazz \N 179800 5846041 0.99 630 Boogie Blues Up An' Atom MPEG audio file Jazz \N 204199 6603153 0.99 631 How High The Moon Up An' Atom MPEG audio file Jazz \N 201430 6529487 0.99 632 Disc Jockey Jump Up An' Atom MPEG audio file Jazz \N 193149 6260820 0.99 633 Up An' Atom Up An' Atom MPEG audio file Jazz \N 179565 5822645 0.99 634 Bop Boogie Up An' Atom MPEG audio file Jazz \N 189596 6093124 0.99 635 Lemon Drop Up An' Atom MPEG audio file Jazz \N 194089 6287531 0.99 636 Coronation Drop Up An' Atom MPEG audio file Jazz \N 176222 5899898 0.99 637 Overtime Up An' Atom MPEG audio file Jazz \N 163030 5432236 0.99 638 Imagination Up An' Atom MPEG audio file Jazz \N 289306 9444385 0.99 639 Don't Take Your Love From Me Up An' Atom MPEG audio file Jazz \N 282331 9244238 0.99 640 Midget Up An' Atom MPEG audio file Jazz \N 217025 7257663 0.99 641 I'm Coming Virginia Up An' Atom MPEG audio file Jazz \N 280163 9209827 0.99 642 Payin' Them Dues Blues Up An' Atom MPEG audio file Jazz \N 198556 6536918 0.99 643 Jungle Drums Up An' Atom MPEG audio file Jazz \N 199627 6546063 0.99 644 Showcase Up An' Atom MPEG audio file Jazz \N 201560 6697510 0.99 645 Swedish Schnapps Up An' Atom MPEG audio file Jazz \N 191268 6359750 0.99 646 Samba Da Bênção Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 409965 13490008 0.99 647 Pot-Pourri N.º 4 Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 392437 13125975 0.99 648 Onde Anda Você Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 168437 5550356 0.99 649 Samba Da Volta Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 170631 5676090 0.99 650 Canto De Ossanha Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 204956 6771624 0.99 651 Pot-Pourri N.º 5 Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 219898 7117769 0.99 652 Formosa Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 137482 4560873 0.99 653 Como É Duro Trabalhar Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 226168 7541177 0.99 654 Minha Namorada Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 244297 7927967 0.99 655 Por Que Será Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 162142 5371483 0.99 656 Berimbau Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 190667 6335548 0.99 657 Deixa Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 179826 5932799 0.99 658 Pot-Pourri N.º 2 Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 211748 6878359 0.99 659 Samba Em Prelúdio Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 212636 6923473 0.99 660 Carta Ao Tom 74 Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 162560 5382354 0.99 661 Linha de Passe (João Bosco) Vozes do MPB MPEG audio file Latin \N 230948 7902328 0.99 662 Pela Luz dos Olhos Teus (Miúcha e Tom Jobim) Vozes do MPB MPEG audio file Latin \N 163970 5399626 0.99 663 Chão de Giz (Elba Ramalho) Vozes do MPB MPEG audio file Latin \N 274834 9016916 0.99 664 Marina (Dorival Caymmi) Vozes do MPB MPEG audio file Latin \N 172643 5523628 0.99 665 Aquarela (Toquinho) Vozes do MPB MPEG audio file Latin \N 259944 8480140 0.99 666 Coração do Agreste (Fafá de Belém) Vozes do MPB MPEG audio file Latin \N 258194 8380320 0.99 667 Dona (Roupa Nova) Vozes do MPB MPEG audio file Latin \N 243356 7991295 0.99 668 Começaria Tudo Outra Vez (Maria Creuza) Vozes do MPB MPEG audio file Latin \N 206994 6851151 0.99 669 Caçador de Mim (Sá & Guarabyra) Vozes do MPB MPEG audio file Latin \N 238341 7751360 0.99 670 Romaria (Renato Teixeira) Vozes do MPB MPEG audio file Latin \N 244793 8033885 0.99 671 As Rosas Não Falam (Beth Carvalho) Vozes do MPB MPEG audio file Latin \N 116767 3836641 0.99 672 Wave (Os Cariocas) Vozes do MPB MPEG audio file Latin \N 130063 4298006 0.99 673 Garota de Ipanema (Dick Farney) Vozes do MPB MPEG audio file Latin \N 174367 5767474 0.99 674 Preciso Apender a Viver Só (Maysa) Vozes do MPB MPEG audio file Latin \N 143464 4642359 0.99 675 Susie Q Chronicle, Vol. 1 MPEG audio file Rock Hawkins-Lewis-Broadwater 275565 9043825 0.99 676 I Put A Spell On You Chronicle, Vol. 1 MPEG audio file Rock Jay Hawkins 272091 8943000 0.99 677 Proud Mary Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 189022 6229590 0.99 678 Bad Moon Rising Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 140146 4609835 0.99 679 Lodi Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 191451 6260214 0.99 680 Green River Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 154279 5105874 0.99 681 Commotion Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 162899 5354252 0.99 682 Down On The Corner Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 164858 5521804 0.99 683 Fortunate Son Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 140329 4617559 0.99 684 Travelin' Band Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 129358 4270414 0.99 685 Who'll Stop The Rain Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 149394 4899579 0.99 686 Up Around The Bend Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 162429 5368701 0.99 687 Run Through The Jungle Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 186044 6156567 0.99 688 Lookin' Out My Back Door Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 152946 5034670 0.99 689 Long As I Can See The Light Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 213237 6924024 0.99 690 I Heard It Through The Grapevine Chronicle, Vol. 1 MPEG audio file Rock Whitfield-Strong 664894 21947845 0.99 691 Have You Ever Seen The Rain? Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 160052 5263675 0.99 692 Hey Tonight Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 162847 5343807 0.99 693 Sweet Hitch-Hiker Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 175490 5716603 0.99 694 Someday Never Comes Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 239360 7945235 0.99 695 Walking On The Water Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 281286 9302129 0.99 696 Suzie-Q, Pt. 2 Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 244114 7986637 0.99 697 Born On The Bayou Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 316630 10361866 0.99 698 Good Golly Miss Molly Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 163604 5348175 0.99 699 Tombstone Shadow Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 218880 7209080 0.99 700 Wrote A Song For Everyone Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 296385 9675875 0.99 701 Night Time Is The Right Time Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 190119 6211173 0.99 702 Cotton Fields Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 178181 5919224 0.99 703 It Came Out Of The Sky Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 176718 5807474 0.99 704 Don't Look Now Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 131918 4366455 0.99 705 The Midnight Special Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 253596 8297482 0.99 706 Before You Accuse Me Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 207804 6815126 0.99 707 My Baby Left Me Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 140460 4633440 0.99 708 Pagan Baby Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 385619 12713813 0.99 709 (Wish I Could) Hideaway Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 228466 7432978 0.99 710 It's Just A Thought Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 237374 7778319 0.99 711 Molina Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 163239 5390811 0.99 712 Born To Move Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 342804 11260814 0.99 713 Lookin' For A Reason Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 209789 6933135 0.99 714 Hello Mary Lou Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 132832 4476563 0.99 715 Gatas Extraordinárias Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 212506 7095702 0.99 716 Brasil Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 243696 7911683 0.99 717 Eu Sou Neguinha (Ao Vivo) Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 251768 8376000 0.99 718 Geração Coca-Cola (Ao Vivo) Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 228153 7573301 0.99 719 Lanterna Dos Afogados Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 204538 6714582 0.99 720 Coroné Antonio Bento Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 200437 6713066 0.99 721 Você Passa, Eu Acho Graça (Ao Vivo) Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 206733 6943576 0.99 722 Meu Mundo Fica Completo (Com Você) Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 247771 8322240 0.99 723 1° De Julho Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 270262 9017535 0.99 724 Música Urbana 2 Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 194899 6383472 0.99 725 Vida Bandida (Ao Vivo) Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 192626 6360785 0.99 726 Palavras Ao Vento Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 212453 7048676 0.99 727 Não Sei O Que Eu Quero Da Vida Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 151849 5024963 0.99 728 Woman Is The Nigger Of The World (Ao Vivo) Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 298919 9724145 0.99 729 Juventude Transviada (Ao Vivo) Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 278622 9183808 0.99 730 Malandragem Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 247588 8165048 0.99 731 O Segundo Sol Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 252133 8335629 0.99 732 Smells Like Teen Spirit (Ao Vivo) Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 316865 10384506 0.99 733 E.C.T. Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 227500 7571834 0.99 734 Todo Amor Que Houver Nesta Vida Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 227160 7420347 0.99 735 Metrô. Linha 743 Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 174654 5837495 0.99 736 Nós (Ao Vivo) Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 193828 6498661 0.99 737 Na Cadência Do Samba Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 196075 6483952 0.99 738 Admirável Gado Novo Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 274390 9144031 0.99 739 Eleanor Rigby Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 189466 6303205 0.99 740 Socorro Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 258586 8549393 0.99 741 Blues Da Piedade Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 257123 8472964 0.99 742 Rubens Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 211853 7026317 0.99 743 Não Deixe O Samba Morrer - Cassia Eller e Alcione Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 268173 8936345 0.99 744 Mis Penas Lloraba Yo (Ao Vivo) Soy Gitano (Tangos) Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 188473 6195854 0.99 745 Comin' Home Come Taste The Band MPEG audio file Rock Bolin/Coverdale/Paice 235781 7644604 0.99 746 Lady Luck Come Taste The Band MPEG audio file Rock Cook/Coverdale 168202 5501379 0.99 747 Gettin' Tighter Come Taste The Band MPEG audio file Rock Bolin/Hughes 218044 7176909 0.99 748 Dealer Come Taste The Band MPEG audio file Rock Bolin/Coverdale 230922 7591066 0.99 749 I Need Love Come Taste The Band MPEG audio file Rock Bolin/Coverdale 263836 8701064 0.99 750 Drifter Come Taste The Band MPEG audio file Rock Bolin/Coverdale 242834 8001505 0.99 751 Love Child Come Taste The Band MPEG audio file Rock Bolin/Coverdale 188160 6173806 0.99 752 This Time Around / Owed to 'G' [Instrumental] Come Taste The Band MPEG audio file Rock Bolin/Hughes/Lord 370102 11995679 0.99 753 You Keep On Moving Come Taste The Band MPEG audio file Rock Coverdale/Hughes 319111 10447868 0.99 754 Speed King Deep Purple In Rock MPEG audio file Rock Blackmore, Gillan, Glover, Lord, Paice 264385 8587578 0.99 755 Bloodsucker Deep Purple In Rock MPEG audio file Rock Blackmore, Gillan, Glover, Lord, Paice 256261 8344405 0.99 756 Child In Time Deep Purple In Rock MPEG audio file Rock Blackmore, Gillan, Glover, Lord, Paice 620460 20230089 0.99 757 Flight Of The Rat Deep Purple In Rock MPEG audio file Rock Blackmore, Gillan, Glover, Lord, Paice 478302 15563967 0.99 758 Into The Fire Deep Purple In Rock MPEG audio file Rock Blackmore, Gillan, Glover, Lord, Paice 210259 6849310 0.99 759 Living Wreck Deep Purple In Rock MPEG audio file Rock Blackmore, Gillan, Glover, Lord, Paice 274886 8993056 0.99 760 Hard Lovin' Man Deep Purple In Rock MPEG audio file Rock Blackmore, Gillan, Glover, Lord, Paice 431203 13931179 0.99 761 Fireball Fireball MPEG audio file Rock Ritchie Blackmore, Ian Gillan, Roger Glover, Jon Lord, Ian Paice 204721 6714807 0.99 762 No No No Fireball MPEG audio file Rock Ritchie Blackmore, Ian Gillan, Roger Glover, Jon Lord, Ian Paice 414902 13646606 0.99 763 Strange Kind Of Woman Fireball MPEG audio file Rock Ritchie Blackmore, Ian Gillan, Roger Glover, Jon Lord, Ian Paice 247092 8072036 0.99 764 Anyone's Daughter Fireball MPEG audio file Rock Ritchie Blackmore, Ian Gillan, Roger Glover, Jon Lord, Ian Paice 284682 9354480 0.99 765 The Mule Fireball MPEG audio file Rock Ritchie Blackmore, Ian Gillan, Roger Glover, Jon Lord, Ian Paice 322063 10638390 0.99 766 Fools Fireball MPEG audio file Rock Ritchie Blackmore, Ian Gillan, Roger Glover, Jon Lord, Ian Paice 500427 16279366 0.99 767 No One Came Fireball MPEG audio file Rock Ritchie Blackmore, Ian Gillan, Roger Glover, Jon Lord, Ian Paice 385880 12643813 0.99 768 Knocking At Your Back Door Knocking at Your Back Door: The Best Of Deep Purple in the 80's MPEG audio file Rock Richie Blackmore, Ian Gillian, Roger Glover 424829 13779332 0.99 769 Bad Attitude Knocking at Your Back Door: The Best Of Deep Purple in the 80's MPEG audio file Rock Richie Blackmore, Ian Gillian, Roger Glover, Jon Lord 307905 10035180 0.99 770 Child In Time (Son Of Aleric - Instrumental) Knocking at Your Back Door: The Best Of Deep Purple in the 80's MPEG audio file Rock Richie Blackmore, Ian Gillian, Roger Glover, Jon Lord, Ian Paice 602880 19712753 0.99 771 Nobody's Home Knocking at Your Back Door: The Best Of Deep Purple in the 80's MPEG audio file Rock Richie Blackmore, Ian Gillian, Roger Glover, Jon Lord, Ian Paice 243017 7929493 0.99 772 Black Night Knocking at Your Back Door: The Best Of Deep Purple in the 80's MPEG audio file Rock Richie Blackmore, Ian Gillian, Roger Glover, Jon Lord, Ian Paice 368770 12058906 0.99 773 Perfect Strangers Knocking at Your Back Door: The Best Of Deep Purple in the 80's MPEG audio file Rock Richie Blackmore, Ian Gillian, Roger Glover 321149 10445353 0.99 774 The Unwritten Law Knocking at Your Back Door: The Best Of Deep Purple in the 80's MPEG audio file Rock Richie Blackmore, Ian Gillian, Roger Glover, Ian Paice 295053 9740361 0.99 775 Call Of The Wild Knocking at Your Back Door: The Best Of Deep Purple in the 80's MPEG audio file Rock Richie Blackmore, Ian Gillian, Roger Glover, Jon Lord 293851 9575295 0.99 776 Hush Knocking at Your Back Door: The Best Of Deep Purple in the 80's MPEG audio file Rock South 213054 6944928 0.99 777 Smoke On The Water Knocking at Your Back Door: The Best Of Deep Purple in the 80's MPEG audio file Rock Richie Blackmore, Ian Gillian, Roger Glover, Jon Lord, Ian Paice 464378 15180849 0.99 778 Space Trucking Knocking at Your Back Door: The Best Of Deep Purple in the 80's MPEG audio file Rock Richie Blackmore, Ian Gillian, Roger Glover, Jon Lord, Ian Paice 341185 11122183 0.99 779 Highway Star Machine Head MPEG audio file Rock Ian Gillan/Ian Paice/Jon Lord/Ritchie Blckmore/Roger Glover 368770 12012452 0.99 780 Maybe I'm A Leo Machine Head MPEG audio file Rock Ian Gillan/Ian Paice/Jon Lord/Ritchie Blckmore/Roger Glover 290455 9502646 0.99 781 Pictures Of Home Machine Head MPEG audio file Rock Ian Gillan/Ian Paice/Jon Lord/Ritchie Blckmore/Roger Glover 303777 9903835 0.99 782 Never Before Machine Head MPEG audio file Rock Ian Gillan/Ian Paice/Jon Lord/Ritchie Blckmore/Roger Glover 239830 7832790 0.99 783 Smoke On The Water Machine Head MPEG audio file Rock Ian Gillan/Ian Paice/Jon Lord/Ritchie Blckmore/Roger Glover 340871 11246496 0.99 784 Lazy Machine Head MPEG audio file Rock Ian Gillan/Ian Paice/Jon Lord/Ritchie Blckmore/Roger Glover 442096 14397671 0.99 785 Space Truckin' Machine Head MPEG audio file Rock Ian Gillan/Ian Paice/Jon Lord/Ritchie Blckmore/Roger Glover 272796 8981030 0.99 786 Vavoom : Ted The Mechanic Purpendicular MPEG audio file Rock Ian Gillan, Roger Glover, Jon Lord, Steve Morse, Ian Paice 257384 8510755 0.99 787 Loosen My Strings Purpendicular MPEG audio file Rock Ian Gillan, Roger Glover, Jon Lord, Steve Morse, Ian Paice 359680 11702232 0.99 788 Soon Forgotten Purpendicular MPEG audio file Rock Ian Gillan, Roger Glover, Jon Lord, Steve Morse, Ian Paice 287791 9401383 0.99 789 Sometimes I Feel Like Screaming Purpendicular MPEG audio file Rock Ian Gillan, Roger Glover, Jon Lord, Steve Morse, Ian Paice 451840 14789410 0.99 790 Cascades : I'm Not Your Lover Purpendicular MPEG audio file Rock Ian Gillan, Roger Glover, Jon Lord, Steve Morse, Ian Paice 283689 9209693 0.99 791 The Aviator Purpendicular MPEG audio file Rock Ian Gillan, Roger Glover, Jon Lord, Steve Morse, Ian Paice 320992 10532053 0.99 792 Rosa's Cantina Purpendicular MPEG audio file Rock Ian Gillan, Roger Glover, Jon Lord, Steve Morse, Ian Paice 312372 10323804 0.99 793 A Castle Full Of Rascals Purpendicular MPEG audio file Rock Ian Gillan, Roger Glover, Jon Lord, Steve Morse, Ian Paice 311693 10159566 0.99 794 A Touch Away Purpendicular MPEG audio file Rock Ian Gillan, Roger Glover, Jon Lord, Steve Morse, Ian Paice 276323 9098561 0.99 795 Hey Cisco Purpendicular MPEG audio file Rock Ian Gillan, Roger Glover, Jon Lord, Steve Morse, Ian Paice 354089 11600029 0.99 796 Somebody Stole My Guitar Purpendicular MPEG audio file Rock Ian Gillan, Roger Glover, Jon Lord, Steve Morse, Ian Paice 249443 8180421 0.99 797 The Purpendicular Waltz Purpendicular MPEG audio file Rock Ian Gillan, Roger Glover, Jon Lord, Steve Morse, Ian Paice 283924 9299131 0.99 798 King Of Dreams Slaves And Masters MPEG audio file Rock Blackmore, Glover, Turner 328385 10733847 0.99 799 The Cut Runs Deep Slaves And Masters MPEG audio file Rock Blackmore, Glover, Turner, Lord, Paice 342752 11191650 0.99 800 Fire In The Basement Slaves And Masters MPEG audio file Rock Blackmore, Glover, Turner, Lord, Paice 283977 9267550 0.99 801 Truth Hurts Slaves And Masters MPEG audio file Rock Blackmore, Glover, Turner 314827 10224612 0.99 802 Breakfast In Bed Slaves And Masters MPEG audio file Rock Blackmore, Glover, Turner 317126 10323804 0.99 803 Love Conquers All Slaves And Masters MPEG audio file Rock Blackmore, Glover, Turner 227186 7328516 0.99 804 Fortuneteller Slaves And Masters MPEG audio file Rock Blackmore, Glover, Turner, Lord, Paice 349335 11369671 0.99 805 Too Much Is Not Enough Slaves And Masters MPEG audio file Rock Turner, Held, Greenwood 257724 8382800 0.99 806 Wicked Ways Slaves And Masters MPEG audio file Rock Blackmore, Glover, Turner, Lord, Paice 393691 12826582 0.99 807 Stormbringer Stormbringer MPEG audio file Rock D.Coverdale/R.Blackmore/Ritchie Blackmore 246413 8044864 0.99 808 Love Don't Mean a Thing Stormbringer MPEG audio file Rock D.Coverdale/G.Hughes/Glenn Hughes/I.Paice/Ian Paice/J.Lord/John Lord/R.Blackmore/Ritchie Blackmore 263862 8675026 0.99 809 Holy Man Stormbringer MPEG audio file Rock D.Coverdale/G.Hughes/Glenn Hughes/J.Lord/John Lord 270236 8818093 0.99 810 Hold On Stormbringer MPEG audio file Rock D.Coverdal/G.Hughes/Glenn Hughes/I.Paice/Ian Paice/J.Lord/John Lord 306860 10022428 0.99 811 Lady Double Dealer Stormbringer MPEG audio file Rock D.Coverdale/R.Blackmore/Ritchie Blackmore 201482 6554330 0.99 812 You Can't Do it Right (With the One You Love) Stormbringer MPEG audio file Rock D.Coverdale/G.Hughes/Glenn Hughes/R.Blackmore/Ritchie Blackmore 203755 6709579 0.99 813 High Ball Shooter Stormbringer MPEG audio file Rock D.Coverdale/G.Hughes/Glenn Hughes/I.Paice/Ian Paice/J.Lord/John Lord/R.Blackmore/Ritchie Blackmore 267833 8772471 0.99 814 The Gypsy Stormbringer MPEG audio file Rock D.Coverdale/G.Hughes/Glenn Hughes/I.Paice/Ian Paice/J.Lord/John Lord/R.Blackmore/Ritchie Blackmore 242886 7946614 0.99 815 Soldier Of Fortune Stormbringer MPEG audio file Rock D.Coverdale/R.Blackmore/Ritchie Blackmore 193750 6315321 0.99 816 The Battle Rages On The Battle Rages On MPEG audio file Rock ian paice/jon lord 356963 11626228 0.99 817 Lick It Up The Battle Rages On MPEG audio file Rock roger glover 240274 7792604 0.99 818 Anya The Battle Rages On MPEG audio file Rock jon lord/roger glover 392437 12754921 0.99 819 Talk About Love The Battle Rages On MPEG audio file Rock roger glover 247823 8072171 0.99 820 Time To Kill The Battle Rages On MPEG audio file Rock roger glover 351033 11354742 0.99 821 Ramshackle Man The Battle Rages On MPEG audio file Rock roger glover 334445 10874679 0.99 822 A Twist In The Tail The Battle Rages On MPEG audio file Rock roger glover 257462 8413103 0.99 823 Nasty Piece Of Work The Battle Rages On MPEG audio file Rock jon lord/roger glover 276662 9076997 0.99 824 Solitaire The Battle Rages On MPEG audio file Rock roger glover 282226 9157021 0.99 825 One Man's Meat The Battle Rages On MPEG audio file Rock roger glover 278804 9068960 0.99 826 Pour Some Sugar On Me Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 292519 9518842 0.99 827 Photograph Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 248633 8108507 0.99 828 Love Bites Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 346853 11305791 0.99 829 Let's Get Rocked Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 296019 9724150 0.99 830 Two Steps Behind [Acoustic Version] Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 259787 8523388 0.99 831 Animal Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 244741 7985133 0.99 832 Heaven Is Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 214021 6988128 0.99 833 Rocket Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 247248 8092463 0.99 834 When Love & Hate Collide Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 257280 8364633 0.99 835 Action Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 220604 7130830 0.99 836 Make Love Like A Man Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 255660 8309725 0.99 837 Armageddon It Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 322455 10522352 0.99 838 Have You Ever Needed Someone So Bad Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 319320 10400020 0.99 839 Rock Of Ages Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 248424 8150318 0.99 840 Hysteria Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 355056 11622738 0.99 841 Bringin' On The Heartbreak Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 272457 8853324 0.99 842 Roll Call Outbreak MPEG audio file Jazz Jim Beard 321358 10653494 0.99 843 Otay Outbreak MPEG audio file Jazz John Scofield, Robert Aries, Milton Chambers and Gary Grainger 423653 14176083 0.99 844 Groovus Interruptus Outbreak MPEG audio file Jazz Jim Beard 319373 10602166 0.99 845 Paris On Mine Outbreak MPEG audio file Jazz Jon Herington 368875 12059507 0.99 846 In Time Outbreak MPEG audio file Jazz Sylvester Stewart 368953 12287103 0.99 847 Plan B Outbreak MPEG audio file Jazz Dean Brown, Dennis Chambers & Jim Beard 272039 9032315 0.99 848 Outbreak Outbreak MPEG audio file Jazz Jim Beard & Jon Herington 659226 21685807 0.99 849 Baltimore, DC Outbreak MPEG audio file Jazz John Scofield 346932 11394473 0.99 850 Talkin Loud and Saying Nothin Outbreak MPEG audio file Jazz James Brown & Bobby Byrd 360411 11994859 0.99 851 Pétala Djavan Ao Vivo - Vol. 02 MPEG audio file Latin \N 270080 8856165 0.99 852 Meu Bem-Querer Djavan Ao Vivo - Vol. 02 MPEG audio file Latin \N 255608 8330047 0.99 853 Cigano Djavan Ao Vivo - Vol. 02 MPEG audio file Latin \N 304692 10037362 0.99 854 Boa Noite Djavan Ao Vivo - Vol. 02 MPEG audio file Latin \N 338755 11283582 0.99 855 Fato Consumado Djavan Ao Vivo - Vol. 02 MPEG audio file Latin \N 211565 7018586 0.99 856 Faltando Um Pedaço Djavan Ao Vivo - Vol. 02 MPEG audio file Latin \N 267728 8788760 0.99 857 Álibi Djavan Ao Vivo - Vol. 02 MPEG audio file Latin \N 213237 6928434 0.99 858 Esquinas Djavan Ao Vivo - Vol. 02 MPEG audio file Latin \N 280999 9096726 0.99 859 Se... Djavan Ao Vivo - Vol. 02 MPEG audio file Latin \N 286432 9413777 0.99 860 Eu Te Devoro Djavan Ao Vivo - Vol. 02 MPEG audio file Latin \N 311614 10312775 0.99 861 Lilás Djavan Ao Vivo - Vol. 02 MPEG audio file Latin \N 274181 9049542 0.99 862 Acelerou Djavan Ao Vivo - Vol. 02 MPEG audio file Latin \N 284081 9396942 0.99 863 Um Amor Puro Djavan Ao Vivo - Vol. 02 MPEG audio file Latin \N 327784 10687311 0.99 864 Samurai Djavan Ao Vivo - Vol. 1 MPEG audio file Latin Djavan 330997 10872787 0.99 865 Nem Um Dia Djavan Ao Vivo - Vol. 1 MPEG audio file Latin Djavan 337423 11181446 0.99 866 Oceano Djavan Ao Vivo - Vol. 1 MPEG audio file Latin Djavan 217338 7026441 0.99 867 Açai Djavan Ao Vivo - Vol. 1 MPEG audio file Latin Djavan 270968 8893682 0.99 868 Serrado Djavan Ao Vivo - Vol. 1 MPEG audio file Latin Djavan 295314 9842240 0.99 869 Flor De Lis Djavan Ao Vivo - Vol. 1 MPEG audio file Latin Djavan 236355 7801108 0.99 870 Amar É Tudo Djavan Ao Vivo - Vol. 1 MPEG audio file Latin Djavan 211617 7073899 0.99 871 Azul Djavan Ao Vivo - Vol. 1 MPEG audio file Latin Djavan 253962 8381029 0.99 872 Seduzir Djavan Ao Vivo - Vol. 1 MPEG audio file Latin Djavan 277524 9163253 0.99 873 A Carta Djavan Ao Vivo - Vol. 1 MPEG audio file Latin Djavan - Gabriel, O Pensador 347297 11493463 0.99 874 Sina Djavan Ao Vivo - Vol. 1 MPEG audio file Latin Djavan 268173 8906539 0.99 875 Acelerou Djavan Ao Vivo - Vol. 1 MPEG audio file Latin Djavan 284133 9391439 0.99 876 Um Amor Puro Djavan Ao Vivo - Vol. 1 MPEG audio file Latin Djavan 327105 10664698 0.99 877 O Bêbado e a Equilibrista Elis Regina-Minha História MPEG audio file Latin \N 223059 7306143 0.99 878 O Mestre-Sala dos Mares Elis Regina-Minha História MPEG audio file Latin \N 186226 6180414 0.99 879 Atrás da Porta Elis Regina-Minha História MPEG audio file Latin \N 166608 5432518 0.99 880 Dois Pra Lá, Dois Pra Cá Elis Regina-Minha História MPEG audio file Latin \N 263026 8684639 0.99 881 Casa no Campo Elis Regina-Minha História MPEG audio file Latin \N 170788 5531841 0.99 882 Romaria Elis Regina-Minha História MPEG audio file Latin \N 242834 7968525 0.99 883 Alô, Alô, Marciano Elis Regina-Minha História MPEG audio file Latin \N 241397 8137254 0.99 884 Me Deixas Louca Elis Regina-Minha História MPEG audio file Latin \N 214831 6888030 0.99 885 Fascinação Elis Regina-Minha História MPEG audio file Latin \N 180793 5793959 0.99 886 Saudosa Maloca Elis Regina-Minha História MPEG audio file Latin \N 278125 9059416 0.99 887 As Aparências Enganam Elis Regina-Minha História MPEG audio file Latin \N 247379 8014346 0.99 888 Madalena Elis Regina-Minha História MPEG audio file Latin \N 157387 5243721 0.99 889 Maria Rosa Elis Regina-Minha História MPEG audio file Latin \N 232803 7592504 0.99 890 Aprendendo A Jogar Elis Regina-Minha História MPEG audio file Latin \N 290664 9391041 0.99 891 Layla The Cream Of Clapton MPEG audio file Blues Clapton/Gordon 430733 14115792 0.99 892 Badge The Cream Of Clapton MPEG audio file Blues Clapton/Harrison 163552 5322942 0.99 893 I Feel Free The Cream Of Clapton MPEG audio file Blues Bruce/Clapton 174576 5725684 0.99 894 Sunshine Of Your Love The Cream Of Clapton MPEG audio file Blues Bruce/Clapton 252891 8225889 0.99 895 Crossroads The Cream Of Clapton MPEG audio file Blues Clapton/Robert Johnson Arr: Eric Clapton 253335 8273540 0.99 896 Strange Brew The Cream Of Clapton MPEG audio file Blues Clapton/Collins/Pappalardi 167810 5489787 0.99 897 White Room The Cream Of Clapton MPEG audio file Blues Bruce/Clapton 301583 9872606 0.99 898 Bell Bottom Blues The Cream Of Clapton MPEG audio file Blues Clapton 304744 9946681 0.99 899 Cocaine The Cream Of Clapton MPEG audio file Blues Cale/Clapton 215928 7138399 0.99 900 I Shot The Sheriff The Cream Of Clapton MPEG audio file Blues Marley 263862 8738973 0.99 901 After Midnight The Cream Of Clapton MPEG audio file Blues Clapton/J. J. Cale 191320 6460941 0.99 902 Swing Low Sweet Chariot The Cream Of Clapton MPEG audio file Blues Clapton/Trad. Arr. Clapton 208143 6896288 0.99 903 Lay Down Sally The Cream Of Clapton MPEG audio file Blues Clapton/Levy 231732 7774207 0.99 904 Knockin On Heavens Door The Cream Of Clapton MPEG audio file Blues Clapton/Dylan 264411 8758819 0.99 905 Wonderful Tonight The Cream Of Clapton MPEG audio file Blues Clapton 221387 7326923 0.99 906 Let It Grow The Cream Of Clapton MPEG audio file Blues Clapton 297064 9742568 0.99 907 Promises The Cream Of Clapton MPEG audio file Blues Clapton/F.eldman/Linn 180401 6006154 0.99 908 I Can't Stand It The Cream Of Clapton MPEG audio file Blues Clapton 249730 8271980 0.99 909 Signe Unplugged MPEG audio file Blues Eric Clapton 193515 6475042 0.99 910 Before You Accuse Me Unplugged MPEG audio file Blues Eugene McDaniel 224339 7456807 0.99 911 Hey Hey Unplugged MPEG audio file Blues Big Bill Broonzy 196466 6543487 0.99 912 Tears In Heaven Unplugged MPEG audio file Blues Eric Clapton, Will Jennings 274729 9032835 0.99 913 Lonely Stranger Unplugged MPEG audio file Blues Eric Clapton 328724 10894406 0.99 914 Nobody Knows You When You're Down & Out Unplugged MPEG audio file Blues Jimmy Cox 231836 7669922 0.99 915 Layla Unplugged MPEG audio file Blues Eric Clapton, Jim Gordon 285387 9490542 0.99 916 Running On Faith Unplugged MPEG audio file Blues Jerry Lynn Williams 378984 12536275 0.99 917 Walkin' Blues Unplugged MPEG audio file Blues Robert Johnson 226429 7435192 0.99 918 Alberta Unplugged MPEG audio file Blues Traditional 222406 7412975 0.99 919 San Francisco Bay Blues Unplugged MPEG audio file Blues Jesse Fuller 203363 6724021 0.99 920 Malted Milk Unplugged MPEG audio file Blues Robert Johnson 216528 7096781 0.99 921 Old Love Unplugged MPEG audio file Blues Eric Clapton, Robert Cray 472920 15780747 0.99 922 Rollin' And Tumblin' Unplugged MPEG audio file Blues McKinley Morgenfield (Muddy Waters) 251768 8407355 0.99 923 Collision Album Of The Year MPEG audio file Alternative & Punk Jon Hudson/Mike Patton 204303 6656596 0.99 924 Stripsearch Album Of The Year MPEG audio file Alternative & Punk Jon Hudson/Mike Bordin/Mike Patton 270106 8861119 0.99 925 Last Cup Of Sorrow Album Of The Year MPEG audio file Alternative & Punk Bill Gould/Mike Patton 251663 8221247 0.99 926 Naked In Front Of The Computer Album Of The Year MPEG audio file Alternative & Punk Mike Patton 128757 4225077 0.99 927 Helpless Album Of The Year MPEG audio file Alternative & Punk Bill Gould/Mike Bordin/Mike Patton 326217 10753135 0.99 928 Mouth To Mouth Album Of The Year MPEG audio file Alternative & Punk Bill Gould/Jon Hudson/Mike Bordin/Mike Patton 228493 7505887 0.99 929 Ashes To Ashes Album Of The Year MPEG audio file Alternative & Punk Bill Gould/Jon Hudson/Mike Bordin/Mike Patton/Roddy Bottum 217391 7093746 0.99 930 She Loves Me Not Album Of The Year MPEG audio file Alternative & Punk Bill Gould/Mike Bordin/Mike Patton 209867 6887544 0.99 931 Got That Feeling Album Of The Year MPEG audio file Alternative & Punk Mike Patton 140852 4643227 0.99 932 Paths Of Glory Album Of The Year MPEG audio file Alternative & Punk Bill Gould/Jon Hudson/Mike Bordin/Mike Patton/Roddy Bottum 257253 8436300 0.99 933 Home Sick Home Album Of The Year MPEG audio file Alternative & Punk Mike Patton 119040 3898976 0.99 934 Pristina Album Of The Year MPEG audio file Alternative & Punk Bill Gould/Mike Patton 232698 7497361 0.99 935 Land Of Sunshine Angel Dust MPEG audio file Alternative & Punk \N 223921 7353567 0.99 936 Caffeine Angel Dust MPEG audio file Alternative & Punk \N 267937 8747367 0.99 937 Midlife Crisis Angel Dust MPEG audio file Alternative & Punk \N 263235 8628841 0.99 938 RV Angel Dust MPEG audio file Alternative & Punk \N 223242 7288162 0.99 939 Smaller And Smaller Angel Dust MPEG audio file Alternative & Punk \N 310831 10180103 0.99 940 Everything's Ruined Angel Dust MPEG audio file Alternative & Punk \N 273658 9010917 0.99 941 Malpractice Angel Dust MPEG audio file Alternative & Punk \N 241371 7900683 0.99 942 Kindergarten Angel Dust MPEG audio file Alternative & Punk \N 270680 8853647 0.99 943 Be Aggressive Angel Dust MPEG audio file Alternative & Punk \N 222432 7298027 0.99 944 A Small Victory Angel Dust MPEG audio file Alternative & Punk \N 297168 9733572 0.99 945 Crack Hitler Angel Dust MPEG audio file Alternative & Punk \N 279144 9162435 0.99 946 Jizzlobber Angel Dust MPEG audio file Alternative & Punk \N 398341 12926140 0.99 947 Midnight Cowboy Angel Dust MPEG audio file Alternative & Punk \N 251924 8242626 0.99 948 Easy Angel Dust MPEG audio file Alternative & Punk \N 185835 6073008 0.99 949 Get Out King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton 137482 4524972 0.99 950 Ricochet King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton 269400 8808812 0.99 951 Evidence King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton, Trey Spruance 293590 9626136 0.99 952 The Gentle Art Of Making Enemies King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton 209319 6908609 0.99 953 Star A.D. King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton 203807 6747658 0.99 954 Cuckoo For Caca King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton, Trey Spruance 222902 7388369 0.99 955 Caralho Voador King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton, Trey Spruance 242102 8029054 0.99 956 Ugly In The Morning King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton 186435 6224997 0.99 957 Digging The Grave King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton 185129 6109259 0.99 958 Take This Bottle King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton, Trey Spruance 298997 9779971 0.99 959 King For A Day King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton, Trey Spruance 395859 13163733 0.99 960 What A Day King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton 158275 5203430 0.99 961 The Last To Know King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton 267833 8736776 0.99 962 Just A Man King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton 336666 11031254 0.99 963 Absolute Zero King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton 181995 5929427 0.99 964 From Out Of Nowhere The Real Thing MPEG audio file Alternative & Punk Faith No More 202527 6587802 0.99 965 Epic The Real Thing MPEG audio file Alternative & Punk Faith No More 294008 9631296 0.99 966 Falling To Pieces The Real Thing MPEG audio file Alternative & Punk Faith No More 316055 10333123 0.99 967 Surprise! You're Dead! The Real Thing MPEG audio file Alternative & Punk Faith No More 147226 4823036 0.99 968 Zombie Eaters The Real Thing MPEG audio file Alternative & Punk Faith No More 360881 11835367 0.99 969 The Real Thing The Real Thing MPEG audio file Alternative & Punk Faith No More 493635 16233080 0.99 970 Underwater Love The Real Thing MPEG audio file Alternative & Punk Faith No More 231993 7634387 0.99 971 The Morning After The Real Thing MPEG audio file Alternative & Punk Faith No More 223764 7355898 0.99 972 Woodpecker From Mars The Real Thing MPEG audio file Alternative & Punk Faith No More 340532 11174250 0.99 973 War Pigs The Real Thing MPEG audio file Alternative & Punk Tony Iommi, Bill Ward, Geezer Butler, Ozzy Osbourne 464770 15267802 0.99 974 Edge Of The World The Real Thing MPEG audio file Alternative & Punk Faith No More 250357 8235607 0.99 975 Deixa Entrar Deixa Entrar MPEG audio file Latin \N 33619 1095012 0.99 976 Falamansa Song Deixa Entrar MPEG audio file Latin \N 237165 7921313 0.99 977 Xote Dos Milagres Deixa Entrar MPEG audio file Latin \N 269557 8897778 0.99 978 Rindo À Toa Deixa Entrar MPEG audio file Latin \N 222066 7365321 0.99 979 Confidência Deixa Entrar MPEG audio file Latin \N 222197 7460829 0.99 980 Forró De Tóquio Deixa Entrar MPEG audio file Latin \N 169273 5588756 0.99 981 Zeca Violeiro Deixa Entrar MPEG audio file Latin \N 143673 4781949 0.99 982 Avisa Deixa Entrar MPEG audio file Latin \N 355030 11844320 0.99 983 Principiando/Decolagem Deixa Entrar MPEG audio file Latin \N 116767 3923789 0.99 984 Asas Deixa Entrar MPEG audio file Latin \N 231915 7711669 0.99 985 Medo De Escuro Deixa Entrar MPEG audio file Latin \N 213760 7056323 0.99 986 Oração Deixa Entrar MPEG audio file Latin \N 271072 9003882 0.99 987 Minha Gata Deixa Entrar MPEG audio file Latin \N 181838 6039502 0.99 988 Desaforo Deixa Entrar MPEG audio file Latin \N 174524 5853561 0.99 989 In Your Honor In Your Honor [Disc 1] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett 230191 7468463 0.99 990 No Way Back In Your Honor [Disc 1] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett 196675 6421400 0.99 991 Best Of You In Your Honor [Disc 1] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett 255712 8363467 0.99 992 DOA In Your Honor [Disc 1] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett 252186 8232342 0.99 993 Hell In Your Honor [Disc 1] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett 117080 3819255 0.99 994 The Last Song In Your Honor [Disc 1] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett 199523 6496742 0.99 995 Free Me In Your Honor [Disc 1] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett 278700 9109340 0.99 996 Resolve In Your Honor [Disc 1] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett 288731 9416186 0.99 997 The Deepest Blues Are Black In Your Honor [Disc 1] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett 238419 7735473 0.99 998 End Over End In Your Honor [Disc 1] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett 352078 11395296 0.99 999 Still In Your Honor [Disc 2] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett/FOO FIGHTERS 313182 10323157 0.99 1000 What If I Do? In Your Honor [Disc 2] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett/FOO FIGHTERS 302994 9929799 0.99 1001 Miracle In Your Honor [Disc 2] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett/FOO FIGHTERS 209684 6877994 0.99 1002 Another Round In Your Honor [Disc 2] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett/FOO FIGHTERS 265848 8752670 0.99 1003 Friend Of A Friend In Your Honor [Disc 2] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett/FOO FIGHTERS 193280 6355088 0.99 1004 Over And Out In Your Honor [Disc 2] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett/FOO FIGHTERS 316264 10428382 0.99 1005 On The Mend In Your Honor [Disc 2] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett/FOO FIGHTERS 271908 9071997 0.99 1006 Virginia Moon In Your Honor [Disc 2] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett/FOO FIGHTERS 229198 7494639 0.99 1007 Cold Day In The Sun In Your Honor [Disc 2] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett/FOO FIGHTERS 200724 6596617 0.99 1008 Razor In Your Honor [Disc 2] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett/FOO FIGHTERS 293276 9721373 0.99 1009 All My Life One By One MPEG audio file Alternative & Punk Foo Fighters 263653 8665545 0.99 1010 Low One By One MPEG audio file Alternative & Punk Foo Fighters 268120 8847196 0.99 1011 Have It All One By One MPEG audio file Alternative & Punk Foo Fighters 298057 9729292 0.99 1012 Times Like These One By One MPEG audio file Alternative & Punk Foo Fighters 266370 8624691 0.99 1013 Disenchanted Lullaby One By One MPEG audio file Alternative & Punk Foo Fighters 273528 8919111 0.99 1014 Tired Of You One By One MPEG audio file Alternative & Punk Foo Fighters 311353 10094743 0.99 1015 Halo One By One MPEG audio file Alternative & Punk Foo Fighters 306442 10026371 0.99 1016 Lonely As You One By One MPEG audio file Alternative & Punk Foo Fighters 277185 9022628 0.99 1017 Overdrive One By One MPEG audio file Alternative & Punk Foo Fighters 270550 8793187 0.99 1018 Burn Away One By One MPEG audio file Alternative & Punk Foo Fighters 298396 9678073 0.99 1019 Come Back One By One MPEG audio file Alternative & Punk Foo Fighters 469968 15371980 0.99 1020 Doll The Colour And The Shape MPEG audio file Rock Dave, Taylor, Nate, Chris 83487 2702572 0.99 1021 Monkey Wrench The Colour And The Shape MPEG audio file Rock Dave, Taylor, Nate, Chris 231523 7527531 0.99 1022 Hey, Johnny Park! The Colour And The Shape MPEG audio file Rock Dave, Taylor, Nate, Chris 248528 8079480 0.99 1023 My Poor Brain The Colour And The Shape MPEG audio file Rock Dave, Taylor, Nate, Chris 213446 6973746 0.99 1024 Wind Up The Colour And The Shape MPEG audio file Rock Dave, Taylor, Nate, Chris 152163 4950667 0.99 1025 Up In Arms The Colour And The Shape MPEG audio file Rock Dave, Taylor, Nate, Chris 135732 4406227 0.99 1026 My Hero The Colour And The Shape MPEG audio file Rock Dave, Taylor, Nate, Chris 260101 8472365 0.99 1027 See You The Colour And The Shape MPEG audio file Rock Dave, Taylor, Nate, Chris 146782 4888173 0.99 1028 Enough Space The Colour And The Shape MPEG audio file Rock Dave Grohl 157387 5169280 0.99 1029 February Stars The Colour And The Shape MPEG audio file Rock Dave, Taylor, Nate, Chris 289306 9344875 0.99 1030 Everlong The Colour And The Shape MPEG audio file Rock Dave Grohl 250749 8270816 0.99 1031 Walking After You The Colour And The Shape MPEG audio file Rock Dave Grohl 303856 9898992 0.99 1032 New Way Home The Colour And The Shape MPEG audio file Rock Dave, Taylor, Nate, Chris 342230 11205664 0.99 1033 My Way My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening claude françois/gilles thibault/jacques revaux/paul anka 275879 8928684 0.99 1034 Strangers In The Night My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening berthold kaempfert/charles singleton/eddie snyder 155794 5055295 0.99 1035 New York, New York My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening fred ebb/john kander 206001 6707993 0.99 1036 I Get A Kick Out Of You My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening cole porter 194429 6332441 0.99 1037 Something Stupid My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening carson c. parks 158615 5210643 0.99 1038 Moon River My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening henry mancini/johnny mercer 198922 6395808 0.99 1039 What Now My Love My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening carl sigman/gilbert becaud/pierre leroyer 149995 4913383 0.99 1040 Summer Love My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening hans bradtke/heinz meier/johnny mercer 174994 5693242 0.99 1041 For Once In My Life My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening orlando murden/ronald miller 171154 5557537 0.99 1042 Love And Marriage My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening jimmy van heusen/sammy cahn 89730 2930596 0.99 1043 They Can't Take That Away From Me My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening george gershwin/ira gershwin 161227 5240043 0.99 1044 My Kind Of Town My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening jimmy van heusen/sammy cahn 188499 6119915 0.99 1045 Fly Me To The Moon My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening bart howard 149263 4856954 0.99 1046 I've Got You Under My Skin My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening cole porter 210808 6883787 0.99 1047 The Best Is Yet To Come My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening carolyn leigh/cy coleman 173583 5633730 0.99 1048 It Was A Very Good Year My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening ervin drake 266605 8554066 0.99 1049 Come Fly With Me My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening jimmy van heusen/sammy cahn 190458 6231029 0.99 1050 That's Life My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening dean kay thompson/kelly gordon 187010 6095727 0.99 1051 The Girl From Ipanema My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening antonio carlos jobim/norman gimbel/vinicius de moraes 193750 6410674 0.99 1052 The Lady Is A Tramp My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening lorenz hart/richard rodgers 184111 5987372 0.99 1053 Bad, Bad Leroy Brown My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening jim croce 169900 5548581 0.99 1054 Mack The Knife My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening bert brecht/kurt weill/marc blitzstein 292075 9541052 0.99 1055 Loves Been Good To Me My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening rod mckuen 203964 6645365 0.99 1056 L.A. Is My Lady My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening alan bergman/marilyn bergman/peggy lipton jones/quincy jones 193175 6378511 0.99 1057 Entrando Na Sua (Intro) Roda De Funk MPEG audio file Latin \N 179252 5840027 0.99 1058 Nervosa Roda De Funk MPEG audio file Latin \N 229537 7680421 0.99 1059 Funk De Bamba (Com Fernanda Abreu) Roda De Funk MPEG audio file Latin \N 237191 7866165 0.99 1060 Call Me At Cleo´s Roda De Funk MPEG audio file Latin \N 236617 7920510 0.99 1061 Olhos Coloridos (Com Sandra De Sá) Roda De Funk MPEG audio file Latin \N 321332 10567404 0.99 1062 Zambação Roda De Funk MPEG audio file Latin \N 301113 10030604 0.99 1063 Funk Hum Roda De Funk MPEG audio file Latin \N 244453 8084475 0.99 1064 Forty Days (Com DJ Hum) Roda De Funk MPEG audio file Latin \N 221727 7347172 0.99 1065 Balada Da Paula Roda De Funk MPEG audio file Latin Emerson Villani 322821 10603717 0.99 1066 Dujji Roda De Funk MPEG audio file Latin \N 324597 10833935 0.99 1067 Meu Guarda-Chuva Roda De Funk MPEG audio file Latin \N 248528 8216625 0.99 1068 Motéis Roda De Funk MPEG audio file Latin \N 213498 7041077 0.99 1069 Whistle Stop Roda De Funk MPEG audio file Latin \N 526132 17533664 0.99 1070 16 Toneladas Roda De Funk MPEG audio file Latin \N 191634 6390885 0.99 1071 Divirta-Se (Saindo Da Sua) Roda De Funk MPEG audio file Latin \N 74919 2439206 0.99 1072 Forty Days Instrumental Roda De Funk MPEG audio file Latin \N 292493 9584317 0.99 1073 Óia Eu Aqui De Novo As Canções de Eu Tu Eles MPEG audio file Soundtrack \N 219454 7469735 0.99 1074 Baião Da Penha As Canções de Eu Tu Eles MPEG audio file Soundtrack \N 247928 8393047 0.99 1075 Esperando Na Janela As Canções de Eu Tu Eles MPEG audio file Soundtrack Manuca/Raimundinho DoAcordion/Targino Godim 261041 8660617 0.99 1076 Juazeiro As Canções de Eu Tu Eles MPEG audio file Soundtrack Humberto Teixeira/Luiz Gonzaga 222275 7349779 0.99 1077 Último Pau-De-Arara As Canções de Eu Tu Eles MPEG audio file Soundtrack Corumbá/José Gumarães/Venancio 200437 6638563 0.99 1078 Asa Branca As Canções de Eu Tu Eles MPEG audio file Soundtrack Humberto Teixeira/Luiz Gonzaga 217051 7387183 0.99 1079 Qui Nem Jiló As Canções de Eu Tu Eles MPEG audio file Soundtrack Humberto Teixeira/Luiz Gonzaga 204695 6937472 0.99 1080 Assum Preto As Canções de Eu Tu Eles MPEG audio file Soundtrack Humberto Teixeira/Luiz Gonzaga 199653 6625000 0.99 1081 Pau-De-Arara As Canções de Eu Tu Eles MPEG audio file Soundtrack Guio De Morais E Seus "Parentes"/Luiz Gonzaga 191660 6340649 0.99 1082 A Volta Da Asa Branca As Canções de Eu Tu Eles MPEG audio file Soundtrack Luiz Gonzaga/Zé Dantas 271020 9098093 0.99 1083 O Amor Daqui De Casa As Canções de Eu Tu Eles MPEG audio file Soundtrack Gilberto Gil 148636 4888292 0.99 1084 As Pegadas Do Amor As Canções de Eu Tu Eles MPEG audio file Soundtrack Gilberto Gil 209136 6899062 0.99 1085 Lamento Sertanejo As Canções de Eu Tu Eles MPEG audio file Soundtrack Dominguinhos/Gilberto Gil 260963 8518290 0.99 1086 Casinha Feliz As Canções de Eu Tu Eles MPEG audio file Soundtrack Gilberto Gil 32287 1039615 0.99 1087 Introdução (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 154096 5227579 0.99 1088 Palco (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 238315 8026622 0.99 1089 Is This Love (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 295262 9819759 0.99 1090 Stir It Up (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 282409 9594738 0.99 1091 Refavela (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 236695 7985305 0.99 1092 Vendedor De Caranguejo (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 248842 8358128 0.99 1093 Quanta (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 357485 11774865 0.99 1094 Estrela (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 285309 9436411 0.99 1095 Pela Internet (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 263471 8804401 0.99 1096 Cérebro Eletrônico (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 231627 7805352 0.99 1097 Opachorô (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 259526 8596384 0.99 1098 Copacabana (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 289671 9673672 0.99 1099 A Novidade (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 316969 10508000 0.99 1100 Ghandi (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 222458 7481950 0.99 1101 De Ouro E Marfim (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 234971 7838453 0.99 1102 Doce De Carnaval (Candy All) Quanta Gente Veio ver--Bônus De Carnaval MPEG audio file Jazz \N 356101 11998470 0.99 1103 Lamento De Carnaval Quanta Gente Veio ver--Bônus De Carnaval MPEG audio file Jazz \N 294530 9819276 0.99 1104 Pretinha Quanta Gente Veio ver--Bônus De Carnaval MPEG audio file Jazz \N 265273 8914579 0.99 1105 A Novidade Unplugged MPEG audio file Latin Gilberto Gil 324780 10765600 0.99 1106 Tenho Sede Unplugged MPEG audio file Latin Gilberto Gil 261616 8708114 0.99 1107 Refazenda Unplugged MPEG audio file Latin Gilberto Gil 218305 7237784 0.99 1108 Realce Unplugged MPEG audio file Latin Gilberto Gil 264489 8847612 0.99 1109 Esotérico Unplugged MPEG audio file Latin Gilberto Gil 317779 10530533 0.99 1110 Drão Unplugged MPEG audio file Latin Gilberto Gil 301453 9931950 0.99 1111 A Paz Unplugged MPEG audio file Latin Gilberto Gil 293093 9593064 0.99 1112 Beira Mar Unplugged MPEG audio file Latin Gilberto Gil 295444 9597994 0.99 1113 Sampa Unplugged MPEG audio file Latin Gilberto Gil 225697 7469905 0.99 1114 Parabolicamará Unplugged MPEG audio file Latin Gilberto Gil 284943 9543435 0.99 1115 Tempo Rei Unplugged MPEG audio file Latin Gilberto Gil 302733 10019269 0.99 1116 Expresso 2222 Unplugged MPEG audio file Latin Gilberto Gil 284760 9690577 0.99 1117 Aquele Abraço Unplugged MPEG audio file Latin Gilberto Gil 263993 8805003 0.99 1118 Palco Unplugged MPEG audio file Latin Gilberto Gil 270550 9049901 0.99 1119 Toda Menina Baiana Unplugged MPEG audio file Latin Gilberto Gil 278177 9351000 0.99 1120 Sítio Do Pica-Pau Amarelo Unplugged MPEG audio file Latin Gilberto Gil 218070 7217955 0.99 1121 Straight Out Of Line Faceless MPEG audio file Metal Sully Erna 259213 8511877 0.99 1122 Faceless Faceless MPEG audio file Metal Sully Erna 216006 6992417 0.99 1123 Changes Faceless MPEG audio file Metal Sully Erna; Tony Rombola 260022 8455835 0.99 1124 Make Me Believe Faceless MPEG audio file Metal Sully Erna 248607 8075050 0.99 1125 I Stand Alone Faceless MPEG audio file Metal Sully Erna 246125 8017041 0.99 1126 Re-Align Faceless MPEG audio file Metal Sully Erna 260884 8513891 0.99 1127 I Fucking Hate You Faceless MPEG audio file Metal Sully Erna 247170 8059642 0.99 1128 Releasing The Demons Faceless MPEG audio file Metal Sully Erna 252760 8276372 0.99 1129 Dead And Broken Faceless MPEG audio file Metal Sully Erna 251454 8206611 0.99 1130 I Am Faceless MPEG audio file Metal Sully Erna 239516 7803270 0.99 1131 The Awakening Faceless MPEG audio file Metal Sully Erna 89547 3035251 0.99 1132 Serenity Faceless MPEG audio file Metal Sully Erna; Tony Rombola 274834 9172976 0.99 1133 American Idiot American Idiot MPEG audio file Alternative & Punk Billie Joe Armstrong, Mike Dirnt, Tré Cool 174419 5705793 0.99 1134 Jesus Of Suburbia / City Of The Damned / I Don't Care / Dearly Beloved / Tales Of Another Broken Home American Idiot MPEG audio file Alternative & Punk Billie Joe Armstrong/Green Day 548336 17875209 0.99 1135 Holiday American Idiot MPEG audio file Alternative & Punk Billie Joe Armstrong, Mike Dirnt, Tré Cool 232724 7599602 0.99 1136 Boulevard Of Broken Dreams American Idiot MPEG audio file Alternative & Punk Mike Dint, Billie Joe, Tré Cool 260858 8485122 0.99 1137 Are We The Waiting American Idiot MPEG audio file Alternative & Punk Green Day 163004 5328329 0.99 1138 St. Jimmy American Idiot MPEG audio file Alternative & Punk Green Day 175307 5716589 0.99 1139 Give Me Novacaine American Idiot MPEG audio file Alternative & Punk Green Day 205871 6752485 0.99 1140 She's A Rebel American Idiot MPEG audio file Alternative & Punk Green Day 120528 3901226 0.99 1141 Extraordinary Girl American Idiot MPEG audio file Alternative & Punk Green Day 214021 6975177 0.99 1142 Letterbomb American Idiot MPEG audio file Alternative & Punk Green Day 246151 7980902 0.99 1143 Wake Me Up When September Ends American Idiot MPEG audio file Alternative & Punk Mike Dint, Billie Joe, Tré Cool 285753 9325597 0.99 1144 Homecoming / The Death Of St. Jimmy / East 12th St. / Nobody Likes You / Rock And Roll Girlfriend / We're Coming Home Again American Idiot MPEG audio file Alternative & Punk Mike Dirnt/Tré Cool 558602 18139840 0.99 1145 Whatsername American Idiot MPEG audio file Alternative & Punk Green Day 252316 8244843 0.99 1146 Welcome to the Jungle Appetite for Destruction Protected AAC audio file Rock \N 273552 4538451 0.99 1147 It's So Easy Appetite for Destruction Protected AAC audio file Rock \N 202824 3394019 0.99 1148 Nightrain Appetite for Destruction Protected AAC audio file Rock \N 268537 4457283 0.99 1149 Out Ta Get Me Appetite for Destruction Protected AAC audio file Rock \N 263893 4382147 0.99 1150 Mr. Brownstone Appetite for Destruction Protected AAC audio file Rock \N 228924 3816323 0.99 1151 Paradise City Appetite for Destruction Protected AAC audio file Rock \N 406347 6687123 0.99 1152 My Michelle Appetite for Destruction Protected AAC audio file Rock \N 219961 3671299 0.99 1153 Think About You Appetite for Destruction Protected AAC audio file Rock \N 231640 3860275 0.99 1154 Sweet Child O' Mine Appetite for Destruction Protected AAC audio file Rock \N 356424 5879347 0.99 1155 You're Crazy Appetite for Destruction Protected AAC audio file Rock \N 197135 3301971 0.99 1156 Anything Goes Appetite for Destruction Protected AAC audio file Rock \N 206400 3451891 0.99 1157 Rocket Queen Appetite for Destruction Protected AAC audio file Rock \N 375349 6185539 0.99 1158 Right Next Door to Hell Use Your Illusion I Protected AAC audio file Rock \N 182321 3175950 0.99 1159 Dust N' Bones Use Your Illusion I Protected AAC audio file Rock \N 298374 5053742 0.99 1160 Live and Let Die Use Your Illusion I Protected AAC audio file Rock \N 184016 3203390 0.99 1161 Don't Cry (Original) Use Your Illusion I Protected AAC audio file Rock \N 284744 4833259 0.99 1162 Perfect Crime Use Your Illusion I Protected AAC audio file Rock \N 143637 2550030 0.99 1163 You Ain't the First Use Your Illusion I Protected AAC audio file Rock \N 156268 2754414 0.99 1164 Bad Obsession Use Your Illusion I Protected AAC audio file Rock \N 328282 5537678 0.99 1165 Back off Bitch Use Your Illusion I Protected AAC audio file Rock \N 303436 5135662 0.99 1166 Double Talkin' Jive Use Your Illusion I Protected AAC audio file Rock \N 203637 3520862 0.99 1167 November Rain Use Your Illusion I Protected AAC audio file Rock \N 537540 8923566 0.99 1168 The Garden Use Your Illusion I Protected AAC audio file Rock \N 322175 5438862 0.99 1169 Garden of Eden Use Your Illusion I Protected AAC audio file Rock \N 161539 2839694 0.99 1170 Don't Damn Me Use Your Illusion I Protected AAC audio file Rock \N 318901 5385886 0.99 1171 Bad Apples Use Your Illusion I Protected AAC audio file Rock \N 268351 4567966 0.99 1172 Dead Horse Use Your Illusion I Protected AAC audio file Rock \N 257600 4394014 0.99 1173 Coma Use Your Illusion I Protected AAC audio file Rock \N 616511 10201342 0.99 1174 Civil War Use Your Illusion II MPEG audio file Metal Duff McKagan/Slash/W. Axl Rose 461165 15046579 0.99 1175 14 Years Use Your Illusion II MPEG audio file Metal Izzy Stradlin'/W. Axl Rose 261355 8543664 0.99 1176 Yesterdays Use Your Illusion II MPEG audio file Metal Billy/Del James/W. Axl Rose/West Arkeen 196205 6398489 0.99 1177 Knockin' On Heaven's Door Use Your Illusion II MPEG audio file Metal Bob Dylan 336457 10986716 0.99 1178 Get In The Ring Use Your Illusion II MPEG audio file Metal Duff McKagan/Slash/W. Axl Rose 341054 11134105 0.99 1179 Shotgun Blues Use Your Illusion II MPEG audio file Metal W. Axl Rose 203206 6623916 0.99 1180 Breakdown Use Your Illusion II MPEG audio file Metal W. Axl Rose 424960 13978284 0.99 1181 Pretty Tied Up Use Your Illusion II MPEG audio file Metal Izzy Stradlin' 287477 9408754 0.99 1182 Locomotive Use Your Illusion II MPEG audio file Metal Slash/W. Axl Rose 522396 17236842 0.99 1183 So Fine Use Your Illusion II MPEG audio file Metal Duff McKagan 246491 8039484 0.99 1184 Estranged Use Your Illusion II MPEG audio file Metal W. Axl Rose 563800 18343787 0.99 1185 You Could Be Mine Use Your Illusion II MPEG audio file Metal Izzy Stradlin'/W. Axl Rose 343875 11207355 0.99 1186 Don't Cry Use Your Illusion II MPEG audio file Metal Izzy Stradlin'/W. Axl Rose 284238 9222458 0.99 1187 My World Use Your Illusion II MPEG audio file Metal W. Axl Rose 84532 2764045 0.99 1188 Colibri Blue Moods MPEG audio file Jazz Richard Bull 361012 12055329 0.99 1189 Love Is The Colour Blue Moods MPEG audio file Jazz R. Carless 251585 8419165 0.99 1190 Magnetic Ocean Blue Moods MPEG audio file Jazz Patrick Claher/Richard Bull 321123 10720741 0.99 1191 Deep Waters Blue Moods MPEG audio file Jazz Richard Bull 396460 13075359 0.99 1192 L'Arc En Ciel De Miles Blue Moods MPEG audio file Jazz Kevin Robinson/Richard Bull 242390 8053997 0.99 1193 Gypsy Blue Moods MPEG audio file Jazz Kevin Robinson 330997 11083374 0.99 1194 Journey Into Sunlight Blue Moods MPEG audio file Jazz Jean Paul Maunick 249756 8241177 0.99 1195 Sunchild Blue Moods MPEG audio file Jazz Graham Harvey 259970 8593143 0.99 1196 Millenium Blue Moods MPEG audio file Jazz Maxton Gig Beesley Jnr. 379167 12511939 0.99 1197 Thinking 'Bout Tomorrow Blue Moods MPEG audio file Jazz Fayyaz Virgi/Richard Bull 355395 11865384 0.99 1198 Jacob's Ladder Blue Moods MPEG audio file Jazz Julian Crampton 367647 12201595 0.99 1199 She Wears Black Blue Moods MPEG audio file Jazz G Harvey/R Hope-Taylor 528666 17617944 0.99 1200 Dark Side Of The Cog Blue Moods MPEG audio file Jazz Jean Paul Maunick 377155 12491122 0.99 1201 Different World A Matter of Life and Death Protected AAC audio file Rock \N 258692 4383764 0.99 1202 These Colours Don't Run A Matter of Life and Death Protected AAC audio file Rock \N 412152 6883500 0.99 1203 Brighter Than a Thousand Suns A Matter of Life and Death Protected AAC audio file Rock \N 526255 8721490 0.99 1204 The Pilgrim A Matter of Life and Death Protected AAC audio file Rock \N 307593 5172144 0.99 1205 The Longest Day A Matter of Life and Death Protected AAC audio file Rock \N 467810 7785748 0.99 1206 Out of the Shadows A Matter of Life and Death Protected AAC audio file Rock \N 336896 5647303 0.99 1207 The Reincarnation of Benjamin Breeg A Matter of Life and Death Protected AAC audio file Rock \N 442106 7367736 0.99 1208 For the Greater Good of God A Matter of Life and Death Protected AAC audio file Rock \N 564893 9367328 0.99 1209 Lord of Light A Matter of Life and Death Protected AAC audio file Rock \N 444614 7393698 0.99 1210 The Legacy A Matter of Life and Death Protected AAC audio file Rock \N 562966 9314287 0.99 1211 Hallowed Be Thy Name (Live) [Non Album Bonus Track] A Matter of Life and Death Protected AAC audio file Rock \N 431262 7205816 0.99 1212 The Number Of The Beast A Real Dead One MPEG audio file Metal Steve Harris 294635 4718897 0.99 1213 The Trooper A Real Dead One MPEG audio file Metal Steve Harris 235311 3766272 0.99 1214 Prowler A Real Dead One MPEG audio file Metal Steve Harris 255634 4091904 0.99 1215 Transylvania A Real Dead One MPEG audio file Metal Steve Harris 265874 4255744 0.99 1216 Remember Tomorrow A Real Dead One MPEG audio file Metal Paul Di'Anno/Steve Harris 352731 5648438 0.99 1217 Where Eagles Dare A Real Dead One MPEG audio file Metal Steve Harris 289358 4630528 0.99 1218 Sanctuary A Real Dead One MPEG audio file Metal David Murray/Paul Di'Anno/Steve Harris 293250 4694016 0.99 1219 Running Free A Real Dead One MPEG audio file Metal Paul Di'Anno/Steve Harris 228937 3663872 0.99 1220 Run To The Hilss A Real Dead One MPEG audio file Metal Steve Harris 237557 3803136 0.99 1221 2 Minutes To Midnight A Real Dead One MPEG audio file Metal Adrian Smith/Bruce Dickinson 337423 5400576 0.99 1222 Iron Maiden A Real Dead One MPEG audio file Metal Steve Harris 324623 5195776 0.99 1223 Hallowed Be Thy Name A Real Dead One MPEG audio file Metal Steve Harris 471849 7550976 0.99 1224 Be Quick Or Be Dead A Real Live One MPEG audio file Metal Bruce Dickinson/Janick Gers 196911 3151872 0.99 1225 From Here To Eternity A Real Live One MPEG audio file Metal Steve Harris 259866 4159488 0.99 1226 Can I Play With Madness A Real Live One MPEG audio file Metal Adrian Smith/Bruce Dickinson/Steve Harris 282488 4521984 0.99 1227 Wasting Love A Real Live One MPEG audio file Metal Bruce Dickinson/Janick Gers 347846 5566464 0.99 1228 Tailgunner A Real Live One MPEG audio file Metal Bruce Dickinson/Steve Harris 249469 3993600 0.99 1229 The Evil That Men Do A Real Live One MPEG audio file Metal Adrian Smith/Bruce Dickinson/Steve Harris 325929 5216256 0.99 1230 Afraid To Shoot Strangers A Real Live One MPEG audio file Metal Steve Harris 407980 6529024 0.99 1231 Bring Your Daughter... To The Slaughter A Real Live One MPEG audio file Metal Bruce Dickinson 317727 5085184 0.99 1232 Heaven Can Wait A Real Live One MPEG audio file Metal Steve Harris 448574 7178240 0.99 1233 The Clairvoyant A Real Live One MPEG audio file Metal Steve Harris 269871 4319232 0.99 1234 Fear Of The Dark A Real Live One MPEG audio file Metal Steve Harris 431333 6906078 0.99 1235 The Wicker Man Brave New World MPEG audio file Rock Adrian Smith/Bruce Dickinson/Steve Harris 275539 11022464 0.99 1236 Ghost Of The Navigator Brave New World MPEG audio file Rock Bruce Dickinson/Janick Gers/Steve Harris 410070 16404608 0.99 1237 Brave New World Brave New World MPEG audio file Rock Bruce Dickinson/David Murray/Steve Harris 378984 15161472 0.99 1238 Blood Brothers Brave New World MPEG audio file Rock Steve Harris 434442 17379456 0.99 1239 The Mercenary Brave New World MPEG audio file Rock Janick Gers/Steve Harris 282488 11300992 0.99 1240 Dream Of Mirrors Brave New World MPEG audio file Rock Janick Gers/Steve Harris 561162 22448256 0.99 1241 The Fallen Angel Brave New World MPEG audio file Rock Adrian Smith/Steve Harris 240718 9629824 0.99 1242 The Nomad Brave New World MPEG audio file Rock David Murray/Steve Harris 546115 21846144 0.99 1243 Out Of The Silent Planet Brave New World MPEG audio file Rock Bruce Dickinson/Janick Gers/Steve Harris 385541 15423616 0.99 1244 The Thin Line Between Love & Hate Brave New World MPEG audio file Rock David Murray/Steve Harris 506801 20273280 0.99 1245 Wildest Dreams Dance Of Death MPEG audio file Heavy Metal Adrian Smith/Steve Harris 232777 9312384 0.99 1246 Rainmaker Dance Of Death MPEG audio file Heavy Metal Bruce Dickinson/David Murray/Steve Harris 228623 9146496 0.99 1247 No More Lies Dance Of Death MPEG audio file Heavy Metal Steve Harris 441782 17672320 0.99 1248 Montsegur Dance Of Death MPEG audio file Heavy Metal Bruce Dickinson/Janick Gers/Steve Harris 350484 14020736 0.99 1249 Dance Of Death Dance Of Death MPEG audio file Heavy Metal Janick Gers/Steve Harris 516649 20670727 0.99 1250 Gates Of Tomorrow Dance Of Death MPEG audio file Heavy Metal Bruce Dickinson/Janick Gers/Steve Harris 312032 12482688 0.99 1251 New Frontier Dance Of Death MPEG audio file Heavy Metal Adrian Smith/Bruce Dickinson/Nicko McBrain 304509 12181632 0.99 1252 Paschendale Dance Of Death MPEG audio file Heavy Metal Adrian Smith/Steve Harris 508107 20326528 0.99 1253 Face In The Sand Dance Of Death MPEG audio file Heavy Metal Adrian Smith/Bruce Dickinson/Steve Harris 391105 15648948 0.99 1254 Age Of Innocence Dance Of Death MPEG audio file Heavy Metal David Murray/Steve Harris 370468 14823478 0.99 1255 Journeyman Dance Of Death MPEG audio file Heavy Metal Bruce Dickinson/David Murray/Steve Harris 427023 17082496 0.99 1256 Be Quick Or Be Dead Fear Of The Dark MPEG audio file Rock Bruce Dickinson/Janick Gers 204512 8181888 0.99 1257 From Here To Eternity Fear Of The Dark MPEG audio file Rock Steve Harris 218357 8739038 0.99 1258 Afraid To Shoot Strangers Fear Of The Dark MPEG audio file Rock Steve Harris 416496 16664589 0.99 1259 Fear Is The Key Fear Of The Dark MPEG audio file Rock Bruce Dickinson/Janick Gers 335307 13414528 0.99 1260 Childhood's End Fear Of The Dark MPEG audio file Rock Steve Harris 280607 11225216 0.99 1261 Wasting Love Fear Of The Dark MPEG audio file Rock Bruce Dickinson/Janick Gers 350981 14041216 0.99 1262 The Fugitive Fear Of The Dark MPEG audio file Rock Steve Harris 294112 11765888 0.99 1263 Chains Of Misery Fear Of The Dark MPEG audio file Rock Bruce Dickinson/David Murray 217443 8700032 0.99 1264 The Apparition Fear Of The Dark MPEG audio file Rock Janick Gers/Steve Harris 234605 9386112 0.99 1265 Judas Be My Guide Fear Of The Dark MPEG audio file Rock Bruce Dickinson/David Murray 188786 7553152 0.99 1266 Weekend Warrior Fear Of The Dark MPEG audio file Rock Janick Gers/Steve Harris 339748 13594678 0.99 1267 Fear Of The Dark Fear Of The Dark MPEG audio file Rock Steve Harris 436976 17483789 0.99 1268 01 - Prowler Iron Maiden MPEG audio file Blues Steve Harris 236173 5668992 0.99 1269 02 - Sanctuary Iron Maiden MPEG audio file Blues David Murray/Paul Di'Anno/Steve Harris 196284 4712576 0.99 1270 03 - Remember Tomorrow Iron Maiden MPEG audio file Blues Harris/Paul Di´Anno 328620 7889024 0.99 1271 04 - Running Free Iron Maiden MPEG audio file Blues Harris/Paul Di´Anno 197276 4739122 0.99 1272 05 - Phantom of the Opera Iron Maiden MPEG audio file Blues Steve Harris 428016 10276872 0.99 1273 06 - Transylvania Iron Maiden MPEG audio file Blues Steve Harris 259343 6226048 0.99 1274 07 - Strange World Iron Maiden MPEG audio file Blues Steve Harris 332460 7981184 0.99 1275 08 - Charlotte the Harlot Iron Maiden MPEG audio file Blues Murray Dave 252708 6066304 0.99 1276 09 - Iron Maiden Iron Maiden MPEG audio file Blues Steve Harris 216058 5189891 0.99 1277 The Ides Of March Killers MPEG audio file Heavy Metal Steve Harris 105926 2543744 0.99 1278 Wrathchild Killers MPEG audio file Heavy Metal Steve Harris 174471 4188288 0.99 1279 Murders In The Rue Morgue Killers MPEG audio file Heavy Metal Steve Harris 258377 6205786 0.99 1280 Another Life Killers MPEG audio file Heavy Metal Steve Harris 203049 4874368 0.99 1281 Genghis Khan Killers MPEG audio file Heavy Metal Steve Harris 187141 4493440 0.99 1282 Innocent Exile Killers MPEG audio file Heavy Metal Di´Anno/Harris 232515 5584861 0.99 1283 Killers Killers MPEG audio file Heavy Metal Steve Harris 300956 7227440 0.99 1284 Prodigal Son Killers MPEG audio file Heavy Metal Steve Harris 372349 8937600 0.99 1285 Purgatory Killers MPEG audio file Heavy Metal Steve Harris 200150 4804736 0.99 1286 Drifter Killers MPEG audio file Heavy Metal Steve Harris 288757 6934660 0.99 1287 Intro- Churchill S Speech Live After Death MPEG audio file Heavy Metal \N 48013 1154488 0.99 1288 Aces High Live After Death MPEG audio file Heavy Metal \N 276375 6635187 0.99 1289 2 Minutes To Midnight Live After Death MPEG audio file Metal Smith/Dickinson 366550 8799380 0.99 1290 The Trooper Live After Death MPEG audio file Metal Harris 268878 6455255 0.99 1291 Revelations Live After Death MPEG audio file Metal Dickinson 371826 8926021 0.99 1292 Flight Of Icarus Live After Death MPEG audio file Metal Smith/Dickinson 229982 5521744 0.99 1293 Rime Of The Ancient Mariner Live After Death MPEG audio file Metal \N 789472 18949518 0.99 1294 Powerslave Live After Death MPEG audio file Metal \N 454974 10921567 0.99 1295 The Number Of The Beast Live After Death MPEG audio file Metal Harris 275121 6605094 0.99 1296 Hallowed Be Thy Name Live After Death MPEG audio file Metal Harris 451422 10836304 0.99 1297 Iron Maiden Live After Death MPEG audio file Metal Harris 261955 6289117 0.99 1298 Run To The Hills Live After Death MPEG audio file Metal Harris 231627 5561241 0.99 1299 Running Free Live After Death MPEG audio file Metal Harris/Di Anno 204617 4912986 0.99 1300 Wrathchild Live After Death MPEG audio file Heavy Metal Steve Harris 183666 4410181 0.99 1301 Acacia Avenue Live After Death MPEG audio file Heavy Metal \N 379872 9119118 0.99 1302 Children Of The Damned Live After Death MPEG audio file Heavy Metal Steve Harris 278177 6678446 0.99 1303 Die With Your Boots On Live After Death MPEG audio file Heavy Metal Adrian Smith/Bruce Dickinson/Steve Harris 314174 7542367 0.99 1304 Phantom Of The Opera Live After Death MPEG audio file Heavy Metal Steve Harris 441155 10589917 0.99 1305 Be Quick Or Be Dead Live At Donington 1992 (Disc 1) MPEG audio file Rock \N 233142 5599853 0.99 1306 The Number Of The Beast Live At Donington 1992 (Disc 1) MPEG audio file Rock \N 294008 7060625 0.99 1307 Wrathchild Live At Donington 1992 (Disc 1) MPEG audio file Rock \N 174106 4182963 0.99 1308 From Here To Eternity Live At Donington 1992 (Disc 1) MPEG audio file Rock \N 284447 6831163 0.99 1309 Can I Play With Madness Live At Donington 1992 (Disc 1) MPEG audio file Rock \N 213106 5118995 0.99 1310 Wasting Love Live At Donington 1992 (Disc 1) MPEG audio file Rock \N 336953 8091301 0.99 1311 Tailgunner Live At Donington 1992 (Disc 1) MPEG audio file Rock \N 247640 5947795 0.99 1312 The Evil That Men Do Live At Donington 1992 (Disc 1) MPEG audio file Rock \N 478145 11479913 0.99 1313 Afraid To Shoot Strangers Live At Donington 1992 (Disc 1) MPEG audio file Rock \N 412525 9905048 0.99 1314 Fear Of The Dark Live At Donington 1992 (Disc 1) MPEG audio file Rock \N 431542 10361452 0.99 1315 Bring Your Daughter... To The Slaughter... Live At Donington 1992 (Disc 2) MPEG audio file Rock \N 376711 9045532 0.99 1316 The Clairvoyant Live At Donington 1992 (Disc 2) MPEG audio file Rock \N 262426 6302648 0.99 1317 Heaven Can Wait Live At Donington 1992 (Disc 2) MPEG audio file Rock \N 440555 10577743 0.99 1318 Run To The Hills Live At Donington 1992 (Disc 2) MPEG audio file Rock \N 235859 5665052 0.99 1319 2 Minutes To Midnight Live At Donington 1992 (Disc 2) MPEG audio file Rock Adrian Smith/Bruce Dickinson 338233 8122030 0.99 1320 Iron Maiden Live At Donington 1992 (Disc 2) MPEG audio file Rock \N 494602 11874875 0.99 1321 Hallowed Be Thy Name Live At Donington 1992 (Disc 2) MPEG audio file Rock \N 447791 10751410 0.99 1322 The Trooper Live At Donington 1992 (Disc 2) MPEG audio file Rock \N 232672 5588560 0.99 1323 Sanctuary Live At Donington 1992 (Disc 2) MPEG audio file Rock \N 318511 7648679 0.99 1324 Running Free Live At Donington 1992 (Disc 2) MPEG audio file Rock \N 474017 11380851 0.99 1325 Tailgunner No Prayer For The Dying MPEG audio file Metal Bruce Dickinson/Steve Harris 255582 4089856 0.99 1326 Holy Smoke No Prayer For The Dying MPEG audio file Metal Bruce Dickinson/Steve Harris 229459 3672064 0.99 1327 No Prayer For The Dying No Prayer For The Dying MPEG audio file Metal Steve Harris 263941 4225024 0.99 1328 Public Enema Number One No Prayer For The Dying MPEG audio file Metal Bruce Dickinson/David Murray 254197 4071587 0.99 1329 Fates Warning No Prayer For The Dying MPEG audio file Metal David Murray/Steve Harris 250853 4018088 0.99 1330 The Assassin No Prayer For The Dying MPEG audio file Metal Steve Harris 258768 4141056 0.99 1331 Run Silent Run Deep No Prayer For The Dying MPEG audio file Metal Bruce Dickinson/Steve Harris 275408 4407296 0.99 1332 Hooks In You No Prayer For The Dying MPEG audio file Metal Adrian Smith/Bruce Dickinson 247510 3960832 0.99 1333 Bring Your Daughter... ...To The Slaughter No Prayer For The Dying MPEG audio file Metal Bruce Dickinson 284238 4548608 0.99 1334 Mother Russia No Prayer For The Dying MPEG audio file Metal Steve Harris 332617 5322752 0.99 1335 Where Eagles Dare Piece Of Mind MPEG audio file Metal Steve Harris 369554 5914624 0.99 1336 Revelations Piece Of Mind MPEG audio file Metal Bruce Dickinson 408607 6539264 0.99 1337 Flight Of The Icarus Piece Of Mind MPEG audio file Metal Adrian Smith/Bruce Dickinson 230269 3686400 0.99 1338 Die With Your Boots On Piece Of Mind MPEG audio file Metal Adrian Smith/Bruce Dickinson/Steve Harris 325694 5212160 0.99 1339 The Trooper Piece Of Mind MPEG audio file Metal Steve Harris 251454 4024320 0.99 1340 Still Life Piece Of Mind MPEG audio file Metal David Murray/Steve Harris 294347 4710400 0.99 1341 Quest For Fire Piece Of Mind MPEG audio file Metal Steve Harris 221309 3543040 0.99 1342 Sun And Steel Piece Of Mind MPEG audio file Metal Adrian Smith/Bruce Dickinson 206367 3306324 0.99 1343 To Tame A Land Piece Of Mind MPEG audio file Metal Steve Harris 445283 7129264 0.99 1344 Aces High Powerslave MPEG audio file Metal Harris 269531 6472088 0.99 1345 2 Minutes To Midnight Powerslave MPEG audio file Metal Smith/Dickinson 359810 8638809 0.99 1346 Losfer Words Powerslave MPEG audio file Metal Steve Harris 252891 6074756 0.99 1347 Flash of The Blade Powerslave MPEG audio file Metal Dickinson 242729 5828861 0.99 1348 Duelists Powerslave MPEG audio file Metal Steve Harris 366471 8800686 0.99 1349 Back in the Village Powerslave MPEG audio file Metal Dickinson/Smith 320548 7696518 0.99 1350 Powerslave Powerslave MPEG audio file Metal Dickinson 407823 9791106 0.99 1351 Rime of the Ancient Mariner Powerslave MPEG audio file Metal Harris 816509 19599577 0.99 1352 Intro Rock In Rio [CD1] MPEG audio file Metal \N 115931 4638848 0.99 1353 The Wicker Man Rock In Rio [CD1] MPEG audio file Metal Adrian Smith/Bruce Dickinson/Steve Harris 281782 11272320 0.99 1354 Ghost Of The Navigator Rock In Rio [CD1] MPEG audio file Metal Bruce Dickinson/Janick Gers/Steve Harris 408607 16345216 0.99 1355 Brave New World Rock In Rio [CD1] MPEG audio file Metal Bruce Dickinson/David Murray/Steve Harris 366785 14676148 0.99 1356 Wrathchild Rock In Rio [CD1] MPEG audio file Metal Steve Harris 185808 7434368 0.99 1357 2 Minutes To Midnight Rock In Rio [CD1] MPEG audio file Metal Adrian Smith/Bruce Dickinson 386821 15474816 0.99 1358 Blood Brothers Rock In Rio [CD1] MPEG audio file Metal Steve Harris 435513 17422464 0.99 1359 Sign Of The Cross Rock In Rio [CD1] MPEG audio file Metal Steve Harris 649116 25966720 0.99 1360 The Mercenary Rock In Rio [CD1] MPEG audio file Metal Janick Gers/Steve Harris 282697 11309184 0.99 1361 The Trooper Rock In Rio [CD1] MPEG audio file Metal Steve Harris 273528 10942592 0.99 1362 Dream Of Mirrors Rock In Rio [CD2] MPEG audio file Rock Janick Gers/Steve Harris 578324 23134336 0.99 1363 The Clansman Rock In Rio [CD2] MPEG audio file Rock Steve Harris 559203 22370432 0.99 1364 The Evil That Men Do Rock In Rio [CD2] MPEG audio file Metal Adrian Smith/Bruce Dickinson/Steve Harris 280737 11231360 0.99 1365 Fear Of The Dark Rock In Rio [CD2] MPEG audio file Rock Steve Harris 460695 18430080 0.99 1366 Iron Maiden Rock In Rio [CD2] MPEG audio file Rock Steve Harris 351869 14076032 0.99 1367 The Number Of The Beast Rock In Rio [CD2] MPEG audio file Rock Steve Harris 300434 12022107 0.99 1368 Hallowed Be Thy Name Rock In Rio [CD2] MPEG audio file Rock Steve Harris 443977 17760384 0.99 1369 Sanctuary Rock In Rio [CD2] MPEG audio file Rock David Murray/Paul Di'Anno/Steve Harris 317335 12695680 0.99 1370 Run To The Hills Rock In Rio [CD2] MPEG audio file Rock Steve Harris 292179 11688064 0.99 1371 Moonchild Seventh Son of a Seventh Son MPEG audio file Metal Adrian Smith; Bruce Dickinson 340767 8179151 0.99 1372 Infinite Dreams Seventh Son of a Seventh Son MPEG audio file Metal Steve Harris 369005 8858669 0.99 1373 Can I Play With Madness Seventh Son of a Seventh Son MPEG audio file Metal Adrian Smith; Bruce Dickinson; Steve Harris 211043 5067867 0.99 1374 The Evil That Men Do Seventh Son of a Seventh Son MPEG audio file Metal Adrian Smith; Bruce Dickinson; Steve Harris 273998 6578930 0.99 1375 Seventh Son of a Seventh Son Seventh Son of a Seventh Son MPEG audio file Metal Steve Harris 593580 14249000 0.99 1376 The Prophecy Seventh Son of a Seventh Son MPEG audio file Metal Dave Murray; Steve Harris 305475 7334450 0.99 1377 The Clairvoyant Seventh Son of a Seventh Son MPEG audio file Metal Adrian Smith; Bruce Dickinson; Steve Harris 267023 6411510 0.99 1378 Only the Good Die Young Seventh Son of a Seventh Son MPEG audio file Metal Bruce Dickinson; Harris 280894 6744431 0.99 1379 Caught Somewhere in Time Somewhere in Time MPEG audio file Metal Steve Harris 445779 10701149 0.99 1380 Wasted Years Somewhere in Time MPEG audio file Metal Adrian Smith 307565 7384358 0.99 1381 Sea of Madness Somewhere in Time MPEG audio file Metal Adrian Smith 341995 8210695 0.99 1382 Heaven Can Wait Somewhere in Time MPEG audio file Metal Steve Harris 441417 10596431 0.99 1383 Stranger in a Strange Land Somewhere in Time MPEG audio file Metal Adrian Smith 344502 8270899 0.99 1384 Alexander the Great Somewhere in Time MPEG audio file Metal Steve Harris 515631 12377742 0.99 1385 De Ja Vu Somewhere in Time MPEG audio file Metal David Murray/Steve Harris 296176 7113035 0.99 1386 The Loneliness of the Long Dis Somewhere in Time MPEG audio file Metal Steve Harris 391314 9393598 0.99 1387 22 Acacia Avenue The Number of The Beast MPEG audio file Metal Adrian Smith/Steve Harris 395572 5542516 0.99 1388 Children of the Damned The Number of The Beast MPEG audio file Metal Steve Harris 274364 3845631 0.99 1389 Gangland The Number of The Beast MPEG audio file Metal Adrian Smith/Clive Burr/Steve Harris 228440 3202866 0.99 1390 Hallowed Be Thy Name The Number of The Beast MPEG audio file Metal Steve Harris 428669 6006107 0.99 1391 Invaders The Number of The Beast MPEG audio file Metal Steve Harris 203180 2849181 0.99 1392 Run to the Hills The Number of The Beast MPEG audio file Metal Steve Harris 228884 3209124 0.99 1393 The Number Of The Beast The Number of The Beast MPEG audio file Rock Steve Harris 293407 11737216 0.99 1394 The Prisoner The Number of The Beast MPEG audio file Metal Adrian Smith/Steve Harris 361299 5062906 0.99 1395 Sign Of The Cross The X Factor MPEG audio file Rock Steve Harris 678008 27121792 0.99 1396 Lord Of The Flies The X Factor MPEG audio file Rock Janick Gers/Steve Harris 303699 12148864 0.99 1397 Man On The Edge The X Factor MPEG audio file Rock Blaze Bayley/Janick Gers 253413 10137728 0.99 1398 Fortunes Of War The X Factor MPEG audio file Rock Steve Harris 443977 17760384 0.99 1399 Look For The Truth The X Factor MPEG audio file Rock Blaze Bayley/Janick Gers/Steve Harris 310230 12411008 0.99 1400 The Aftermath The X Factor MPEG audio file Rock Blaze Bayley/Janick Gers/Steve Harris 380786 15233152 0.99 1401 Judgement Of Heaven The X Factor MPEG audio file Rock Steve Harris 312476 12501120 0.99 1402 Blood On The World's Hands The X Factor MPEG audio file Rock Steve Harris 357799 14313600 0.99 1403 The Edge Of Darkness The X Factor MPEG audio file Rock Blaze Bayley/Janick Gers/Steve Harris 399333 15974528 0.99 1404 2 A.M. The X Factor MPEG audio file Rock Blaze Bayley/Janick Gers/Steve Harris 337658 13511087 0.99 1405 The Unbeliever The X Factor MPEG audio file Rock Janick Gers/Steve Harris 490422 19617920 0.99 1406 Futureal Virtual XI MPEG audio file Rock Blaze Bayley/Steve Harris 175777 7032960 0.99 1407 The Angel And The Gambler Virtual XI MPEG audio file Rock Steve Harris 592744 23711872 0.99 1408 Lightning Strikes Twice Virtual XI MPEG audio file Rock David Murray/Steve Harris 290377 11616384 0.99 1409 The Clansman Virtual XI MPEG audio file Rock Steve Harris 539689 21592327 0.99 1410 When Two Worlds Collide Virtual XI MPEG audio file Rock Blaze Bayley/David Murray/Steve Harris 377312 15093888 0.99 1411 The Educated Fool Virtual XI MPEG audio file Rock Steve Harris 404767 16191616 0.99 1412 Don't Look To The Eyes Of A Stranger Virtual XI MPEG audio file Rock Steve Harris 483657 19347584 0.99 1413 Como Estais Amigos Virtual XI MPEG audio file Rock Blaze Bayley/Janick Gers 330292 13213824 0.99 1414 Please Please Please Sex Machine MPEG audio file R&B/Soul James Brown/Johnny Terry 165067 5394585 0.99 1415 Think Sex Machine MPEG audio file R&B/Soul Lowman Pauling 166739 5513208 0.99 1416 Night Train Sex Machine MPEG audio file R&B/Soul Jimmy Forrest/Lewis C. Simpkins/Oscar Washington 212401 7027377 0.99 1417 Out Of Sight Sex Machine MPEG audio file R&B/Soul Ted Wright 143725 4711323 0.99 1418 Papa's Got A Brand New Bag Pt.1 Sex Machine MPEG audio file R&B/Soul James Brown 127399 4174420 0.99 1419 I Got You (I Feel Good) Sex Machine MPEG audio file R&B/Soul James Brown 167392 5468472 0.99 1420 It's A Man's Man's Man's World Sex Machine MPEG audio file R&B/Soul Betty Newsome/James Brown 168228 5541611 0.99 1421 Cold Sweat Sex Machine MPEG audio file R&B/Soul Alfred Ellis/James Brown 172408 5643213 0.99 1422 Say It Loud, I'm Black And I'm Proud Pt.1 Sex Machine MPEG audio file R&B/Soul Alfred Ellis/James Brown 167392 5478117 0.99 1423 Get Up (I Feel Like Being A) Sex Machine Sex Machine MPEG audio file R&B/Soul Bobby Byrd/James Brown/Ron Lenhoff 316551 10498031 0.99 1424 Hey America Sex Machine MPEG audio file R&B/Soul Addie William Jones/Nat Jones 218226 7187857 0.99 1425 Make It Funky Pt.1 Sex Machine MPEG audio file R&B/Soul Charles Bobbitt/James Brown 196231 6507782 0.99 1426 I'm A Greedy Man Pt.1 Sex Machine MPEG audio file R&B/Soul Charles Bobbitt/James Brown 217730 7251211 0.99 1427 Get On The Good Foot Sex Machine MPEG audio file R&B/Soul Fred Wesley/James Brown/Joseph Mims 215902 7182736 0.99 1428 Get Up Offa That Thing Sex Machine MPEG audio file R&B/Soul Deanna Brown/Deidra Jenkins/Yamma Brown 250723 8355989 0.99 1429 It's Too Funky In Here Sex Machine MPEG audio file R&B/Soul Brad Shapiro/George Jackson/Robert Miller/Walter Shaw 239072 7973979 0.99 1430 Living In America Sex Machine MPEG audio file R&B/Soul Charlie Midnight/Dan Hartman 282880 9432346 0.99 1431 I'm Real Sex Machine MPEG audio file R&B/Soul Full Force/James Brown 334236 11183457 0.99 1432 Hot Pants Pt.1 Sex Machine MPEG audio file R&B/Soul Fred Wesley/James Brown 188212 6295110 0.99 1433 Soul Power (Live) Sex Machine MPEG audio file R&B/Soul James Brown 260728 8593206 0.99 1434 When You Gonna Learn (Digeridoo) Emergency On Planet Earth MPEG audio file Rock Jay Kay/Kay, Jay 230635 7655482 0.99 1435 Too Young To Die Emergency On Planet Earth MPEG audio file Rock Smith, Toby 365818 12391660 0.99 1436 Hooked Up Emergency On Planet Earth MPEG audio file Rock Smith, Toby 275879 9301687 0.99 1437 If I Like It, I Do It Emergency On Planet Earth MPEG audio file Rock Gelder, Nick van 293093 9848207 0.99 1438 Music Of The Wind Emergency On Planet Earth MPEG audio file Rock Smith, Toby 383033 12870239 0.99 1439 Emergency On Planet Earth Emergency On Planet Earth MPEG audio file Rock Smith, Toby 245263 8117218 0.99 1440 Whatever It Is, I Just Can't Stop Emergency On Planet Earth MPEG audio file Rock Jay Kay/Kay, Jay 247222 8249453 0.99 1441 Blow Your Mind Emergency On Planet Earth MPEG audio file Rock Smith, Toby 512339 17089176 0.99 1442 Revolution 1993 Emergency On Planet Earth MPEG audio file Rock Smith, Toby 616829 20816872 0.99 1443 Didgin' Out Emergency On Planet Earth MPEG audio file Rock Buchanan, Wallis 157100 5263555 0.99 1444 Canned Heat Synkronized MPEG audio file R&B/Soul Jay Kay 331964 11042037 0.99 1445 Planet Home Synkronized MPEG audio file R&B/Soul Jay Kay/Toby Smith 284447 9566237 0.99 1446 Black Capricorn Day Synkronized MPEG audio file R&B/Soul Jay Kay 341629 11477231 0.99 1447 Soul Education Synkronized MPEG audio file R&B/Soul Jay Kay/Toby Smith 255477 8575435 0.99 1448 Failling Synkronized MPEG audio file R&B/Soul Jay Kay/Toby Smith 225227 7503999 0.99 1449 Destitute Illusions Synkronized MPEG audio file R&B/Soul Derrick McKenzie/Jay Kay/Toby Smith 340218 11452651 0.99 1450 Supersonic Synkronized MPEG audio file R&B/Soul Jay Kay 315872 10699265 0.99 1451 Butterfly Synkronized MPEG audio file R&B/Soul Jay Kay/Toby Smith 268852 8947356 0.99 1452 Were Do We Go From Here Synkronized MPEG audio file R&B/Soul Jay Kay 313626 10504158 0.99 1453 King For A Day Synkronized MPEG audio file R&B/Soul Jay Kay/Toby Smith 221544 7335693 0.99 1454 Deeper Underground Synkronized MPEG audio file R&B/Soul Toby Smith 281808 9351277 0.99 1455 Just Another Story The Return Of The Space Cowboy MPEG audio file Electronica/Dance Toby Smith 529684 17582818 0.99 1456 Stillness In Time The Return Of The Space Cowboy MPEG audio file Electronica/Dance Toby Smith 257097 8644290 0.99 1457 Half The Man The Return Of The Space Cowboy MPEG audio file Electronica/Dance Toby Smith 289854 9577679 0.99 1515 Menina Sarará Jorge Ben Jor 25 Anos MPEG audio file Latin \N 191477 6393818 0.99 1458 Light Years The Return Of The Space Cowboy MPEG audio file Electronica/Dance Toby Smith 354560 11796244 0.99 1459 Manifest Destiny The Return Of The Space Cowboy MPEG audio file Electronica/Dance Toby Smith 382197 12676962 0.99 1460 The Kids The Return Of The Space Cowboy MPEG audio file Electronica/Dance Toby Smith 309995 10334529 0.99 1461 Mr. Moon The Return Of The Space Cowboy MPEG audio file Electronica/Dance Stuard Zender/Toby Smith 329534 11043559 0.99 1462 Scam The Return Of The Space Cowboy MPEG audio file Electronica/Dance Stuart Zender 422321 14019705 0.99 1463 Journey To Arnhemland The Return Of The Space Cowboy MPEG audio file Electronica/Dance Toby Smith/Wallis Buchanan 322455 10843832 0.99 1464 Morning Glory The Return Of The Space Cowboy MPEG audio file Electronica/Dance J. Kay/Jay Kay 384130 12777210 0.99 1465 Space Cowboy The Return Of The Space Cowboy MPEG audio file Electronica/Dance J. Kay/Jay Kay 385697 12906520 0.99 1466 Last Chance Get Born MPEG audio file Alternative & Punk C. Cester/C. Muncey 112352 3683130 0.99 1467 Are You Gonna Be My Girl Get Born MPEG audio file Alternative & Punk C. Muncey/N. Cester 213890 6992324 0.99 1468 Rollover D.J. Get Born MPEG audio file Alternative & Punk C. Cester/N. Cester 196702 6406517 0.99 1469 Look What You've Done Get Born MPEG audio file Alternative & Punk N. Cester 230974 7517083 0.99 1470 Get What You Need Get Born MPEG audio file Alternative & Punk C. Cester/C. Muncey/N. Cester 247719 8043765 0.99 1471 Move On Get Born MPEG audio file Alternative & Punk C. Cester/N. Cester 260623 8519353 0.99 1472 Radio Song Get Born MPEG audio file Alternative & Punk C. Cester/C. Muncey/N. Cester 272117 8871509 0.99 1473 Get Me Outta Here Get Born MPEG audio file Alternative & Punk C. Cester/N. Cester 176274 5729098 0.99 1474 Cold Hard Bitch Get Born MPEG audio file Alternative & Punk C. Cester/C. Muncey/N. Cester 243278 7929610 0.99 1475 Come Around Again Get Born MPEG audio file Alternative & Punk C. Muncey/N. Cester 270497 8872405 0.99 1476 Take It Or Leave It Get Born MPEG audio file Alternative & Punk C. Muncey/N. Cester 142889 4643370 0.99 1477 Lazy Gun Get Born MPEG audio file Alternative & Punk C. Cester/N. Cester 282174 9186285 0.99 1478 Timothy Get Born MPEG audio file Alternative & Punk C. Cester 270341 8856507 0.99 1479 Foxy Lady Are You Experienced? MPEG audio file Rock Jimi Hendrix 199340 6480896 0.99 1480 Manic Depression Are You Experienced? MPEG audio file Rock Jimi Hendrix 222302 7289272 0.99 1481 Red House Are You Experienced? MPEG audio file Rock Jimi Hendrix 224130 7285851 0.99 1482 Can You See Me Are You Experienced? MPEG audio file Rock Jimi Hendrix 153077 4987068 0.99 1483 Love Or Confusion Are You Experienced? MPEG audio file Rock Jimi Hendrix 193123 6329408 0.99 1484 I Don't Live Today Are You Experienced? MPEG audio file Rock Jimi Hendrix 235311 7661214 0.99 1485 May This Be Love Are You Experienced? MPEG audio file Rock Jimi Hendrix 191216 6240028 0.99 1486 Fire Are You Experienced? MPEG audio file Rock Jimi Hendrix 164989 5383075 0.99 1487 Third Stone From The Sun Are You Experienced? MPEG audio file Rock Jimi Hendrix 404453 13186975 0.99 1488 Remember Are You Experienced? MPEG audio file Rock Jimi Hendrix 168150 5509613 0.99 1489 Are You Experienced? Are You Experienced? MPEG audio file Rock Jimi Hendrix 254537 8292497 0.99 1490 Hey Joe Are You Experienced? MPEG audio file Rock Billy Roberts 210259 6870054 0.99 1491 Stone Free Are You Experienced? MPEG audio file Rock Jimi Hendrix 216293 7002331 0.99 1492 Purple Haze Are You Experienced? MPEG audio file Rock Jimi Hendrix 171572 5597056 0.99 1493 51st Anniversary Are You Experienced? MPEG audio file Rock Jimi Hendrix 196388 6398044 0.99 1494 The Wind Cries Mary Are You Experienced? MPEG audio file Rock Jimi Hendrix 200463 6540638 0.99 1495 Highway Chile Are You Experienced? MPEG audio file Rock Jimi Hendrix 212453 6887949 0.99 1496 Surfing with the Alien Surfing with the Alien (Remastered) Protected AAC audio file Rock \N 263707 4418504 0.99 1497 Ice 9 Surfing with the Alien (Remastered) Protected AAC audio file Rock \N 239721 4036215 0.99 1498 Crushing Day Surfing with the Alien (Remastered) Protected AAC audio file Rock \N 314768 5232158 0.99 1499 Always With Me, Always With You Surfing with the Alien (Remastered) Protected AAC audio file Rock \N 202035 3435777 0.99 1500 Satch Boogie Surfing with the Alien (Remastered) Protected AAC audio file Rock \N 193560 3300654 0.99 1501 Hill of the Skull Surfing with the Alien (Remastered) Protected AAC audio file Rock J. Satriani 108435 1944738 0.99 1502 Circles Surfing with the Alien (Remastered) Protected AAC audio file Rock \N 209071 3548553 0.99 1503 Lords of Karma Surfing with the Alien (Remastered) Protected AAC audio file Rock J. Satriani 288227 4809279 0.99 1504 Midnight Surfing with the Alien (Remastered) Protected AAC audio file Rock J. Satriani 102630 1851753 0.99 1505 Echo Surfing with the Alien (Remastered) Protected AAC audio file Rock J. Satriani 337570 5595557 0.99 1506 Engenho De Dentro Jorge Ben Jor 25 Anos MPEG audio file Latin \N 310073 10211473 0.99 1507 Alcohol Jorge Ben Jor 25 Anos MPEG audio file Latin \N 355239 12010478 0.99 1508 Mama Africa Jorge Ben Jor 25 Anos MPEG audio file Latin \N 283062 9488316 0.99 1509 Salve Simpatia Jorge Ben Jor 25 Anos MPEG audio file Latin \N 343484 11314756 0.99 1510 W/Brasil (Chama O Síndico) Jorge Ben Jor 25 Anos MPEG audio file Latin \N 317100 10599953 0.99 1511 País Tropical Jorge Ben Jor 25 Anos MPEG audio file Latin \N 452519 14946972 0.99 1512 Os Alquimistas Estão Chegando Jorge Ben Jor 25 Anos MPEG audio file Latin \N 367281 12304520 0.99 1513 Charles Anjo 45 Jorge Ben Jor 25 Anos MPEG audio file Latin \N 389276 13022833 0.99 1514 Selassiê Jorge Ben Jor 25 Anos MPEG audio file Latin \N 326321 10724982 0.99 1516 Que Maravilha Jorge Ben Jor 25 Anos MPEG audio file Latin \N 338076 10996656 0.99 1517 Santa Clara Clareou Jorge Ben Jor 25 Anos MPEG audio file Latin \N 380081 12524725 0.99 1518 Filho Maravilha Jorge Ben Jor 25 Anos MPEG audio file Latin \N 227526 7498259 0.99 1519 Taj Mahal Jorge Ben Jor 25 Anos MPEG audio file Latin \N 289750 9502898 0.99 1520 Rapidamente Jota Quest-1995 MPEG audio file Latin \N 252238 8470107 0.99 1521 As Dores do Mundo Jota Quest-1995 MPEG audio file Latin Hyldon 255477 8537092 0.99 1522 Vou Pra Ai Jota Quest-1995 MPEG audio file Latin \N 300878 10053718 0.99 1523 My Brother Jota Quest-1995 MPEG audio file Latin \N 253231 8431821 0.99 1524 Há Quanto Tempo Jota Quest-1995 MPEG audio file Latin \N 270027 9004470 0.99 1525 Vício Jota Quest-1995 MPEG audio file Latin \N 269897 8887216 0.99 1679 Dezesseis A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo 323918 10573515 0.99 1526 Encontrar Alguém Jota Quest-1995 MPEG audio file Latin Marco Tulio Lara/Rogerio Flausino 224078 7437935 0.99 1527 Dance Enquanto é Tempo Jota Quest-1995 MPEG audio file Latin \N 229093 7583799 0.99 1528 A Tarde Jota Quest-1995 MPEG audio file Latin \N 266919 8836127 0.99 1529 Always Be All Right Jota Quest-1995 MPEG audio file Latin \N 128078 4299676 0.99 1530 Sem Sentido Jota Quest-1995 MPEG audio file Latin \N 250462 8292108 0.99 1531 Onibusfobia Jota Quest-1995 MPEG audio file Latin \N 315977 10474904 0.99 1532 Pura Elegancia Cafezinho MPEG audio file World João Suplicy 284107 9632269 0.99 1533 Choramingando Cafezinho MPEG audio file World João Suplicy 190484 6400532 0.99 1534 Por Merecer Cafezinho MPEG audio file World João Suplicy 230582 7764601 0.99 1535 No Futuro Cafezinho MPEG audio file World João Suplicy 182308 6056200 0.99 1536 Voce Inteira Cafezinho MPEG audio file World João Suplicy 241084 8077282 0.99 1537 Cuando A Noite Vai Chegando Cafezinho MPEG audio file World João Suplicy 270628 9081874 0.99 1538 Naquele Dia Cafezinho MPEG audio file World João Suplicy 251768 8452654 0.99 1539 Equinocio Cafezinho MPEG audio file World João Suplicy 269008 8871455 0.99 1540 Papelão Cafezinho MPEG audio file World João Suplicy 213263 7257390 0.99 1541 Cuando Eu For Pro Ceu Cafezinho MPEG audio file World João Suplicy 118804 3948371 0.99 1542 Do Nosso Amor Cafezinho MPEG audio file World João Suplicy 203415 6774566 0.99 1543 Borogodo Cafezinho MPEG audio file World João Suplicy 208457 7104588 0.99 1544 Cafezinho Cafezinho MPEG audio file World João Suplicy 180924 6031174 0.99 1545 Enquanto O Dia Não Vem Cafezinho MPEG audio file World João Suplicy 220891 7248336 0.99 1546 The Green Manalishi Living After Midnight MPEG audio file Metal \N 205792 6720789 0.99 1547 Living After Midnight Living After Midnight MPEG audio file Metal \N 213289 7056785 0.99 1548 Breaking The Law (Live) Living After Midnight MPEG audio file Metal \N 144195 4728246 0.99 1549 Hot Rockin' Living After Midnight MPEG audio file Metal \N 197328 6509179 0.99 1550 Heading Out To The Highway (Live) Living After Midnight MPEG audio file Metal \N 276427 9006022 0.99 1551 The Hellion Living After Midnight MPEG audio file Metal \N 41900 1351993 0.99 1552 Electric Eye Living After Midnight MPEG audio file Metal \N 222197 7231368 0.99 1553 You've Got Another Thing Comin' Living After Midnight MPEG audio file Metal \N 305162 9962558 0.99 1554 Turbo Lover Living After Midnight MPEG audio file Metal \N 335542 11068866 0.99 1555 Freewheel Burning Living After Midnight MPEG audio file Metal \N 265952 8713599 0.99 1556 Some Heads Are Gonna Roll Living After Midnight MPEG audio file Metal \N 249939 8198617 0.99 1557 Metal Meltdown Living After Midnight MPEG audio file Metal \N 290664 9390646 0.99 1558 Ram It Down Living After Midnight MPEG audio file Metal \N 292179 9554023 0.99 1559 Diamonds And Rust (Live) Living After Midnight MPEG audio file Metal \N 219350 7163147 0.99 1560 Victim Of Change (Live) Living After Midnight MPEG audio file Metal \N 430942 14067512 0.99 1561 Tyrant (Live) Living After Midnight MPEG audio file Metal \N 282253 9190536 0.99 1562 Comin' Home Unplugged [Live] MPEG audio file Rock Paul Stanley, Ace Frehley 172068 5661120 0.99 1563 Plaster Caster Unplugged [Live] MPEG audio file Rock Gene Simmons 198060 6528719 0.99 1564 Goin' Blind Unplugged [Live] MPEG audio file Rock Gene Simmons, Stephen Coronel 217652 7167523 0.99 1565 Do You Love Me Unplugged [Live] MPEG audio file Rock Paul Stanley, Bob Ezrin, Kim Fowley 193619 6343111 0.99 1566 Domino Unplugged [Live] MPEG audio file Rock Gene Simmons 226377 7488191 0.99 1567 Sure Know Something Unplugged [Live] MPEG audio file Rock Paul Stanley, Vincent Poncia 254354 8375190 0.99 1568 A World Without Heroes Unplugged [Live] MPEG audio file Rock Paul Stanley, Gene Simmons, Bob Ezrin, Lewis Reed 177815 5832524 0.99 1569 Rock Bottom Unplugged [Live] MPEG audio file Rock Paul Stanley, Ace Frehley 200594 6560818 0.99 1570 See You Tonight Unplugged [Live] MPEG audio file Rock Gene Simmons 146494 4817521 0.99 1571 I Still Love You Unplugged [Live] MPEG audio file Rock Paul Stanley 369815 12086145 0.99 1572 Every Time I Look At You Unplugged [Live] MPEG audio file Rock Paul Stanley, Vincent Cusano 283898 9290948 0.99 1573 2,000 Man Unplugged [Live] MPEG audio file Rock Mick Jagger, Keith Richard 312450 10292829 0.99 1574 Beth Unplugged [Live] MPEG audio file Rock Peter Criss, Stan Penridge, Bob Ezrin 170187 5577807 0.99 1575 Nothin' To Lose Unplugged [Live] MPEG audio file Rock Gene Simmons 222354 7351460 0.99 1576 Rock And Roll All Nite Unplugged [Live] MPEG audio file Rock Paul Stanley, Gene Simmons 259631 8549296 0.99 1577 Immigrant Song BBC Sessions [Disc 2] [Live] MPEG audio file Rock Robert Plant 201247 6457766 0.99 1578 Heartbreaker BBC Sessions [Disc 2] [Live] MPEG audio file Rock John Bonham/John Paul Jones/Robert Plant 316081 10179657 0.99 1579 Since I've Been Loving You BBC Sessions [Disc 2] [Live] MPEG audio file Rock John Paul Jones/Robert Plant 416365 13471959 0.99 1580 Black Dog BBC Sessions [Disc 2] [Live] MPEG audio file Rock John Paul Jones/Robert Plant 317622 10267572 0.99 1581 Dazed And Confused BBC Sessions [Disc 2] [Live] MPEG audio file Rock Jimmy Page/Led Zeppelin 1116734 36052247 0.99 1582 Stairway To Heaven BBC Sessions [Disc 2] [Live] MPEG audio file Rock Robert Plant 529658 17050485 0.99 1583 Going To California BBC Sessions [Disc 2] [Live] MPEG audio file Rock Robert Plant 234605 7646749 0.99 1584 That's The Way BBC Sessions [Disc 2] [Live] MPEG audio file Rock Robert Plant 343431 11248455 0.99 1585 Whole Lotta Love (Medley) BBC Sessions [Disc 2] [Live] MPEG audio file Rock Arthur Crudup/Bernard Besman/Bukka White/Doc Pomus/John Bonham/John Lee Hooker/John Paul Jones/Mort Shuman/Robert Plant/Willie Dixon 825103 26742545 0.99 1586 Thank You BBC Sessions [Disc 2] [Live] MPEG audio file Rock Robert Plant 398262 12831826 0.99 1587 We're Gonna Groove Coda MPEG audio file Rock Ben E.King/James Bethea 157570 5180975 0.99 1588 Poor Tom Coda MPEG audio file Rock Jimmy Page/Robert Plant 182491 6016220 0.99 1589 I Can't Quit You Baby Coda MPEG audio file Rock Willie Dixon 258168 8437098 0.99 1590 Walter's Walk Coda MPEG audio file Rock Jimmy Page, Robert Plant 270785 8712499 0.99 1591 Ozone Baby Coda MPEG audio file Rock Jimmy Page, Robert Plant 215954 7079588 0.99 1592 Darlene Coda MPEG audio file Rock Jimmy Page, Robert Plant, John Bonham, John Paul Jones 307226 10078197 0.99 1593 Bonzo's Montreux Coda MPEG audio file Rock John Bonham 258925 8557447 0.99 1594 Wearing And Tearing Coda MPEG audio file Rock Jimmy Page, Robert Plant 330004 10701590 0.99 1595 The Song Remains The Same Houses Of The Holy MPEG audio file Rock Jimmy Page/Jimmy Page & Robert Plant/Robert Plant 330004 10708950 0.99 1596 The Rain Song Houses Of The Holy MPEG audio file Rock Jimmy Page/Jimmy Page & Robert Plant/Robert Plant 459180 15029875 0.99 1597 Over The Hills And Far Away Houses Of The Holy MPEG audio file Rock Jimmy Page/Jimmy Page & Robert Plant/Robert Plant 290089 9552829 0.99 1598 The Crunge Houses Of The Holy MPEG audio file Rock John Bonham/John Paul Jones 197407 6460212 0.99 1599 Dancing Days Houses Of The Holy MPEG audio file Rock Jimmy Page/Jimmy Page & Robert Plant/Robert Plant 223216 7250104 0.99 1600 D'Yer Mak'er Houses Of The Holy MPEG audio file Rock John Bonham/John Paul Jones 262948 8645935 0.99 1601 No Quarter Houses Of The Holy MPEG audio file Rock John Paul Jones 420493 13656517 0.99 1602 The Ocean Houses Of The Holy MPEG audio file Rock John Bonham/John Paul Jones 271098 8846469 0.99 1603 In The Evening In Through The Out Door MPEG audio file Rock Jimmy Page, Robert Plant & John Paul Jones 410566 13399734 0.99 1604 South Bound Saurez In Through The Out Door MPEG audio file Rock John Paul Jones & Robert Plant 254406 8420427 0.99 1605 Fool In The Rain In Through The Out Door MPEG audio file Rock Jimmy Page, Robert Plant & John Paul Jones 372950 12371433 0.99 1606 Hot Dog In Through The Out Door MPEG audio file Rock Jimmy Page & Robert Plant 197198 6536167 0.99 1607 Carouselambra In Through The Out Door MPEG audio file Rock John Paul Jones, Jimmy Page & Robert Plant 634435 20858315 0.99 1608 All My Love In Through The Out Door MPEG audio file Rock Robert Plant & John Paul Jones 356284 11684862 0.99 1609 I'm Gonna Crawl In Through The Out Door MPEG audio file Rock Jimmy Page, Robert Plant & John Paul Jones 329639 10737665 0.99 1610 Black Dog IV MPEG audio file Rock Jimmy Page, Robert Plant, John Paul Jones 296672 9660588 0.99 1611 Rock & Roll IV MPEG audio file Rock Jimmy Page, Robert Plant, John Paul Jones, John Bonham 220917 7142127 0.99 1612 The Battle Of Evermore IV MPEG audio file Rock Jimmy Page, Robert Plant 351555 11525689 0.99 1613 Stairway To Heaven IV MPEG audio file Rock Jimmy Page, Robert Plant 481619 15706767 0.99 1614 Misty Mountain Hop IV MPEG audio file Rock Jimmy Page, Robert Plant, John Paul Jones 278857 9092799 0.99 1615 Four Sticks IV MPEG audio file Rock Jimmy Page, Robert Plant 284447 9481301 0.99 1616 Going To California IV MPEG audio file Rock Jimmy Page, Robert Plant 215693 7068737 0.99 1617 When The Levee Breaks IV MPEG audio file Rock Jimmy Page, Robert Plant, John Paul Jones, John Bonham, Memphis Minnie 427702 13912107 0.99 1618 Good Times Bad Times Led Zeppelin I MPEG audio file Rock Jimmy Page/John Bonham/John Paul Jones 166164 5464077 0.99 1619 Babe I'm Gonna Leave You Led Zeppelin I MPEG audio file Rock Jimmy Page/Robert Plant 401475 13189312 0.99 1620 You Shook Me Led Zeppelin I MPEG audio file Rock J. B. Lenoir/Willie Dixon 388179 12643067 0.99 1621 Dazed and Confused Led Zeppelin I MPEG audio file Rock Jimmy Page 386063 12610326 0.99 1622 Your Time Is Gonna Come Led Zeppelin I MPEG audio file Rock Jimmy Page/John Paul Jones 274860 9011653 0.99 1623 Black Mountain Side Led Zeppelin I MPEG audio file Rock Jimmy Page 132702 4440602 0.99 1624 Communication Breakdown Led Zeppelin I MPEG audio file Rock Jimmy Page/John Bonham/John Paul Jones 150230 4899554 0.99 1625 I Can't Quit You Baby Led Zeppelin I MPEG audio file Rock Willie Dixon 282671 9252733 0.99 1626 How Many More Times Led Zeppelin I MPEG audio file Rock Jimmy Page/John Bonham/John Paul Jones 508055 16541364 0.99 1627 Whole Lotta Love Led Zeppelin II MPEG audio file Rock Jimmy Page, Robert Plant, John Paul Jones, John Bonham 334471 11026243 0.99 1628 What Is And What Should Never Be Led Zeppelin II MPEG audio file Rock Jimmy Page, Robert Plant 287973 9369385 0.99 1629 The Lemon Song Led Zeppelin II MPEG audio file Rock Jimmy Page, Robert Plant, John Paul Jones, John Bonham 379141 12463496 0.99 1630 Thank You Led Zeppelin II MPEG audio file Rock Jimmy Page, Robert Plant 287791 9337392 0.99 1631 Heartbreaker Led Zeppelin II MPEG audio file Rock Jimmy Page, Robert Plant, John Paul Jones, John Bonham 253988 8387560 0.99 1632 Living Loving Maid (She's Just A Woman) Led Zeppelin II MPEG audio file Rock Jimmy Page, Robert Plant 159216 5219819 0.99 1633 Ramble On Led Zeppelin II MPEG audio file Rock Jimmy Page, Robert Plant 275591 9199710 0.99 1634 Moby Dick Led Zeppelin II MPEG audio file Rock John Bonham, John Paul Jones, Jimmy Page 260728 8664210 0.99 1635 Bring It On Home Led Zeppelin II MPEG audio file Rock Jimmy Page, Robert Plant 259970 8494731 0.99 1636 Immigrant Song Led Zeppelin III MPEG audio file Rock Jimmy Page, Robert Plant 144875 4786461 0.99 1637 Friends Led Zeppelin III MPEG audio file Rock Jimmy Page, Robert Plant 233560 7694220 0.99 1638 Celebration Day Led Zeppelin III MPEG audio file Rock Jimmy Page, Robert Plant, John Paul Jones 209528 6871078 0.99 1639 Since I've Been Loving You Led Zeppelin III MPEG audio file Rock Jimmy Page, Robert Plant, John Paul Jones 444055 14482460 0.99 1640 Out On The Tiles Led Zeppelin III MPEG audio file Rock Jimmy Page, Robert Plant, John Bonham 246047 8060350 0.99 1641 Gallows Pole Led Zeppelin III MPEG audio file Rock Traditional 296228 9757151 0.99 1642 Tangerine Led Zeppelin III MPEG audio file Rock Jimmy Page 189675 6200893 0.99 1643 That's The Way Led Zeppelin III MPEG audio file Rock Jimmy Page, Robert Plant 337345 11202499 0.99 1644 Bron-Y-Aur Stomp Led Zeppelin III MPEG audio file Rock Jimmy Page, Robert Plant, John Paul Jones 259500 8674508 0.99 1645 Hats Off To (Roy) Harper Led Zeppelin III MPEG audio file Rock Traditional 219376 7236640 0.99 1646 In The Light Physical Graffiti [Disc 2] MPEG audio file Rock John Paul Jones/Robert Plant 526785 17033046 0.99 1647 Bron-Yr-Aur Physical Graffiti [Disc 2] MPEG audio file Rock Jimmy Page 126641 4150746 0.99 1648 Down By The Seaside Physical Graffiti [Disc 2] MPEG audio file Rock Robert Plant 316186 10371282 0.99 1649 Ten Years Gone Physical Graffiti [Disc 2] MPEG audio file Rock Robert Plant 393116 12756366 0.99 1650 Night Flight Physical Graffiti [Disc 2] MPEG audio file Rock John Paul Jones/Robert Plant 217547 7160647 0.99 1651 The Wanton Song Physical Graffiti [Disc 2] MPEG audio file Rock Robert Plant 249887 8180988 0.99 1652 Boogie With Stu Physical Graffiti [Disc 2] MPEG audio file Rock Ian Stewart/John Bonham/John Paul Jones/Mrs. Valens/Robert Plant 233273 7657086 0.99 1653 Black Country Woman Physical Graffiti [Disc 2] MPEG audio file Rock Robert Plant 273084 8951732 0.99 1654 Sick Again Physical Graffiti [Disc 2] MPEG audio file Rock Robert Plant 283036 9279263 0.99 1655 Achilles Last Stand Presence MPEG audio file Rock Jimmy Page/Robert Plant 625502 20593955 0.99 1656 For Your Life Presence MPEG audio file Rock Jimmy Page/Robert Plant 384391 12633382 0.99 1657 Royal Orleans Presence MPEG audio file Rock John Bonham/John Paul Jones 179591 5930027 0.99 1658 Nobody's Fault But Mine Presence MPEG audio file Rock Jimmy Page/Robert Plant 376215 12237859 0.99 1659 Candy Store Rock Presence MPEG audio file Rock Jimmy Page/Robert Plant 252055 8397423 0.99 1660 Hots On For Nowhere Presence MPEG audio file Rock Jimmy Page/Robert Plant 284107 9342342 0.99 1661 Tea For One Presence MPEG audio file Rock Jimmy Page/Robert Plant 566752 18475264 0.99 1662 Rock & Roll The Song Remains The Same (Disc 1) MPEG audio file Rock John Bonham/John Paul Jones/Robert Plant 242442 7897065 0.99 1663 Celebration Day The Song Remains The Same (Disc 1) MPEG audio file Rock John Paul Jones/Robert Plant 230034 7478487 0.99 1664 The Song Remains The Same The Song Remains The Same (Disc 1) MPEG audio file Rock Robert Plant 353358 11465033 0.99 1665 Rain Song The Song Remains The Same (Disc 1) MPEG audio file Rock Robert Plant 505808 16273705 0.99 1666 Dazed And Confused The Song Remains The Same (Disc 1) MPEG audio file Rock Jimmy Page 1612329 52490554 0.99 1667 No Quarter The Song Remains The Same (Disc 2) MPEG audio file Rock John Paul Jones/Robert Plant 749897 24399285 0.99 1668 Stairway To Heaven The Song Remains The Same (Disc 2) MPEG audio file Rock Robert Plant 657293 21354766 0.99 1669 Moby Dick The Song Remains The Same (Disc 2) MPEG audio file Rock John Bonham/John Paul Jones 766354 25345841 0.99 1670 Whole Lotta Love The Song Remains The Same (Disc 2) MPEG audio file Rock John Bonham/John Paul Jones/Robert Plant/Willie Dixon 863895 28191437 0.99 1671 Natália A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo 235728 7640230 0.99 1672 L'Avventura A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo 278256 9165769 0.99 1673 Música De Trabalho A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo 260231 8590671 0.99 1674 Longe Do Meu Lado A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo - Marcelo Bonfá 266161 8655249 0.99 1675 A Via Láctea A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo 280084 9234879 0.99 1676 Música Ambiente A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo 247614 8234388 0.99 1677 Aloha A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo 325955 10793301 0.99 1678 Soul Parsifal A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo - Marisa Monte 295053 9853589 0.99 1680 Mil Pedaços A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo 203337 6643291 0.99 1681 Leila A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo 323056 10608239 0.99 1682 1º De Julho A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo 290298 9619257 0.99 1683 Esperando Por Mim A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo 261668 8844133 0.99 1684 Quando Você Voltar A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo 173897 5781046 0.99 1685 O Livro Dos Dias A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo 257253 8570929 0.99 1686 Será Mais Do Mesmo MPEG audio file Latin Dado Villa-Lobos/Marcelo Bonfá 148401 4826528 0.99 1687 Ainda É Cedo Mais Do Mesmo MPEG audio file Latin Dado Villa-Lobos/Ico Ouro-Preto/Marcelo Bonfá 236826 7796400 0.99 1688 Geração Coca-Cola Mais Do Mesmo MPEG audio file Latin Renato Russo 141453 4625731 0.99 1689 Eduardo E Mônica Mais Do Mesmo MPEG audio file Latin Renato Russo 271229 9026691 0.99 1690 Tempo Perdido Mais Do Mesmo MPEG audio file Latin Renato Russo 302158 9963914 0.99 1691 Indios Mais Do Mesmo MPEG audio file Latin Renato Russo 258168 8610226 0.99 1692 Que País É Este Mais Do Mesmo MPEG audio file Latin Renato Russo 177606 5822124 0.99 1693 Faroeste Caboclo Mais Do Mesmo MPEG audio file Latin Renato Russo 543007 18092739 0.99 1694 Há Tempos Mais Do Mesmo MPEG audio file Latin Dado Villa-Lobos/Marcelo Bonfá 197146 6432922 0.99 1695 Pais E Filhos Mais Do Mesmo MPEG audio file Latin Dado Villa-Lobos/Marcelo Bonfá 308401 10130685 0.99 1696 Meninos E Meninas Mais Do Mesmo MPEG audio file Latin Dado Villa-Lobos/Marcelo Bonfá 203781 6667802 0.99 1697 Vento No Litoral Mais Do Mesmo MPEG audio file Latin Dado Villa-Lobos/Marcelo Bonfá 366445 12063806 0.99 1698 Perfeição Mais Do Mesmo MPEG audio file Latin Dado Villa-Lobos/Marcelo Bonfá 276558 9258489 0.99 1699 Giz Mais Do Mesmo MPEG audio file Latin Dado Villa-Lobos/Marcelo Bonfá 202213 6677671 0.99 1700 Dezesseis Mais Do Mesmo MPEG audio file Latin Dado Villa-Lobos/Marcelo Bonfá 321724 10501773 0.99 1701 Antes Das Seis Mais Do Mesmo MPEG audio file Latin Dado Villa-Lobos 189231 6296531 0.99 1702 Are You Gonna Go My Way Greatest Hits MPEG audio file Rock Craig Ross/Lenny Kravitz 211591 6905135 0.99 1703 Fly Away Greatest Hits MPEG audio file Rock Lenny Kravitz 221962 7322085 0.99 1704 Rock And Roll Is Dead Greatest Hits MPEG audio file Rock Lenny Kravitz 204199 6680312 0.99 1705 Again Greatest Hits MPEG audio file Rock Lenny Kravitz 228989 7490476 0.99 1706 It Ain't Over 'Til It's Over Greatest Hits MPEG audio file Rock Lenny Kravitz 242703 8078936 0.99 1707 Can't Get You Off My Mind Greatest Hits MPEG audio file Rock Lenny Kravitz 273815 8937150 0.99 1708 Mr. Cab Driver Greatest Hits MPEG audio file Rock Lenny Kravitz 230321 7668084 0.99 1709 American Woman Greatest Hits MPEG audio file Rock B. Cummings/G. Peterson/M.J. Kale/R. Bachman 261773 8538023 0.99 1710 Stand By My Woman Greatest Hits MPEG audio file Rock Henry Kirssch/Lenny Kravitz/S. Pasch A. Krizan 259683 8447611 0.99 1711 Always On The Run Greatest Hits MPEG audio file Rock Lenny Kravitz/Slash 232515 7593397 0.99 1712 Heaven Help Greatest Hits MPEG audio file Rock Gerry DeVeaux/Terry Britten 190354 6222092 0.99 1713 I Belong To You Greatest Hits MPEG audio file Rock Lenny Kravitz 257123 8477980 0.99 1714 Believe Greatest Hits MPEG audio file Rock Henry Hirsch/Lenny Kravitz 295131 9661978 0.99 1715 Let Love Rule Greatest Hits MPEG audio file Rock Lenny Kravitz 342648 11298085 0.99 1716 Black Velveteen Greatest Hits MPEG audio file Rock Lenny Kravitz 290899 9531301 0.99 1717 Assim Caminha A Humanidade Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 210755 6993763 0.99 1718 Honolulu Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 261433 8558481 0.99 1719 Dancin´Days Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 237400 7875347 0.99 1720 Um Pro Outro Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 236382 7825215 0.99 1721 Aviso Aos Navegantes Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 242808 8058651 0.99 1722 Casa Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 307591 10107269 0.99 1723 Condição Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 263549 8778465 0.99 1724 Hyperconectividade Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 180636 5948039 0.99 1725 O Descobridor Dos Sete Mares Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 225854 7475780 0.99 1726 Satisfação Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 208065 6901681 0.99 1727 Brumário Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 216241 7243499 0.99 1728 Um Certo Alguém Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 194063 6430939 0.99 1729 Fullgás Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 346070 11505484 0.99 1730 Sábado À Noite Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 193854 6435114 0.99 1731 A Cura Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 280920 9260588 0.99 1732 Aquilo Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 246073 8167819 0.99 1733 Atrás Do Trio Elétrico Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 149080 4917615 0.99 1734 Senta A Pua Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 217547 7205844 0.99 1735 Ro-Que-Se-Da-Ne Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 146703 4805897 0.99 1736 Tudo Bem Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 196101 6419139 0.99 1737 Toda Forma De Amor Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 227813 7496584 0.99 1738 Tudo Igual Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 276035 9201645 0.99 1739 Fogo De Palha Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 246804 8133732 0.99 1740 Sereia Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 278047 9121087 0.99 1741 Assaltaram A Gramática Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 261041 8698959 0.99 1742 Se Você Pensa Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 195996 6552490 0.99 1743 Lá Vem O Sol (Here Comes The Sun) Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 189492 6229645 0.99 1744 O Último Romântico (Ao Vivo) Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 231993 7692697 0.99 1745 Pseudo Silk Kimono Misplaced Childhood MPEG audio file Rock Kelly, Mosley, Rothery, Trewaves 134739 4334038 0.99 1746 Kayleigh Misplaced Childhood MPEG audio file Rock Kelly, Mosley, Rothery, Trewaves 234605 7716005 0.99 1747 Lavender Misplaced Childhood MPEG audio file Rock Kelly, Mosley, Rothery, Trewaves 153417 4999814 0.99 1748 Bitter Suite: Brief Encounter / Lost Weekend / Blue Angel Misplaced Childhood MPEG audio file Rock Kelly, Mosley, Rothery, Trewaves 356493 11791068 0.99 1749 Heart Of Lothian: Wide Boy / Curtain Call Misplaced Childhood MPEG audio file Rock Kelly, Mosley, Rothery, Trewaves 366053 11893723 0.99 1750 Waterhole (Expresso Bongo) Misplaced Childhood MPEG audio file Rock Kelly, Mosley, Rothery, Trewaves 133093 4378835 0.99 1751 Lords Of The Backstage Misplaced Childhood MPEG audio file Rock Kelly, Mosley, Rothery, Trewaves 112875 3741319 0.99 1752 Blind Curve: Vocal Under A Bloodlight / Passing Strangers / Mylo / Perimeter Walk / Threshold Misplaced Childhood MPEG audio file Rock Kelly, Mosley, Rothery, Trewaves 569704 18578995 0.99 1753 Childhoods End? Misplaced Childhood MPEG audio file Rock Kelly, Mosley, Rothery, Trewaves 272796 9015366 0.99 1754 White Feather Misplaced Childhood MPEG audio file Rock Kelly, Mosley, Rothery, Trewaves 143595 4711776 0.99 1755 Arrepio Barulhinho Bom MPEG audio file Latin Carlinhos Brown 136254 4511390 0.99 1756 Magamalabares Barulhinho Bom MPEG audio file Latin Carlinhos Brown 215875 7183757 0.99 1757 Chuva No Brejo Barulhinho Bom MPEG audio file Latin Morais 145606 4857761 0.99 1758 Cérebro Eletrônico Barulhinho Bom MPEG audio file Latin Gilberto Gil 172800 5760864 0.99 1759 Tempos Modernos Barulhinho Bom MPEG audio file Latin Lulu Santos 183066 6066234 0.99 1760 Maraçá Barulhinho Bom MPEG audio file Latin Carlinhos Brown 230008 7621482 0.99 1988 Drain You From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 215196 7013175 0.99 1761 Blanco Barulhinho Bom MPEG audio file Latin Marisa Monte/poema de Octavio Paz/versão: Haroldo de Campos 45191 1454532 0.99 1762 Panis Et Circenses Barulhinho Bom MPEG audio file Latin Caetano Veloso e Gilberto Gil 192339 6318373 0.99 1763 De Noite Na Cama Barulhinho Bom MPEG audio file Latin Caetano Veloso e Gilberto Gil 209005 7012658 0.99 1764 Beija Eu Barulhinho Bom MPEG audio file Latin Caetano Veloso e Gilberto Gil 197276 6512544 0.99 1765 Give Me Love Barulhinho Bom MPEG audio file Latin Caetano Veloso e Gilberto Gil 249808 8196331 0.99 1766 Ainda Lembro Barulhinho Bom MPEG audio file Latin Caetano Veloso e Gilberto Gil 218801 7211247 0.99 1767 A Menina Dança Barulhinho Bom MPEG audio file Latin Caetano Veloso e Gilberto Gil 129410 4326918 0.99 1768 Dança Da Solidão Barulhinho Bom MPEG audio file Latin Caetano Veloso e Gilberto Gil 203520 6699368 0.99 1769 Ao Meu Redor Barulhinho Bom MPEG audio file Latin Caetano Veloso e Gilberto Gil 275591 9158834 0.99 1770 Bem Leve Barulhinho Bom MPEG audio file Latin Caetano Veloso e Gilberto Gil 159190 5246835 0.99 1771 Segue O Seco Barulhinho Bom MPEG audio file Latin Caetano Veloso e Gilberto Gil 178207 5922018 0.99 1772 O Xote Das Meninas Barulhinho Bom MPEG audio file Latin Caetano Veloso e Gilberto Gil 291866 9553228 0.99 1773 Wherever I Lay My Hat Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul \N 136986 4477321 0.99 1774 Get My Hands On Some Lovin' Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul \N 149054 4860380 0.99 1775 No Good Without You Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul William "Mickey" Stevenson 161410 5259218 0.99 1776 You've Been A Long Time Coming Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Brian Holland/Eddie Holland/Lamont Dozier 137221 4437949 0.99 1777 When I Had Your Love Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Robert Rogers/Warren "Pete" Moore/William "Mickey" Stevenson 152424 4972815 0.99 1778 You're What's Happening (In The World Today) Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Allen Story/George Gordy/Robert Gordy 142027 4631104 0.99 1779 Loving You Is Sweeter Than Ever Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Ivy Hunter/Stevie Wonder 166295 5377546 0.99 1780 It's A Bitter Pill To Swallow Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Smokey Robinson/Warren "Pete" Moore 194821 6477882 0.99 1781 Seek And You Shall Find Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Ivy Hunter/William "Mickey" Stevenson 223451 7306719 0.99 1782 Gonna Keep On Tryin' Till I Win Your Love Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Barrett Strong/Norman Whitfield 176404 5789945 0.99 1783 Gonna Give Her All The Love I've Got Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Barrett Strong/Norman Whitfield 210886 6893603 0.99 1784 I Wish It Would Rain Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Barrett Strong/Norman Whitfield/Roger Penzabene 172486 5647327 0.99 1785 Abraham, Martin And John Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Dick Holler 273057 8888206 0.99 1786 Save The Children Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Al Cleveland/Marvin Gaye/Renaldo Benson 194821 6342021 0.99 1787 You Sure Love To Ball Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Marvin Gaye 218540 7217872 0.99 1788 Ego Tripping Out Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Marvin Gaye 314514 10383887 0.99 1789 Praise Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Marvin Gaye 235833 7839179 0.99 1790 Heavy Love Affair Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Marvin Gaye 227892 7522232 0.99 1791 Down Under The Best Of Men At Work MPEG audio file Rock \N 222171 7366142 0.99 1792 Overkill The Best Of Men At Work MPEG audio file Rock \N 225410 7408652 0.99 1793 Be Good Johnny The Best Of Men At Work MPEG audio file Rock \N 216320 7139814 0.99 1794 Everything I Need The Best Of Men At Work MPEG audio file Rock \N 216476 7107625 0.99 1795 Down by the Sea The Best Of Men At Work MPEG audio file Rock \N 408163 13314900 0.99 1796 Who Can It Be Now? The Best Of Men At Work MPEG audio file Rock \N 202396 6682850 0.99 1797 It's a Mistake The Best Of Men At Work MPEG audio file Rock \N 273371 8979965 0.99 1798 Dr. Heckyll & Mr. Jive The Best Of Men At Work MPEG audio file Rock \N 278465 9110403 0.99 1799 Shakes and Ladders The Best Of Men At Work MPEG audio file Rock \N 198008 6560753 0.99 1800 No Sign of Yesterday The Best Of Men At Work MPEG audio file Rock \N 362004 11829011 0.99 1801 Enter Sandman Black Album MPEG audio file Metal James Hetfield, Lars Ulrich and Kirk Hammett 332251 10852002 0.99 1802 Sad But True Black Album MPEG audio file Metal Ulrich 324754 10541258 0.99 1803 Holier Than Thou Black Album MPEG audio file Metal Ulrich 227892 7462011 0.99 1804 The Unforgiven Black Album MPEG audio file Metal James Hetfield, Lars Ulrich and Kirk Hammett 387082 12646886 0.99 1805 Wherever I May Roam Black Album MPEG audio file Metal Ulrich 404323 13161169 0.99 1806 Don't Tread On Me Black Album MPEG audio file Metal Ulrich 240483 7827907 0.99 1807 Through The Never Black Album MPEG audio file Metal James Hetfield, Lars Ulrich and Kirk Hammett 244375 8024047 0.99 1808 Nothing Else Matters Black Album MPEG audio file Metal Ulrich 388832 12606241 0.99 1809 Of Wolf And Man Black Album MPEG audio file Metal James Hetfield, Lars Ulrich and Kirk Hammett 256835 8339785 0.99 1810 The God That Failed Black Album MPEG audio file Metal Ulrich 308610 10055959 0.99 1811 My Friend Of Misery Black Album MPEG audio file Metal James Hetfield, Lars Ulrich and Jason Newsted 409547 13293515 0.99 1812 The Struggle Within Black Album MPEG audio file Metal Ulrich 234240 7654052 0.99 1813 Helpless Garage Inc. (Disc 2) MPEG audio file Metal Harris/Tatler 398315 12977902 0.99 1814 The Small Hours Garage Inc. (Disc 2) MPEG audio file Metal Holocaust 403435 13215133 0.99 1815 The Wait Garage Inc. (Disc 2) MPEG audio file Metal Killing Joke 295418 9688418 0.99 1816 Crash Course In Brain Surgery Garage Inc. (Disc 2) MPEG audio file Metal Bourge/Phillips/Shelley 190406 6233729 0.99 1817 Last Caress/Green Hell Garage Inc. (Disc 2) MPEG audio file Metal Danzig 209972 6854313 0.99 1818 Am I Evil? Garage Inc. (Disc 2) MPEG audio file Metal Harris/Tatler 470256 15387219 0.99 1819 Blitzkrieg Garage Inc. (Disc 2) MPEG audio file Metal Jones/Sirotto/Smith 216685 7090018 0.99 1820 Breadfan Garage Inc. (Disc 2) MPEG audio file Metal Bourge/Phillips/Shelley 341551 11100130 0.99 1821 The Prince Garage Inc. (Disc 2) MPEG audio file Metal Harris/Tatler 265769 8624492 0.99 1822 Stone Cold Crazy Garage Inc. (Disc 2) MPEG audio file Metal Deacon/May/Mercury/Taylor 137717 4514830 0.99 1823 So What Garage Inc. (Disc 2) MPEG audio file Metal Culmer/Exalt 189152 6162894 0.99 1824 Killing Time Garage Inc. (Disc 2) MPEG audio file Metal Sweet Savage 183693 6021197 0.99 1825 Overkill Garage Inc. (Disc 2) MPEG audio file Metal Clarke/Kilmister/Tayler 245133 7971330 0.99 1826 Damage Case Garage Inc. (Disc 2) MPEG audio file Metal Clarke/Farren/Kilmister/Tayler 220212 7212997 0.99 1827 Stone Dead Forever Garage Inc. (Disc 2) MPEG audio file Metal Clarke/Kilmister/Tayler 292127 9556060 0.99 1828 Too Late Too Late Garage Inc. (Disc 2) MPEG audio file Metal Clarke/Kilmister/Tayler 192052 6276291 0.99 1829 Hit The Lights Kill 'Em All MPEG audio file Metal James Hetfield, Lars Ulrich 257541 8357088 0.99 1830 The Four Horsemen Kill 'Em All MPEG audio file Metal James Hetfield, Lars Ulrich, Dave Mustaine 433188 14178138 0.99 1831 Motorbreath Kill 'Em All MPEG audio file Metal James Hetfield 188395 6153933 0.99 1832 Jump In The Fire Kill 'Em All MPEG audio file Metal James Hetfield, Lars Ulrich, Dave Mustaine 281573 9135755 0.99 1833 (Anesthesia) Pulling Teeth Kill 'Em All MPEG audio file Metal Cliff Burton 254955 8234710 0.99 1834 Whiplash Kill 'Em All MPEG audio file Metal James Hetfield, Lars Ulrich 249208 8102839 0.99 1835 Phantom Lord Kill 'Em All MPEG audio file Metal James Hetfield, Lars Ulrich, Dave Mustaine 302053 9817143 0.99 1836 No Remorse Kill 'Em All MPEG audio file Metal James Hetfield, Lars Ulrich 386795 12672166 0.99 1989 Aneurysm From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Nirvana 271516 8862545 0.99 1837 Seek & Destroy Kill 'Em All MPEG audio file Metal James Hetfield, Lars Ulrich 415817 13452301 0.99 1838 Metal Militia Kill 'Em All MPEG audio file Metal James Hetfield, Lars Ulrich, Dave Mustaine 311327 10141785 0.99 1839 Ain't My Bitch Load MPEG audio file Metal James Hetfield, Lars Ulrich 304457 9931015 0.99 1840 2 X 4 Load MPEG audio file Metal James Hetfield, Lars Ulrich, Kirk Hammett 328254 10732251 0.99 1841 The House Jack Built Load MPEG audio file Metal James Hetfield, Lars Ulrich, Kirk Hammett 398942 13005152 0.99 1842 Until It Sleeps Load MPEG audio file Metal James Hetfield, Lars Ulrich 269740 8837394 0.99 1843 King Nothing Load MPEG audio file Metal James Hetfield, Lars Ulrich, Kirk Hammett 328097 10681477 0.99 1844 Hero Of The Day Load MPEG audio file Metal James Hetfield, Lars Ulrich, Kirk Hammett 261982 8540298 0.99 1845 Bleeding Me Load MPEG audio file Metal James Hetfield, Lars Ulrich, Kirk Hammett 497998 16249420 0.99 1846 Cure Load MPEG audio file Metal James Hetfield, Lars Ulrich 294347 9648615 0.99 1847 Poor Twisted Me Load MPEG audio file Metal James Hetfield, Lars Ulrich 240065 7854349 0.99 1848 Wasted My Hate Load MPEG audio file Metal James Hetfield, Lars Ulrich, Kirk Hammett 237296 7762300 0.99 1849 Mama Said Load MPEG audio file Metal James Hetfield, Lars Ulrich 319764 10508310 0.99 1850 Thorn Within Load MPEG audio file Metal James Hetfield, Lars Ulrich, Kirk Hammett 351738 11486686 0.99 1851 Ronnie Load MPEG audio file Metal James Hetfield, Lars Ulrich 317204 10390947 0.99 1852 The Outlaw Torn Load MPEG audio file Metal James Hetfield, Lars Ulrich 588721 19286261 0.99 1853 Battery Master Of Puppets MPEG audio file Metal J.Hetfield/L.Ulrich 312424 10229577 0.99 1854 Master Of Puppets Master Of Puppets MPEG audio file Metal K.Hammett 515239 16893720 0.99 1855 The Thing That Should Not Be Master Of Puppets MPEG audio file Metal K.Hammett 396199 12952368 0.99 1856 Welcome Home (Sanitarium) Master Of Puppets MPEG audio file Metal K.Hammett 387186 12679965 0.99 1857 Disposable Heroes Master Of Puppets MPEG audio file Metal J.Hetfield/L.Ulrich 496718 16135560 0.99 1858 Leper Messiah Master Of Puppets MPEG audio file Metal C.Burton 347428 11310434 0.99 1859 Orion Master Of Puppets MPEG audio file Metal K.Hammett 500062 16378477 0.99 1860 Damage Inc. Master Of Puppets MPEG audio file Metal K.Hammett 330919 10725029 0.99 1861 Fuel ReLoad MPEG audio file Metal Hetfield, Ulrich, Hammett 269557 8876811 0.99 1862 The Memory Remains ReLoad MPEG audio file Metal Hetfield, Ulrich 279353 9110730 0.99 1863 Devil's Dance ReLoad MPEG audio file Metal Hetfield, Ulrich 318955 10414832 0.99 1864 The Unforgiven II ReLoad MPEG audio file Metal Hetfield, Ulrich, Hammett 395520 12886474 0.99 1865 Better Than You ReLoad MPEG audio file Metal Hetfield, Ulrich 322899 10549070 0.99 1866 Slither ReLoad MPEG audio file Metal Hetfield, Ulrich, Hammett 313103 10199789 0.99 1867 Carpe Diem Baby ReLoad MPEG audio file Metal Hetfield, Ulrich, Hammett 372480 12170693 0.99 1868 Bad Seed ReLoad MPEG audio file Metal Hetfield, Ulrich, Hammett 245394 8019586 0.99 1869 Where The Wild Things Are ReLoad MPEG audio file Metal Hetfield, Ulrich, Newsted 414380 13571280 0.99 1870 Prince Charming ReLoad MPEG audio file Metal Hetfield, Ulrich 365061 12009412 0.99 1871 Low Man's Lyric ReLoad MPEG audio file Metal Hetfield, Ulrich 457639 14855583 0.99 1872 Attitude ReLoad MPEG audio file Metal Hetfield, Ulrich 315898 10335734 0.99 1873 Fixxxer ReLoad MPEG audio file Metal Hetfield, Ulrich, Hammett 496065 16190041 0.99 1874 Fight Fire With Fire Ride The Lightning MPEG audio file Metal Metallica 285753 9420856 0.99 1875 Ride The Lightning Ride The Lightning MPEG audio file Metal Metallica 397740 13055884 0.99 1876 For Whom The Bell Tolls Ride The Lightning MPEG audio file Metal Metallica 311719 10159725 0.99 1877 Fade To Black Ride The Lightning MPEG audio file Metal Metallica 414824 13531954 0.99 1878 Trapped Under Ice Ride The Lightning MPEG audio file Metal Metallica 244532 7975942 0.99 1879 Escape Ride The Lightning MPEG audio file Metal Metallica 264359 8652332 0.99 1880 Creeping Death Ride The Lightning MPEG audio file Metal Metallica 396878 12955593 0.99 1881 The Call Of Ktulu Ride The Lightning MPEG audio file Metal Metallica 534883 17486240 0.99 1882 Frantic St. Anger MPEG audio file Metal Bob Rock/James Hetfield/Kirk Hammett/Lars Ulrich 350458 11510849 0.99 1883 St. Anger St. Anger MPEG audio file Metal Bob Rock/James Hetfield/Kirk Hammett/Lars Ulrich 441234 14363779 0.99 1884 Some Kind Of Monster St. Anger MPEG audio file Metal Bob Rock/James Hetfield/Kirk Hammett/Lars Ulrich 505626 16557497 0.99 1885 Dirty Window St. Anger MPEG audio file Metal Bob Rock/James Hetfield/Kirk Hammett/Lars Ulrich 324989 10670604 0.99 1886 Invisible Kid St. Anger MPEG audio file Metal Bob Rock/James Hetfield/Kirk Hammett/Lars Ulrich 510197 16591800 0.99 1887 My World St. Anger MPEG audio file Metal Bob Rock/James Hetfield/Kirk Hammett/Lars Ulrich 345626 11253756 0.99 1888 Shoot Me Again St. Anger MPEG audio file Metal Bob Rock/James Hetfield/Kirk Hammett/Lars Ulrich 430210 14093551 0.99 1889 Sweet Amber St. Anger MPEG audio file Metal Bob Rock/James Hetfield/Kirk Hammett/Lars Ulrich 327235 10616595 0.99 1890 The Unnamed Feeling St. Anger MPEG audio file Metal Bob Rock/James Hetfield/Kirk Hammett/Lars Ulrich 429479 14014582 0.99 1891 Purify St. Anger MPEG audio file Metal Bob Rock/James Hetfield/Kirk Hammett/Lars Ulrich 314017 10232537 0.99 1892 All Within My Hands St. Anger MPEG audio file Metal Bob Rock/James Hetfield/Kirk Hammett/Lars Ulrich 527986 17162741 0.99 1893 Blackened ...And Justice For All MPEG audio file Metal James Hetfield, Lars Ulrich & Jason Newsted 403382 13254874 0.99 1894 ...And Justice For All ...And Justice For All MPEG audio file Metal James Hetfield, Lars Ulrich & Kirk Hammett 585769 19262088 0.99 1895 Eye Of The Beholder ...And Justice For All MPEG audio file Metal James Hetfield, Lars Ulrich & Kirk Hammett 385828 12747894 0.99 1896 One ...And Justice For All MPEG audio file Metal James Hetfield & Lars Ulrich 446484 14695721 0.99 1897 The Shortest Straw ...And Justice For All MPEG audio file Metal James Hetfield and Lars Ulrich 395389 13013990 0.99 1898 Harvester Of Sorrow ...And Justice For All MPEG audio file Metal James Hetfield and Lars Ulrich 345547 11377339 0.99 1899 The Frayed Ends Of Sanity ...And Justice For All MPEG audio file Metal James Hetfield, Lars Ulrich and Kirk Hammett 464039 15198986 0.99 1900 To Live Is To Die ...And Justice For All MPEG audio file Metal James Hetfield, Lars Ulrich and Cliff Burton 588564 19243795 0.99 1901 Dyers Eve ...And Justice For All MPEG audio file Metal James Hetfield, Lars Ulrich and Kirk Hammett 313991 10302828 0.99 1902 Springsville Miles Ahead MPEG audio file Jazz J. Carisi 207725 6776219 0.99 1903 The Maids Of Cadiz Miles Ahead MPEG audio file Jazz L. Delibes 233534 7505275 0.99 1904 The Duke Miles Ahead MPEG audio file Jazz Dave Brubeck 214961 6977626 0.99 1905 My Ship Miles Ahead MPEG audio file Jazz Ira Gershwin, Kurt Weill 268016 8581144 0.99 1906 Miles Ahead Miles Ahead MPEG audio file Jazz Miles Davis, Gil Evans 209893 6807707 0.99 1907 Blues For Pablo Miles Ahead MPEG audio file Jazz Gil Evans 318328 10218398 0.99 1908 New Rhumba Miles Ahead MPEG audio file Jazz A. Jamal 276871 8980400 0.99 1909 The Meaning Of The Blues Miles Ahead MPEG audio file Jazz R. Troup, L. Worth 168594 5395412 0.99 1910 Lament Miles Ahead MPEG audio file Jazz J.J. Johnson 134191 4293394 0.99 1911 I Don't Wanna Be Kissed (By Anyone But You) Miles Ahead MPEG audio file Jazz H. Spina, J. Elliott 191320 6219487 0.99 1912 Springsville (Alternate Take) Miles Ahead MPEG audio file Jazz J. Carisi 196388 6382079 0.99 1913 Blues For Pablo (Alternate Take) Miles Ahead MPEG audio file Jazz Gil Evans 212558 6900619 0.99 1914 The Meaning Of The Blues/Lament (Alternate Take) Miles Ahead MPEG audio file Jazz J.J. Johnson/R. Troup, L. Worth 309786 9912387 0.99 1915 I Don't Wanna Be Kissed (By Anyone But You) (Alternate Take) Miles Ahead MPEG audio file Jazz H. Spina, J. Elliott 192078 6254796 0.99 1916 Coração De Estudante Milton Nascimento Ao Vivo MPEG audio file Latin Wagner Tiso, Milton Nascimento 238550 7797308 0.99 1917 A Noite Do Meu Bem Milton Nascimento Ao Vivo MPEG audio file Latin Dolores Duran 220081 7125225 0.99 1918 Paisagem Na Janela Milton Nascimento Ao Vivo MPEG audio file Latin Lô Borges, Fernando Brant 197694 6523547 0.99 1919 Cuitelinho Milton Nascimento Ao Vivo MPEG audio file Latin Folclore 209397 6803970 0.99 1920 Caxangá Milton Nascimento Ao Vivo MPEG audio file Latin Milton Nascimento, Fernando Brant 245551 8144179 0.99 1921 Nos Bailes Da Vida Milton Nascimento Ao Vivo MPEG audio file Latin Milton Nascimento, Fernando Brant 275748 9126170 0.99 1922 Menestrel Das Alagoas Milton Nascimento Ao Vivo MPEG audio file Latin Milton Nascimento, Fernando Brant 199758 6542289 0.99 1923 Brasil Milton Nascimento Ao Vivo MPEG audio file Latin Milton Nascimento, Fernando Brant 155428 5252560 0.99 1924 Canção Do Novo Mundo Milton Nascimento Ao Vivo MPEG audio file Latin Beto Guedes, Ronaldo Bastos 215353 7032626 0.99 1925 Um Gosto De Sol Milton Nascimento Ao Vivo MPEG audio file Latin Milton Nascimento, Ronaldo Bastos 307200 9893875 0.99 1926 Solar Milton Nascimento Ao Vivo MPEG audio file Latin Milton Nascimento, Fernando Brant 156212 5098288 0.99 1927 Para Lennon E McCartney Milton Nascimento Ao Vivo MPEG audio file Latin Lô Borges, Márcio Borges, Fernando Brant 321828 10626920 0.99 1928 Maria, Maria Milton Nascimento Ao Vivo MPEG audio file Latin Milton Nascimento, Fernando Brant 72463 2371543 0.99 1929 Minas Minas MPEG audio file Latin Milton Nascimento, Caetano Veloso 152293 4921056 0.99 1930 Fé Cega, Faca Amolada Minas MPEG audio file Latin Milton Nascimento, Ronaldo Bastos 278099 9258649 0.99 1931 Beijo Partido Minas MPEG audio file Latin Toninho Horta 229564 7506969 0.99 1932 Saudade Dos Aviões Da Panair (Conversando No Bar) Minas MPEG audio file Latin Milton Nascimento, Fernando Brant 268721 8805088 0.99 1933 Gran Circo Minas MPEG audio file Latin Milton Nascimento, Márcio Borges 251297 8237026 0.99 1934 Ponta de Areia Minas MPEG audio file Latin Milton Nascimento, Fernando Brant 272796 8874285 0.99 1935 Trastevere Minas MPEG audio file Latin Milton Nascimento, Ronaldo Bastos 265665 8708399 0.99 1936 Idolatrada Minas MPEG audio file Latin Milton Nascimento, Fernando Brant 286249 9426153 0.99 1937 Leila (Venha Ser Feliz) Minas MPEG audio file Latin Milton Nascimento 209737 6898507 0.99 1938 Paula E Bebeto Minas MPEG audio file Latin Milton Nascimento, Caetano Veloso 135732 4583956 0.99 1939 Simples Minas MPEG audio file Latin Nelson Angelo 133093 4326333 0.99 1940 Norwegian Wood Minas MPEG audio file Latin John Lennon, Paul McCartney 413910 13520382 0.99 1941 Caso Você Queira Saber Minas MPEG audio file Latin Beto Guedes, Márcio Borges 205688 6787901 0.99 1942 Ace Of Spades Ace Of Spades MPEG audio file Metal Clarke/Kilmister/Taylor 169926 5523552 0.99 1943 Love Me Like A Reptile Ace Of Spades MPEG audio file Metal Clarke/Kilmister/Taylor 203546 6616389 0.99 1944 Shoot You In The Back Ace Of Spades MPEG audio file Metal Clarke/Kilmister/Taylor 160026 5175327 0.99 1945 Live To Win Ace Of Spades MPEG audio file Metal Clarke/Kilmister/Taylor 217626 7102182 0.99 1946 Fast And Loose Ace Of Spades MPEG audio file Metal Clarke/Kilmister/Taylor 203337 6643350 0.99 1947 (We Are) The Road Crew Ace Of Spades MPEG audio file Metal Clarke/Kilmister/Taylor 192600 6283035 0.99 1948 Fire Fire Ace Of Spades MPEG audio file Metal Clarke/Kilmister/Taylor 164675 5416114 0.99 1949 Jailbait Ace Of Spades MPEG audio file Metal Clarke/Kilmister/Taylor 213916 6983609 0.99 1950 Dance Ace Of Spades MPEG audio file Metal Clarke/Kilmister/Taylor 158432 5155099 0.99 1951 Bite The Bullet Ace Of Spades MPEG audio file Metal Clarke/Kilmister/Taylor 98115 3195536 0.99 1952 The Chase Is Better Than The Catch Ace Of Spades MPEG audio file Metal Clarke/Kilmister/Taylor 258403 8393310 0.99 1953 The Hammer Ace Of Spades MPEG audio file Metal Clarke/Kilmister/Taylor 168071 5543267 0.99 1954 Dirty Love Ace Of Spades MPEG audio file Metal Clarke/Kilmister/Taylor 176457 5805241 0.99 1955 Please Don't Touch Ace Of Spades MPEG audio file Metal Heath/Robinson 169926 5557002 0.99 1956 Emergency Ace Of Spades MPEG audio file Metal Dufort/Johnson/McAuliffe/Williams 180427 5828728 0.99 1957 Kir Royal Demorou... MPEG audio file World Mônica Marianno 234788 7706552 0.99 1958 O Que Vai Em Meu Coração Demorou... MPEG audio file World Mônica Marianno 255373 8366846 0.99 1959 Aos Leões Demorou... MPEG audio file World Mônica Marianno 234684 7790574 0.99 1960 Dois Índios Demorou... MPEG audio file World Mônica Marianno 219271 7213072 0.99 1961 Noite Negra Demorou... MPEG audio file World Mônica Marianno 206811 6819584 0.99 1962 Beijo do Olhar Demorou... MPEG audio file World Mônica Marianno 252682 8369029 0.99 1963 É Fogo Demorou... MPEG audio file World Mônica Marianno 194873 6501520 0.99 1964 Já Foi Demorou... MPEG audio file World Mônica Marianno 245681 8094872 0.99 1965 Só Se For Pelo Cabelo Demorou... MPEG audio file World Mônica Marianno 238288 8006345 0.99 1966 No Clima Demorou... MPEG audio file World Mônica Marianno 249495 8362040 0.99 1967 A Moça e a Chuva Demorou... MPEG audio file World Mônica Marianno 274625 8929357 0.99 1968 Demorou! Demorou... MPEG audio file World Mônica Marianno 39131 1287083 0.99 1969 Bitter Pill Motley Crue Greatest Hits MPEG audio file Metal Mick Mars/Nikki Sixx/Tommy Lee/Vince Neil 266814 8666786 0.99 1970 Enslaved Motley Crue Greatest Hits MPEG audio file Metal Mick Mars/Nikki Sixx/Tommy Lee 269844 8789966 0.99 1971 Girls, Girls, Girls Motley Crue Greatest Hits MPEG audio file Metal Mick Mars/Nikki Sixx/Tommy Lee 270288 8874814 0.99 1972 Kickstart My Heart Motley Crue Greatest Hits MPEG audio file Metal Nikki Sixx 283559 9237736 0.99 1973 Wild Side Motley Crue Greatest Hits MPEG audio file Metal Nikki Sixx/Tommy Lee/Vince Neil 276767 9116997 0.99 1974 Glitter Motley Crue Greatest Hits MPEG audio file Metal Bryan Adams/Nikki Sixx/Scott Humphrey 340114 11184094 0.99 1975 Dr. Feelgood Motley Crue Greatest Hits MPEG audio file Metal Mick Mars/Nikki Sixx 282618 9281875 0.99 1976 Same Ol' Situation Motley Crue Greatest Hits MPEG audio file Metal Mick Mars/Nikki Sixx/Tommy Lee/Vince Neil 254511 8283958 0.99 1977 Home Sweet Home Motley Crue Greatest Hits MPEG audio file Metal Nikki Sixx/Tommy Lee/Vince Neil 236904 7697538 0.99 1978 Afraid Motley Crue Greatest Hits MPEG audio file Metal Nikki Sixx 248006 8077464 0.99 1979 Don't Go Away Mad (Just Go Away) Motley Crue Greatest Hits MPEG audio file Metal Mick Mars/Nikki Sixx 279980 9188156 0.99 1980 Without You Motley Crue Greatest Hits MPEG audio file Metal Mick Mars/Nikki Sixx 268956 8738371 0.99 1981 Smokin' in The Boys Room Motley Crue Greatest Hits MPEG audio file Metal Cub Coda/Michael Lutz 206837 6735408 0.99 1982 Primal Scream Motley Crue Greatest Hits MPEG audio file Metal Mick Mars/Nikki Sixx/Tommy Lee/Vince Neil 286197 9421164 0.99 1983 Too Fast For Love Motley Crue Greatest Hits MPEG audio file Metal Nikki Sixx 200829 6580542 0.99 1984 Looks That Kill Motley Crue Greatest Hits MPEG audio file Metal Nikki Sixx 240979 7831122 0.99 1985 Shout At The Devil Motley Crue Greatest Hits MPEG audio file Metal Nikki Sixx 221962 7281974 0.99 1986 Intro From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 52218 1688527 0.99 1987 School From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 160235 5234885 0.99 1990 Smells Like Teen Spirit From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Nirvana 287190 9425215 0.99 1991 Been A Son From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 127555 4170369 0.99 1992 Lithium From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 250017 8148800 0.99 1993 Sliver From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 116218 3784567 0.99 1994 Spank Thru From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 190354 6186487 0.99 1995 Scentless Apprentice From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Nirvana 211200 6898177 0.99 1996 Heart-Shaped Box From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 281887 9210982 0.99 1997 Milk It From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 225724 7406945 0.99 1998 Negative Creep From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 163761 5354854 0.99 1999 Polly From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 149995 4885331 0.99 2000 Breed From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 208378 6759080 0.99 2001 Tourette's From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 115591 3753246 0.99 2002 Blew From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 216346 7096936 0.99 2003 Smells Like Teen Spirit Nevermind MPEG audio file Rock Kurt Cobain 301296 9823847 0.99 2004 In Bloom Nevermind MPEG audio file Rock Kurt Cobain 254928 8327077 0.99 2005 Come As You Are Nevermind MPEG audio file Rock Kurt Cobain 219219 7123357 0.99 2006 Breed Nevermind MPEG audio file Rock Kurt Cobain 183928 5984812 0.99 2007 Lithium Nevermind MPEG audio file Rock Kurt Cobain 256992 8404745 0.99 2008 Polly Nevermind MPEG audio file Rock Kurt Cobain 177031 5788407 0.99 2009 Territorial Pissings Nevermind MPEG audio file Rock Kurt Cobain 143281 4613880 0.99 2010 Drain You Nevermind MPEG audio file Rock Kurt Cobain 223973 7273440 0.99 2011 Lounge Act Nevermind MPEG audio file Rock Kurt Cobain 156786 5093635 0.99 2012 Stay Away Nevermind MPEG audio file Rock Kurt Cobain 212636 6956404 0.99 2013 On A Plain Nevermind MPEG audio file Rock Kurt Cobain 196440 6390635 0.99 2014 Something In The Way Nevermind MPEG audio file Rock Kurt Cobain 230556 7472168 0.99 2015 Time Compositores MPEG audio file Rock \N 96888 3124455 0.99 2016 P.S.Apareça Compositores MPEG audio file Rock \N 209188 6842244 0.99 2017 Sangue Latino Compositores MPEG audio file Rock \N 223033 7354184 0.99 2018 Folhas Secas Compositores MPEG audio file Rock \N 161253 5284522 0.99 2019 Poeira Compositores MPEG audio file Rock \N 267075 8784141 0.99 2020 Mágica Compositores MPEG audio file Rock \N 233743 7627348 0.99 2021 Quem Mata A Mulher Mata O Melhor Compositores MPEG audio file Rock \N 262791 8640121 0.99 2022 Mundaréu Compositores MPEG audio file Rock \N 217521 7158975 0.99 2023 O Braço Da Minha Guitarra Compositores MPEG audio file Rock \N 258351 8469531 0.99 2024 Deus Compositores MPEG audio file Rock \N 284160 9188110 0.99 2025 Mãe Terra Compositores MPEG audio file Rock \N 306625 9949269 0.99 2026 Às Vezes Compositores MPEG audio file Rock \N 330292 10706614 0.99 2027 Menino De Rua Compositores MPEG audio file Rock \N 329795 10784595 0.99 2028 Prazer E Fé Compositores MPEG audio file Rock \N 214831 7031383 0.99 2029 Elza Compositores MPEG audio file Rock \N 199105 6517629 0.99 2030 Requebra Olodum MPEG audio file Latin \N 240744 8010811 0.99 2031 Nossa Gente (Avisa Là) Olodum MPEG audio file Latin \N 188212 6233201 0.99 2032 Olodum - Alegria Geral Olodum MPEG audio file Latin \N 233404 7754245 0.99 2033 Madagáscar Olodum Olodum MPEG audio file Latin \N 252264 8270584 0.99 2034 Faraó Divindade Do Egito Olodum MPEG audio file Latin \N 228571 7523278 0.99 2035 Todo Amor (Asas Da Liberdade) Olodum MPEG audio file Latin \N 245133 8121434 0.99 2036 Denúncia Olodum MPEG audio file Latin \N 159555 5327433 0.99 2037 Olodum, A Banda Do Pelô Olodum MPEG audio file Latin \N 146599 4900121 0.99 2038 Cartao Postal Olodum MPEG audio file Latin \N 211565 7082301 0.99 2039 Jeito Faceiro Olodum MPEG audio file Latin \N 217286 7233608 0.99 2040 Revolta Olodum Olodum MPEG audio file Latin \N 230191 7557065 0.99 2041 Reggae Odoyá Olodum MPEG audio file Latin \N 224470 7499807 0.99 2042 Protesto Do Olodum (Ao Vivo) Olodum MPEG audio file Latin \N 206001 6766104 0.99 2043 Olodum - Smile (Instrumental) Olodum MPEG audio file Latin \N 235833 7871409 0.99 2044 Vulcão Dub - Fui Eu Acústico MTV MPEG audio file Latin Bi Ribeira/Herbert Vianna/João Barone 287059 9495202 0.99 2045 O Trem Da Juventude Acústico MTV MPEG audio file Latin Herbert Vianna 225880 7507655 0.99 2046 Manguetown Acústico MTV MPEG audio file Latin Chico Science/Dengue/Lúcio Maia 162925 5382018 0.99 2047 Um Amor, Um Lugar Acústico MTV MPEG audio file Latin Herbert Vianna 184555 6090334 0.99 2048 Bora-Bora Acústico MTV MPEG audio file Latin Herbert Vianna 182987 6036046 0.99 2049 Vai Valer Acústico MTV MPEG audio file Latin Herbert Vianna 206524 6899778 0.99 2050 I Feel Good (I Got You) - Sossego Acústico MTV MPEG audio file Latin James Brown/Tim Maia 244976 8091302 0.99 2051 Uns Dias Acústico MTV MPEG audio file Latin Herbert Vianna 240796 7931552 0.99 2052 Sincero Breu Acústico MTV MPEG audio file Latin C. A./C.A./Celso Alvim/Herbert Vianna/Mário Moura/Pedro Luís/Sidon Silva 208013 6921669 0.99 2053 Meu Erro Acústico MTV MPEG audio file Latin Herbert Vianna 188577 6192791 0.99 2054 Selvagem Acústico MTV MPEG audio file Latin Bi Ribeiro/Herbert Vianna/João Barone 148558 4942831 0.99 2055 Brasília 5:31 Acústico MTV MPEG audio file Latin Herbert Vianna 178337 5857116 0.99 2056 Tendo A Lua Acústico MTV MPEG audio file Latin Herbert Vianna/Tet Tillett 198922 6568180 0.99 2057 Que País É Este Acústico MTV MPEG audio file Latin Renato Russo 216685 7137865 0.99 2058 Navegar Impreciso Acústico MTV MPEG audio file Latin Herbert Vianna 262870 8761283 0.99 2059 Feira Moderna Acústico MTV MPEG audio file Latin Beto Guedes/Fernando Brant/L Borges 182517 6001793 0.99 2060 Tequila - Lourinha Bombril (Parate Y Mira) Acústico MTV MPEG audio file Latin Bahiano/Chuck Rio/Diego Blanco/Herbert Vianna 255738 8514961 0.99 2061 Vamo Batê Lata Acústico MTV MPEG audio file Latin Herbert Vianna 228754 7585707 0.99 2062 Life During Wartime Acústico MTV MPEG audio file Latin Chris Frantz/David Byrne/Jerry Harrison/Tina Weymouth 259186 8543439 0.99 2063 Nebulosa Do Amor Acústico MTV MPEG audio file Latin Herbert Vianna 203415 6732496 0.99 2064 Caleidoscópio Acústico MTV MPEG audio file Latin Herbert Vianna 256522 8484597 0.99 2065 Trac Trac Arquivo II MPEG audio file Latin Fito Paez/Herbert Vianna 231653 7638256 0.99 2066 Tendo A Lua Arquivo II MPEG audio file Latin Herbert Vianna/Tetê Tillet 219585 7342776 0.99 2067 Mensagen De Amor (2000) Arquivo II MPEG audio file Latin Herbert Vianna 183588 6061324 0.99 2068 Lourinha Bombril Arquivo II MPEG audio file Latin Bahiano/Diego Blanco/Herbert Vianna 159895 5301882 0.99 2069 La Bella Luna Arquivo II MPEG audio file Latin Herbert Vianna 192653 6428598 0.99 2070 Busca Vida Arquivo II MPEG audio file Latin Herbert Vianna 176431 5798663 0.99 2071 Uma Brasileira Arquivo II MPEG audio file Latin Carlinhos Brown/Herbert Vianna 217573 7280574 0.99 2072 Luis Inacio (300 Picaretas) Arquivo II MPEG audio file Latin Herbert Vianna 198191 6576790 0.99 2073 Saber Amar Arquivo II MPEG audio file Latin Herbert Vianna 202788 6723733 0.99 2074 Ela Disse Adeus Arquivo II MPEG audio file Latin Herbert Vianna 226298 7608999 0.99 2075 O Amor Nao Sabe Esperar Arquivo II MPEG audio file Latin Herbert Vianna 241084 8042534 0.99 2076 Aonde Quer Que Eu Va Arquivo II MPEG audio file Latin Herbert Vianna/Paulo Sérgio Valle 258089 8470121 0.99 2077 Caleidoscópio Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 211330 7000017 0.99 2078 Óculos Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 219271 7262419 0.99 2079 Cinema Mudo Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 227918 7612168 0.99 2080 Alagados Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 302393 10255463 0.99 2081 Lanterna Dos Afogados Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 190197 6264318 0.99 2082 Melô Do Marinheiro Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 208352 6905668 0.99 2083 Vital E Sua Moto Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 210207 6902878 0.99 2084 O Beco Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 189178 6293184 0.99 2085 Meu Erro Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 208431 6893533 0.99 2086 Perplexo Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 161175 5355013 0.99 2087 Me Liga Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 229590 7565912 0.99 2088 Quase Um Segundo Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 275644 8971355 0.99 2089 Selvagem Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 245890 8141084 0.99 2090 Romance Ideal Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 250070 8260477 0.99 2091 Será Que Vai Chover? Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 337057 11133830 0.99 2092 SKA Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 148871 4943540 0.99 2093 Bark at the Moon Bark at the Moon (Remastered) Protected AAC audio file Rock O. Osbourne 257252 4601224 0.99 2094 I Don't Know Blizzard of Ozz Protected AAC audio file Rock B. Daisley, O. Osbourne & R. Rhoads 312980 5525339 0.99 2095 Crazy Train Blizzard of Ozz Protected AAC audio file Rock B. Daisley, O. Osbourne & R. Rhoads 295960 5255083 0.99 2096 Flying High Again Diary of a Madman (Remastered) Protected AAC audio file Rock L. Kerslake, O. Osbourne, R. Daisley & R. Rhoads 290851 5179599 0.99 2097 Mama, I'm Coming Home No More Tears (Remastered) Protected AAC audio file Rock L. Kilmister, O. Osbourne & Z. Wylde 251586 4302390 0.99 2098 No More Tears No More Tears (Remastered) Protected AAC audio file Rock J. Purdell, M. Inez, O. Osbourne, R. Castillo & Z. Wylde 444358 7362964 0.99 2099 I Don't Know Tribute MPEG audio file Metal O. Osbourne, R. Daisley, R. Rhoads 283088 9207869 0.99 2100 Crazy Train Tribute MPEG audio file Metal O. Osbourne, R. Daisley, R. Rhoads 322716 10517408 0.99 2101 Believer Tribute MPEG audio file Metal O. Osbourne, R. Daisley, R. Rhoads 308897 10003794 0.99 2102 Mr. Crowley Tribute MPEG audio file Metal O. Osbourne, R. Daisley, R. Rhoads 344241 11184130 0.99 2103 Flying High Again Tribute MPEG audio file Metal O. Osbourne, R. Daisley, R. Rhoads, L. Kerslake 261224 8481822 0.99 2104 Relvelation (Mother Earth) Tribute MPEG audio file Metal O. Osbourne, R. Daisley, R. Rhoads 349440 11367866 0.99 2105 Steal Away (The Night) Tribute MPEG audio file Metal O. Osbourne, R. Daisley, R. Rhoads 485720 15945806 0.99 2106 Suicide Solution (With Guitar Solo) Tribute MPEG audio file Metal O. Osbourne, R. Daisley, R. Rhoads 467069 15119938 0.99 2107 Iron Man Tribute MPEG audio file Metal A. F. Iommi, W. Ward, T. Butler, J. Osbourne 172120 5609799 0.99 2108 Children Of The Grave Tribute MPEG audio file Metal A. F. Iommi, W. Ward, T. Butler, J. Osbourne 357067 11626740 0.99 2109 Paranoid Tribute MPEG audio file Metal A. F. Iommi, W. Ward, T. Butler, J. Osbourne 176352 5729813 0.99 2110 Goodbye To Romance Tribute MPEG audio file Metal O. Osbourne, R. Daisley, R. Rhoads 334393 10841337 0.99 2111 No Bone Movies Tribute MPEG audio file Metal O. Osbourne, R. Daisley, R. Rhoads 249208 8095199 0.99 2112 Dee Tribute MPEG audio file Metal R. Rhoads 261302 8555963 0.99 2113 Shining In The Light Walking Into Clarksdale MPEG audio file Rock Jimmy Page, Robert Plant, Charlie Jones, Michael Lee 240796 7951688 0.99 2114 When The World Was Young Walking Into Clarksdale MPEG audio file Rock Jimmy Page, Robert Plant, Charlie Jones, Michael Lee 373394 12198930 0.99 2115 Upon A Golden Horse Walking Into Clarksdale MPEG audio file Rock Jimmy Page, Robert Plant, Charlie Jones, Michael Lee 232359 7594829 0.99 2116 Blue Train Walking Into Clarksdale MPEG audio file Rock Jimmy Page, Robert Plant, Charlie Jones, Michael Lee 405028 13170391 0.99 2117 Please Read The Letter Walking Into Clarksdale MPEG audio file Rock Jimmy Page, Robert Plant, Charlie Jones, Michael Lee 262112 8603372 0.99 2118 Most High Walking Into Clarksdale MPEG audio file Rock Jimmy Page, Robert Plant, Charlie Jones, Michael Lee 336535 10999203 0.99 2119 Heart In Your Hand Walking Into Clarksdale MPEG audio file Rock Jimmy Page, Robert Plant, Charlie Jones, Michael Lee 230896 7598019 0.99 2120 Walking Into Clarksdale Walking Into Clarksdale MPEG audio file Rock Jimmy Page, Robert Plant, Charlie Jones, Michael Lee 318511 10396315 0.99 2121 Burning Up Walking Into Clarksdale MPEG audio file Rock Jimmy Page, Robert Plant, Charlie Jones, Michael Lee 321619 10525136 0.99 2122 When I Was A Child Walking Into Clarksdale MPEG audio file Rock Jimmy Page, Robert Plant, Charlie Jones, Michael Lee 345626 11249456 0.99 2123 House Of Love Walking Into Clarksdale MPEG audio file Rock Jimmy Page, Robert Plant, Charlie Jones, Michael Lee 335699 10990880 0.99 2124 Sons Of Freedom Walking Into Clarksdale MPEG audio file Rock Jimmy Page, Robert Plant, Charlie Jones, Michael Lee 246465 8087944 0.99 2125 United Colours Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 330266 10939131 0.99 2126 Slug Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 281469 9295950 0.99 2127 Your Blue Room Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 328228 10867860 0.99 2128 Always Forever Now Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 383764 12727928 0.99 2129 A Different Kind Of Blue Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 120816 3884133 0.99 2130 Beach Sequence Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 212297 6928259 0.99 2131 Miss Sarajevo Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 340767 11064884 0.99 2132 Ito Okashi Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 205087 6572813 0.99 2133 One Minute Warning Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 279693 9335453 0.99 2134 Corpse (These Chains Are Way Too Long) Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 214909 6920451 0.99 2135 Elvis Ate America Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 180166 5851053 0.99 2136 Plot 180 Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 221596 7253729 0.99 2137 Theme From The Swan Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 203911 6638076 0.99 2138 Theme From Let's Go Native Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 186723 6179777 0.99 2139 Wrathchild The Beast Live MPEG audio file Rock Steve Harris 170396 5499390 0.99 2140 Killers The Beast Live MPEG audio file Rock Paul Di'Anno/Steve Harris 309995 10009697 0.99 2141 Prowler The Beast Live MPEG audio file Rock Steve Harris 240274 7782963 0.99 2142 Murders In The Rue Morgue The Beast Live MPEG audio file Rock Steve Harris 258638 8360999 0.99 2143 Women In Uniform The Beast Live MPEG audio file Rock Greg Macainsh 189936 6139651 0.99 2144 Remember Tomorrow The Beast Live MPEG audio file Rock Paul Di'Anno/Steve Harris 326426 10577976 0.99 2145 Sanctuary The Beast Live MPEG audio file Rock David Murray/Paul Di'Anno/Steve Harris 198844 6423543 0.99 2146 Running Free The Beast Live MPEG audio file Rock Paul Di'Anno/Steve Harris 199706 6483496 0.99 2147 Phantom Of The Opera The Beast Live MPEG audio file Rock Steve Harris 418168 13585530 0.99 2148 Iron Maiden The Beast Live MPEG audio file Rock Steve Harris 235232 7600077 0.99 2149 Corduroy Live On Two Legs [Live] MPEG audio file Rock Pearl Jam & Eddie Vedder 305293 9991106 0.99 2150 Given To Fly Live On Two Legs [Live] MPEG audio file Rock Eddie Vedder & Mike McCready 233613 7678347 0.99 2151 Hail, Hail Live On Two Legs [Live] MPEG audio file Rock Stone Gossard & Eddie Vedder & Jeff Ament & Mike McCready 223764 7364206 0.99 2152 Daughter Live On Two Legs [Live] MPEG audio file Rock Dave Abbruzzese & Jeff Ament & Stone Gossard & Mike McCready & Eddie Vedder 407484 13420697 0.99 2153 Elderly Woman Behind The Counter In A Small Town Live On Two Legs [Live] MPEG audio file Rock Dave Abbruzzese & Jeff Ament & Stone Gossard & Mike McCready & Eddie Vedder 229328 7509304 0.99 2154 Untitled Live On Two Legs [Live] MPEG audio file Rock Pearl Jam 122801 3957141 0.99 2155 MFC Live On Two Legs [Live] MPEG audio file Rock Eddie Vedder 148192 4817665 0.99 2156 Go Live On Two Legs [Live] MPEG audio file Rock Dave Abbruzzese & Jeff Ament & Stone Gossard & Mike McCready & Eddie Vedder 161541 5290810 0.99 2157 Red Mosquito Live On Two Legs [Live] MPEG audio file Rock Jeff Ament & Stone Gossard & Jack Irons & Mike McCready & Eddie Vedder 242991 7944923 0.99 2158 Even Flow Live On Two Legs [Live] MPEG audio file Rock Stone Gossard & Eddie Vedder 317100 10394239 0.99 2159 Off He Goes Live On Two Legs [Live] MPEG audio file Rock Eddie Vedder 343222 11245109 0.99 2160 Nothingman Live On Two Legs [Live] MPEG audio file Rock Jeff Ament & Eddie Vedder 278595 9107017 0.99 2161 Do The Evolution Live On Two Legs [Live] MPEG audio file Rock Eddie Vedder & Stone Gossard 225462 7377286 0.99 2162 Better Man Live On Two Legs [Live] MPEG audio file Rock Eddie Vedder 246204 8019563 0.99 2163 Black Live On Two Legs [Live] MPEG audio file Rock Stone Gossard & Eddie Vedder 415712 13580009 0.99 2164 F*Ckin' Up Live On Two Legs [Live] MPEG audio file Rock Neil Young 377652 12360893 0.99 2165 Life Wasted Pearl Jam MPEG audio file Alternative & Punk Stone Gossard 234344 7610169 0.99 2166 World Wide Suicide Pearl Jam MPEG audio file Alternative & Punk Eddie Vedder 209188 6885908 0.99 2167 Comatose Pearl Jam MPEG audio file Alternative & Punk Mike McCready & Stone Gossard 139990 4574516 0.99 2168 Severed Hand Pearl Jam MPEG audio file Alternative & Punk Eddie Vedder 270341 8817438 0.99 2169 Marker In The Sand Pearl Jam MPEG audio file Alternative & Punk Mike McCready 263235 8656578 0.99 2170 Parachutes Pearl Jam MPEG audio file Alternative & Punk Stone Gossard 216555 7074973 0.99 2171 Unemployable Pearl Jam MPEG audio file Alternative & Punk Matt Cameron & Mike McCready 184398 6066542 0.99 2172 Big Wave Pearl Jam MPEG audio file Alternative & Punk Jeff Ament 178573 5858788 0.99 2173 Gone Pearl Jam MPEG audio file Alternative & Punk Eddie Vedder 249547 8158204 0.99 2174 Wasted Reprise Pearl Jam MPEG audio file Alternative & Punk Stone Gossard 53733 1731020 0.99 2175 Army Reserve Pearl Jam MPEG audio file Alternative & Punk Jeff Ament 225567 7393771 0.99 2176 Come Back Pearl Jam MPEG audio file Alternative & Punk Eddie Vedder & Mike McCready 329743 10768701 0.99 2177 Inside Job Pearl Jam MPEG audio file Alternative & Punk Eddie Vedder & Mike McCready 428643 14006924 0.99 2178 Can't Keep Riot Act MPEG audio file Rock Eddie Vedder 219428 7215713 0.99 2179 Save You Riot Act MPEG audio file Rock Eddie Vedder/Jeff Ament/Matt Cameron/Mike McCready/Stone Gossard 230112 7609110 0.99 2180 Love Boat Captain Riot Act MPEG audio file Rock Eddie Vedder 276453 9016789 0.99 2181 Cropduster Riot Act MPEG audio file Rock Matt Cameron 231888 7588928 0.99 2182 Ghost Riot Act MPEG audio file Rock Jeff Ament 195108 6383772 0.99 2183 I Am Mine Riot Act MPEG audio file Rock Eddie Vedder 215719 7086901 0.99 2184 Thumbing My Way Riot Act MPEG audio file Rock Eddie Vedder 250226 8201437 0.99 2185 You Are Riot Act MPEG audio file Rock Matt Cameron 270863 8938409 0.99 2186 Get Right Riot Act MPEG audio file Rock Matt Cameron 158589 5223345 0.99 2187 Green Disease Riot Act MPEG audio file Rock Eddie Vedder 161253 5375818 0.99 2188 Help Help Riot Act MPEG audio file Rock Jeff Ament 215092 7033002 0.99 2189 Bushleager Riot Act MPEG audio file Rock Stone Gossard 237479 7849757 0.99 2190 1/2 Full Riot Act MPEG audio file Rock Jeff Ament 251010 8197219 0.99 2191 Arc Riot Act MPEG audio file Rock Pearl Jam 65593 2099421 0.99 2192 All or None Riot Act MPEG audio file Rock Stone Gossard 277655 9104728 0.99 2193 Once Ten MPEG audio file Rock Stone Gossard 231758 7561555 0.99 2194 Evenflow Ten MPEG audio file Rock Stone Gossard 293720 9622017 0.99 2195 Alive Ten MPEG audio file Rock Stone Gossard 341080 11176623 0.99 2196 Why Go Ten MPEG audio file Rock Jeff Ament 200254 6539287 0.99 2197 Black Ten MPEG audio file Rock Dave Krusen/Stone Gossard 343823 11213314 0.99 2198 Jeremy Ten MPEG audio file Rock Jeff Ament 318981 10447222 0.99 2199 Oceans Ten MPEG audio file Rock Jeff Ament/Stone Gossard 162194 5282368 0.99 2200 Porch Ten MPEG audio file Rock Eddie Vedder 210520 6877475 0.99 2201 Garden Ten MPEG audio file Rock Jeff Ament/Stone Gossard 299154 9740738 0.99 2202 Deep Ten MPEG audio file Rock Jeff Ament/Stone Gossard 258324 8432497 0.99 2203 Release Ten MPEG audio file Rock Jeff Ament/Mike McCready/Stone Gossard 546063 17802673 0.99 2204 Go Vs. MPEG audio file Rock Dave Abbruzzese/Eddie Vedder/Jeff Ament/Mike McCready/Stone Gossard 193123 6351920 0.99 2205 Animal Vs. MPEG audio file Rock Dave Abbruzzese/Eddie Vedder/Jeff Ament/Mike McCready/Stone Gossard 169325 5503459 0.99 2206 Daughter Vs. MPEG audio file Rock Dave Abbruzzese/Eddie Vedder/Jeff Ament/Mike McCready/Stone Gossard 235598 7824586 0.99 2207 Glorified G Vs. MPEG audio file Rock Dave Abbruzzese/Eddie Vedder/Jeff Ament/Mike McCready/Stone Gossard 206968 6772116 0.99 2208 Dissident Vs. MPEG audio file Rock Dave Abbruzzese/Eddie Vedder/Jeff Ament/Mike McCready/Stone Gossard 215510 7034500 0.99 2209 W.M.A. Vs. MPEG audio file Rock Dave Abbruzzese/Eddie Vedder/Jeff Ament/Mike McCready/Stone Gossard 359262 12037261 0.99 2210 Blood Vs. MPEG audio file Rock Dave Abbruzzese/Eddie Vedder/Jeff Ament/Mike McCready/Stone Gossard 170631 5551478 0.99 2211 Rearviewmirror Vs. MPEG audio file Rock Dave Abbruzzese/Eddie Vedder/Jeff Ament/Mike McCready/Stone Gossard 284186 9321053 0.99 2212 Rats Vs. MPEG audio file Rock Dave Abbruzzese/Eddie Vedder/Jeff Ament/Mike McCready/Stone Gossard 255425 8341934 0.99 2213 Elderly Woman Behind The Counter In A Small Town Vs. MPEG audio file Rock Dave Abbruzzese/Eddie Vedder/Jeff Ament/Mike McCready/Stone Gossard 196336 6499398 0.99 2214 Leash Vs. MPEG audio file Rock Dave Abbruzzese/Eddie Vedder/Jeff Ament/Mike McCready/Stone Gossard 189257 6191560 0.99 2215 Indifference Vs. MPEG audio file Rock Dave Abbruzzese/Eddie Vedder/Jeff Ament/Mike McCready/Stone Gossard 302053 9756133 0.99 2216 Johnny B. Goode Greatest Hits MPEG audio file Reggae \N 243200 8092024 0.99 2217 Don't Look Back Greatest Hits MPEG audio file Reggae \N 221100 7344023 0.99 2218 Jah Seh No Greatest Hits MPEG audio file Reggae \N 276871 9134476 0.99 2219 I'm The Toughest Greatest Hits MPEG audio file Reggae \N 230191 7657594 0.99 2220 Nothing But Love Greatest Hits MPEG audio file Reggae \N 221570 7335228 0.99 2221 Buk-In-Hamm Palace Greatest Hits MPEG audio file Reggae \N 265665 8964369 0.99 2222 Bush Doctor Greatest Hits MPEG audio file Reggae \N 239751 7942299 0.99 2223 Wanted Dread And Alive Greatest Hits MPEG audio file Reggae \N 260310 8670933 0.99 2224 Mystic Man Greatest Hits MPEG audio file Reggae \N 353671 11812170 0.99 2225 Coming In Hot Greatest Hits MPEG audio file Reggae \N 213054 7109414 0.99 2226 Pick Myself Up Greatest Hits MPEG audio file Reggae \N 234684 7788255 0.99 2227 Crystal Ball Greatest Hits MPEG audio file Reggae \N 309733 10319296 0.99 2228 Equal Rights Downpresser Man Greatest Hits MPEG audio file Reggae \N 366733 12086524 0.99 2229 Speak To Me/Breathe Dark Side Of The Moon MPEG audio file Rock Mason/Waters, Gilmour, Wright 234213 7631305 0.99 2230 On The Run Dark Side Of The Moon MPEG audio file Rock Gilmour, Waters 214595 7206300 0.99 2231 Time Dark Side Of The Moon MPEG audio file Rock Mason, Waters, Wright, Gilmour 425195 13955426 0.99 2232 The Great Gig In The Sky Dark Side Of The Moon MPEG audio file Rock Wright, Waters 284055 9147563 0.99 2233 Money Dark Side Of The Moon MPEG audio file Rock Waters 391888 12930070 0.99 2234 Us And Them Dark Side Of The Moon MPEG audio file Rock Waters, Wright 461035 15000299 0.99 2235 Any Colour You Like Dark Side Of The Moon MPEG audio file Rock Gilmour, Mason, Wright, Waters 205740 6707989 0.99 2236 Brain Damage Dark Side Of The Moon MPEG audio file Rock Waters 230556 7497655 0.99 2237 Eclipse Dark Side Of The Moon MPEG audio file Rock Waters 125361 4065299 0.99 2238 ZeroVinteUm Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 315637 10426550 0.99 2239 Queimando Tudo Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 172591 5723677 0.99 2240 Hip Hop Rio Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 151536 4991935 0.99 2241 Bossa Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 29048 967098 0.99 2242 100% HardCore Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 165146 5407744 0.99 2243 Biruta Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 213263 7108200 0.99 2244 Mão Na Cabeça Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 202631 6642753 0.99 2245 O Bicho Tá Pregando Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 171964 5683369 0.99 2246 Adoled (Ocean) Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 185103 6009946 0.99 2247 Seus Amigos Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 100858 3304738 0.99 2248 Paga Pau Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 197485 6529041 0.99 2249 Rappers Reais Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 202004 6684160 0.99 2250 Nega Do Cabelo Duro Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 121808 4116536 0.99 2251 Hemp Family Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 205923 6806900 0.99 2252 Quem Me Cobrou? Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 121704 3947664 0.99 2253 Se Liga Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 410409 13559173 0.99 2254 Bohemian Rhapsody Greatest Hits I MPEG audio file Rock Mercury, Freddie 358948 11619868 0.99 2255 Another One Bites The Dust Greatest Hits I MPEG audio file Rock Deacon, John 216946 7172355 0.99 2256 Killer Queen Greatest Hits I MPEG audio file Rock Mercury, Freddie 182099 5967749 0.99 2257 Fat Bottomed Girls Greatest Hits I MPEG audio file Rock May, Brian 204695 6630041 0.99 2258 Bicycle Race Greatest Hits I MPEG audio file Rock Mercury, Freddie 183823 6012409 0.99 2259 You're My Best Friend Greatest Hits I MPEG audio file Rock Deacon, John 172225 5602173 0.99 2260 Don't Stop Me Now Greatest Hits I MPEG audio file Rock Mercury, Freddie 211826 6896666 0.99 2261 Save Me Greatest Hits I MPEG audio file Rock May, Brian 228832 7444624 0.99 2262 Crazy Little Thing Called Love Greatest Hits I MPEG audio file Rock Mercury, Freddie 164231 5435501 0.99 2263 Somebody To Love Greatest Hits I MPEG audio file Rock Mercury, Freddie 297351 9650520 0.99 2264 Now I'm Here Greatest Hits I MPEG audio file Rock May, Brian 255346 8328312 0.99 2265 Good Old-Fashioned Lover Boy Greatest Hits I MPEG audio file Rock Mercury, Freddie 175960 5747506 0.99 2266 Play The Game Greatest Hits I MPEG audio file Rock Mercury, Freddie 213368 6915832 0.99 2267 Flash Greatest Hits I MPEG audio file Rock May, Brian 168489 5464986 0.99 2268 Seven Seas Of Rhye Greatest Hits I MPEG audio file Rock Mercury, Freddie 170553 5539957 0.99 2269 We Will Rock You Greatest Hits I MPEG audio file Rock Deacon, John/May, Brian 122880 4026955 0.99 2270 We Are The Champions Greatest Hits I MPEG audio file Rock Mercury, Freddie 180950 5880231 0.99 2271 We Will Rock You News Of The World MPEG audio file Rock May 122671 4026815 0.99 2272 We Are The Champions News Of The World MPEG audio file Rock Mercury 182883 5939794 0.99 2273 Sheer Heart Attack News Of The World MPEG audio file Rock Taylor 207386 6642685 0.99 2274 All Dead, All Dead News Of The World MPEG audio file Rock May 190119 6144878 0.99 2275 Spread Your Wings News Of The World MPEG audio file Rock Deacon 275356 8936992 0.99 2276 Fight From The Inside News Of The World MPEG audio file Rock Taylor 184737 6078001 0.99 2277 Get Down, Make Love News Of The World MPEG audio file Rock Mercury 231235 7509333 0.99 2278 Sleep On The Sidewalk News Of The World MPEG audio file Rock May 187428 6099840 0.99 2279 Who Needs You News Of The World MPEG audio file Rock Deacon 186958 6292969 0.99 2280 It's Late News Of The World MPEG audio file Rock May 386194 12519388 0.99 2281 My Melancholy Blues News Of The World MPEG audio file Rock Mercury 206471 6691838 0.99 2282 Shiny Happy People Out Of Time MPEG audio file Alternative & Punk Bill Berry/Michael Stipe/Mike Mills/Peter Buck 226298 7475323 0.99 2283 Me In Honey Out Of Time MPEG audio file Alternative & Punk Bill Berry/Michael Stipe/Mike Mills/Peter Buck 246674 8194751 0.99 2284 Radio Song Out Of Time MPEG audio file Alternative & Punk Bill Berry/Michael Stipe/Mike Mills/Peter Buck 255477 8421172 0.99 2285 Pop Song 89 Green MPEG audio file Alternative & Punk Bill Berry-Peter Buck-Mike Mills-Michael Stipe 185730 6132218 0.99 2286 Get Up Green MPEG audio file Alternative & Punk Bill Berry-Peter Buck-Mike Mills-Michael Stipe 160235 5264376 0.99 2287 You Are The Everything Green MPEG audio file Alternative & Punk Bill Berry-Peter Buck-Mike Mills-Michael Stipe 226298 7373181 0.99 2288 Stand Green MPEG audio file Alternative & Punk Bill Berry-Peter Buck-Mike Mills-Michael Stipe 192862 6349090 0.99 2289 World Leader Pretend Green MPEG audio file Alternative & Punk Bill Berry-Peter Buck-Mike Mills-Michael Stipe 259761 8537282 0.99 2290 The Wrong Child Green MPEG audio file Alternative & Punk Bill Berry-Peter Buck-Mike Mills-Michael Stipe 216633 7065060 0.99 2291 Orange Crush Green MPEG audio file Alternative & Punk Bill Berry-Peter Buck-Mike Mills-Michael Stipe 231706 7742894 0.99 2292 Turn You Inside-Out Green MPEG audio file Alternative & Punk Bill Berry-Peter Buck-Mike Mills-Michael Stipe 257358 8395671 0.99 2293 Hairshirt Green MPEG audio file Alternative & Punk Bill Berry-Peter Buck-Mike Mills-Michael Stipe 235911 7753807 0.99 2294 I Remember California Green MPEG audio file Alternative & Punk Bill Berry-Peter Buck-Mike Mills-Michael Stipe 304013 9950311 0.99 2295 Untitled Green MPEG audio file Alternative & Punk Bill Berry-Peter Buck-Mike Mills-Michael Stipe 191503 6332426 0.99 2296 How The West Was Won And Where It Got Us New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 271151 8994291 0.99 2297 The Wake-Up Bomb New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 308532 10077337 0.99 2298 New Test Leper New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 326791 10866447 0.99 2299 Undertow New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 309498 10131005 0.99 2300 E-Bow The Letter New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 324963 10714576 0.99 2301 Leave New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 437968 14433365 0.99 2302 Departure New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 209423 6818425 0.99 2303 Bittersweet Me New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 245812 8114718 0.99 2304 Be Mine New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 333087 10790541 0.99 2305 Binky The Doormat New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 301688 9950320 0.99 2306 Zither New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 154148 5032962 0.99 2307 So Fast, So Numb New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 252682 8341223 0.99 2308 Low Desert New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 212062 6989288 0.99 2309 Electrolite New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 245315 8051199 0.99 2310 Losing My Religion Out Of Time MPEG audio file Alternative & Punk Bill Berry/Michael Stipe/Mike Mills/Peter Buck 269035 8885672 0.99 2311 Low Out Of Time MPEG audio file Alternative & Punk Bill Berry/Michael Stipe/Mike Mills/Peter Buck 296777 9633860 0.99 2312 Near Wild Heaven Out Of Time MPEG audio file Alternative & Punk Bill Berry/Michael Stipe/Mike Mills/Peter Buck 199862 6610009 0.99 2313 Endgame Out Of Time MPEG audio file Alternative & Punk Bill Berry/Michael Stipe/Mike Mills/Peter Buck 230687 7664479 0.99 2314 Belong Out Of Time MPEG audio file Alternative & Punk Bill Berry/Michael Stipe/Mike Mills/Peter Buck 247013 8219375 0.99 2315 Half A World Away Out Of Time MPEG audio file Alternative & Punk Bill Berry/Michael Stipe/Mike Mills/Peter Buck 208431 6837283 0.99 2316 Texarkana Out Of Time MPEG audio file Alternative & Punk Bill Berry/Michael Stipe/Mike Mills/Peter Buck 220081 7260681 0.99 2317 Country Feedback Out Of Time MPEG audio file Alternative & Punk Bill Berry/Michael Stipe/Mike Mills/Peter Buck 249782 8178943 0.99 2318 Carnival Of Sorts The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 233482 7669658 0.99 2319 Radio Free Aurope The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 245315 8163490 0.99 2320 Perfect Circle The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 208509 6898067 0.99 2321 Talk About The Passion The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 203206 6725435 0.99 2322 So Central Rain The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 194768 6414550 0.99 2323 Don't Go Back To Rockville The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 272352 9010715 0.99 2324 Pretty Persuasion The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 229929 7577754 0.99 2325 Green Grow The Rushes The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 225671 7422425 0.99 2326 Can't Get There From Here The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 220630 7285936 0.99 2327 Driver 8 The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 204747 6779076 0.99 2328 Fall On Me The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 172016 5676811 0.99 2329 I Believe The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 227709 7542929 0.99 2330 Cuyahoga The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 260623 8591057 0.99 2331 The One I Love The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 197355 6495125 0.99 2332 The Finest Worksong The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 229276 7574856 0.99 2333 It's The End Of The World As We Know It (And I Feel Fine) The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 244819 7998987 0.99 2334 Infeliz Natal Cesta Básica MPEG audio file Alternative & Punk Rodolfo 138266 4503299 0.99 2335 A Sua Cesta Básica MPEG audio file Alternative & Punk Rodolfo 142132 4622064 0.99 2336 Papeau Nuky Doe Cesta Básica MPEG audio file Alternative & Punk Rodolfo 121652 3995022 0.99 2337 Merry Christmas Cesta Básica MPEG audio file Alternative & Punk Rodolfo 126040 4166652 0.99 2338 Bodies Cesta Básica MPEG audio file Alternative & Punk Rodolfo 180035 5873778 0.99 2339 Puteiro Em João Pessoa Cesta Básica MPEG audio file Alternative & Punk Rodolfo 195578 6395490 0.99 2340 Esporrei Na Manivela Cesta Básica MPEG audio file Alternative & Punk Rodolfo 293276 9618499 0.99 2341 Bê-a-Bá Cesta Básica MPEG audio file Alternative & Punk Rodolfo 249051 8130636 0.99 2342 Cajueiro Cesta Básica MPEG audio file Alternative & Punk Rodolfo 158589 5164837 0.99 2343 Palhas Do Coqueiro Cesta Básica MPEG audio file Alternative & Punk Rodolfo 133851 4396466 0.99 2344 Maluco Beleza Raul Seixas MPEG audio file Rock \N 203206 6628067 0.99 2345 O Dia Em Que A Terra Parou Raul Seixas MPEG audio file Rock \N 261720 8586678 0.99 2346 No Fundo Do Quintal Da Escola Raul Seixas MPEG audio file Rock \N 177606 5836953 0.99 2347 O Segredo Do Universo Raul Seixas MPEG audio file Rock \N 192679 6315187 0.99 2348 As Profecias Raul Seixas MPEG audio file Rock \N 232515 7657732 0.99 2349 Mata Virgem Raul Seixas MPEG audio file Rock \N 142602 4690029 0.99 2350 Sapato 36 Raul Seixas MPEG audio file Rock \N 196702 6507301 0.99 2351 Todo Mundo Explica Raul Seixas MPEG audio file Rock \N 134896 4449772 0.99 2352 Que Luz É Essa Raul Seixas MPEG audio file Rock \N 165067 5620058 0.99 2353 Diamante De Mendigo Raul Seixas MPEG audio file Rock \N 206053 6775101 0.99 2354 Negócio É Raul Seixas MPEG audio file Rock \N 175464 5826775 0.99 2355 Muita Estrela, Pouca Constelação Raul Seixas MPEG audio file Rock \N 268068 8781021 0.99 2356 Século XXI Raul Seixas MPEG audio file Rock \N 244897 8040563 0.99 2357 Rock Das Aranhas (Ao Vivo) (Live) Raul Seixas MPEG audio file Rock \N 231836 7591945 0.99 2358 The Power Of Equality Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 243591 8148266 0.99 2359 If You Have To Ask Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 216790 7199175 0.99 2360 Breaking The Girl Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 295497 9805526 0.99 2361 Funky Monks Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 323395 10708168 0.99 2362 Suck My Kiss Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 217234 7129137 0.99 2363 I Could Have Lied Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 244506 8088244 0.99 2364 Mellowship Slinky In B Major Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 240091 7971384 0.99 2365 The Righteous & The Wicked Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 248084 8134096 0.99 2366 Give It Away Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 283010 9308997 0.99 2367 Blood Sugar Sex Magik Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 271229 8940573 0.99 2368 Under The Bridge Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 264359 8682716 0.99 2369 Naked In The Rain Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 265717 8724674 0.99 2370 Apache Rose Peacock Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 282226 9312588 0.99 2371 The Greeting Song Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 193593 6346507 0.99 2372 My Lovely Man Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 279118 9220114 0.99 2373 Sir Psycho Sexy Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 496692 16354362 0.99 2374 They're Red Hot Blood Sugar Sex Magik MPEG audio file Alternative & Punk Robert Johnson 71941 2382220 0.99 2375 By The Way By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 218017 7197430 0.99 2376 Universally Speaking By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 259213 8501904 0.99 2377 This Is The Place By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 257906 8469765 0.99 2611 Rise Beyond Good And Evil MPEG audio file Rock Billy Duffy/Ian Astbury 219088 7106195 0.99 2378 Dosed By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 312058 10235611 0.99 2379 Don't Forget Me By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 277995 9107071 0.99 2380 The Zephyr Song By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 232960 7690312 0.99 2381 Can't Stop By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 269400 8872479 0.99 2382 I Could Die For You By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 193906 6333311 0.99 2383 Midnight By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 295810 9702450 0.99 2384 Throw Away Your Television By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 224574 7483526 0.99 2385 Cabron By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 218592 7458864 0.99 2386 Tear By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 317413 10395500 0.99 2387 On Mercury By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 208509 6834762 0.99 2388 Minor Thing By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 217835 7148115 0.99 2389 Warm Tape By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 256653 8358200 0.99 2390 Venice Queen By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 369110 12280381 0.99 2391 Around The World Californication MPEG audio file Rock Anthony Kiedis/Chad Smith/Flea/John Frusciante 238837 7859167 0.99 2392 Parallel Universe Californication MPEG audio file Rock Red Hot Chili Peppers 270654 8958519 0.99 2393 Scar Tissue Californication MPEG audio file Rock Red Hot Chili Peppers 217469 7153744 0.99 2394 Otherside Californication MPEG audio file Rock Red Hot Chili Peppers 255973 8357989 0.99 2395 Get On Top Californication MPEG audio file Rock Red Hot Chili Peppers 198164 6587883 0.99 2396 Californication Californication MPEG audio file Rock Red Hot Chili Peppers 321671 10568999 0.99 2397 Easily Californication MPEG audio file Rock Red Hot Chili Peppers 231418 7504534 0.99 2398 Porcelain Californication MPEG audio file Rock Anthony Kiedis/Chad Smith/Flea/John Frusciante 163787 5278793 0.99 2399 Emit Remmus Californication MPEG audio file Rock Red Hot Chili Peppers 240300 7901717 0.99 2400 I Like Dirt Californication MPEG audio file Rock Red Hot Chili Peppers 157727 5225917 0.99 2401 This Velvet Glove Californication MPEG audio file Rock Red Hot Chili Peppers 225280 7480537 0.99 2402 Savior Californication MPEG audio file Rock Anthony Kiedis/Chad Smith/Flea/John Frusciante 292493 9551885 0.99 2403 Purple Stain Californication MPEG audio file Rock Red Hot Chili Peppers 253440 8359971 0.99 2404 Right On Time Californication MPEG audio file Rock Red Hot Chili Peppers 112613 3722219 0.99 2405 Road Trippin' Californication MPEG audio file Rock Red Hot Chili Peppers 205635 6685831 0.99 2406 The Spirit Of Radio Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 299154 9862012 0.99 2407 The Trees Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 285126 9345473 0.99 2408 Something For Nothing Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 240770 7898395 0.99 2409 Freewill Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 324362 10694110 0.99 2410 Xanadu Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 667428 21753168 0.99 2411 Bastille Day Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 280528 9264769 0.99 2412 By-Tor And The Snow Dog Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 519888 17076397 0.99 2413 Anthem Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 264515 8693343 0.99 2414 Closer To The Heart Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 175412 5767005 0.99 2415 2112 Overture Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 272718 8898066 0.99 2416 The Temples Of Syrinx Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 133459 4360163 0.99 2417 La Villa Strangiato Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 577488 19137855 0.99 2418 Fly By Night Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 202318 6683061 0.99 2419 Finding My Way Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 305528 9985701 0.99 2420 Jingo Santana - As Years Go By MPEG audio file Rock M.Babatunde Olantunji 592953 19736495 0.99 2421 El Corazon Manda Santana - As Years Go By MPEG audio file Rock E.Weiss 713534 23519583 0.99 2422 La Puesta Del Sol Santana - As Years Go By MPEG audio file Rock E.Weiss 628062 20614621 0.99 2423 Persuasion Santana - As Years Go By MPEG audio file Rock Carlos Santana 318432 10354751 0.99 2424 As The Years Go by Santana - As Years Go By MPEG audio file Rock Albert King 233064 7566829 0.99 2425 Soul Sacrifice Santana - As Years Go By MPEG audio file Rock Carlos Santana 296437 9801120 0.99 2426 Fried Neckbones And Home Fries Santana - As Years Go By MPEG audio file Rock W.Correa 638563 20939646 0.99 2427 Santana Jam Santana - As Years Go By MPEG audio file Rock Carlos Santana 882834 29207100 0.99 2428 Evil Ways Santana Live MPEG audio file Rock \N 475402 15289235 0.99 2429 We've Got To Get Together/Jingo Santana Live MPEG audio file Rock \N 1070027 34618222 0.99 2430 Rock Me Santana Live MPEG audio file Rock \N 94720 3037596 0.99 2431 Just Ain't Good Enough Santana Live MPEG audio file Rock \N 850259 27489067 0.99 2432 Funky Piano Santana Live MPEG audio file Rock \N 934791 30200730 0.99 2433 The Way You Do To Mer Santana Live MPEG audio file Rock \N 618344 20028702 0.99 2434 Holding Back The Years Greatest Hits MPEG audio file Rock Mick Hucknall and Neil Moss 270053 8833220 0.99 2435 Money's Too Tight To Mention Greatest Hits MPEG audio file Rock John and William Valentine 268408 8861921 0.99 2436 The Right Thing Greatest Hits MPEG audio file Rock Mick Hucknall 262687 8624063 0.99 2437 It's Only Love Greatest Hits MPEG audio file Rock Jimmy and Vella Cameron 232594 7659017 0.99 2438 A New Flame Greatest Hits MPEG audio file Rock Mick Hucknall 237662 7822875 0.99 2439 You've Got It Greatest Hits MPEG audio file Rock Mick Hucknall and Lamont Dozier 235232 7712845 0.99 2440 If You Don't Know Me By Now Greatest Hits MPEG audio file Rock Kenny Gamble and Leon Huff 206524 6712634 0.99 2441 Stars Greatest Hits MPEG audio file Rock Mick Hucknall 248137 8194906 0.99 2442 Something Got Me Started Greatest Hits MPEG audio file Rock Mick Hucknall and Fritz McIntyre 239595 7997139 0.99 2443 Thrill Me Greatest Hits MPEG audio file Rock Mick Hucknall and Fritz McIntyre 303934 10034711 0.99 2444 Your Mirror Greatest Hits MPEG audio file Rock Mick Hucknall 240666 7893821 0.99 2445 For Your Babies Greatest Hits MPEG audio file Rock Mick Hucknall 256992 8408803 0.99 2446 So Beautiful Greatest Hits MPEG audio file Rock Mick Hucknall 298083 9837832 0.99 2447 Angel Greatest Hits MPEG audio file Rock Carolyn Franklin and Sonny Saunders 240561 7880256 0.99 2448 Fairground Greatest Hits MPEG audio file Rock Mick Hucknall 263888 8793094 0.99 2612 Take The Power Beyond Good And Evil MPEG audio file Rock Billy Duffy/Ian Astbury 235755 7650012 0.99 2449 Água E Fogo Maquinarama MPEG audio file Rock Chico Amaral/Edgard Scandurra/Samuel Rosa 278987 9272272 0.99 2450 Três Lados Maquinarama MPEG audio file Rock Chico Amaral/Samuel Rosa 233665 7699609 0.99 2451 Ela Desapareceu Maquinarama MPEG audio file Rock Chico Amaral/Samuel Rosa 250122 8289200 0.99 2452 Balada Do Amor Inabalável Maquinarama MPEG audio file Rock Fausto Fawcett/Samuel Rosa 240613 8025816 0.99 2453 Canção Noturna Maquinarama MPEG audio file Rock Chico Amaral/Lelo Zanettik 238628 7874774 0.99 2454 Muçulmano Maquinarama MPEG audio file Rock Leão, Rodrigo F./Samuel Rosa 249600 8270613 0.99 2455 Maquinarama Maquinarama MPEG audio file Rock Chico Amaral/Samuel Rosa 245629 8213710 0.99 2456 Rebelião Maquinarama MPEG audio file Rock Chico Amaral/Samuel Rosa 298527 9817847 0.99 2513 Rusty Cage A-Sides MPEG audio file Rock Chris Cornell 267728 8779485 0.99 2457 A Última Guerra Maquinarama MPEG audio file Rock Leão, Rodrigo F./Lô Borges/Samuel Rosa 314723 10480391 0.99 2458 Fica Maquinarama MPEG audio file Rock Chico Amaral/Samuel Rosa 272169 8980972 0.99 2459 Ali Maquinarama MPEG audio file Rock Nando Reis/Samuel Rosa 306390 10110351 0.99 2460 Preto Damião Maquinarama MPEG audio file Rock Chico Amaral/Samuel Rosa 264568 8697658 0.99 2461 É Uma Partida De Futebol O Samba Poconé MPEG audio file Rock Samuel Rosa 1071 38747 0.99 2462 Eu Disse A Ela O Samba Poconé MPEG audio file Rock Samuel Rosa 254223 8479463 0.99 2463 Zé Trindade O Samba Poconé MPEG audio file Rock Samuel Rosa 247954 8331310 0.99 2464 Garota Nacional O Samba Poconé MPEG audio file Rock Samuel Rosa 317492 10511239 0.99 2465 Tão Seu O Samba Poconé MPEG audio file Rock Samuel Rosa 243748 8133126 0.99 2466 Sem Terra O Samba Poconé MPEG audio file Rock Samuel Rosa 279353 9196411 0.99 2467 Os Exilados O Samba Poconé MPEG audio file Rock Samuel Rosa 245551 8222095 0.99 2468 Um Dia Qualquer O Samba Poconé MPEG audio file Rock Samuel Rosa 292414 9805570 0.99 2469 Los Pretos O Samba Poconé MPEG audio file Rock Samuel Rosa 239229 8025667 0.99 2470 Sul Da América O Samba Poconé MPEG audio file Rock Samuel Rosa 254928 8484871 0.99 2471 Poconé O Samba Poconé MPEG audio file Rock Samuel Rosa 318406 10771610 0.99 2472 Lucky 13 Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 189387 6200617 0.99 2473 Aeroplane Flies High Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 473391 15408329 0.99 2474 Because You Are Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 226403 7405137 0.99 2475 Slow Dawn Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 192339 6269057 0.99 2476 Believe Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk James Iha 192940 6320652 0.99 2477 My Mistake Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 240901 7843477 0.99 2478 Marquis In Spades Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 192731 6304789 0.99 2479 Here's To The Atom Bomb Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 266893 8763140 0.99 2480 Sparrow Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 176822 5696989 0.99 2481 Waiting Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 228336 7627641 0.99 2482 Saturnine Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 229877 7523502 0.99 2483 Rock On Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk David Cook 366471 12133825 0.99 2484 Set The Ray To Jerry Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 249364 8215184 0.99 2485 Winterlong Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 299389 9670616 0.99 2486 Soot & Stars Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 399986 12866557 0.99 2487 Blissed & Gone Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 286302 9305998 0.99 2488 Siva Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 261172 8576622 0.99 2489 Rhinocerous Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 353462 11526684 0.99 2490 Drown Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 270497 8883496 0.99 2491 Cherub Rock Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 299389 9786739 0.99 2492 Today Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 202213 6596933 0.99 2493 Disarm Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 198556 6508249 0.99 2494 Landslide Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Stevie Nicks 190275 6187754 0.99 2495 Bullet With Butterfly Wings Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 257306 8431747 0.99 2496 1979 Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 263653 8728470 0.99 2497 Zero Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 161123 5267176 0.99 2498 Tonight, Tonight Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 255686 8351543 0.99 2499 Eye Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 294530 9784201 0.99 2500 Ava Adore Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 261433 8590412 0.99 2501 Perfect Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 203023 6734636 0.99 2502 The Everlasting Gaze Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 242155 7844404 0.99 2503 Stand Inside Your Love Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 253753 8270113 0.99 2504 Real Love Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 250697 8025896 0.99 2505 [Untitled] Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 231784 7689713 0.99 2506 Nothing To Say A-Sides MPEG audio file Rock Chris Cornell/Kim Thayil 238027 7744833 0.99 2507 Flower A-Sides MPEG audio file Rock Chris Cornell/Kim Thayil 208822 6830732 0.99 2508 Loud Love A-Sides MPEG audio file Rock Chris Cornell 297456 9660953 0.99 2509 Hands All Over A-Sides MPEG audio file Rock Chris Cornell/Kim Thayil 362475 11893108 0.99 2510 Get On The Snake A-Sides MPEG audio file Rock Chris Cornell/Kim Thayil 225123 7313744 0.99 2511 Jesus Christ Pose A-Sides MPEG audio file Rock Ben Shepherd/Chris Cornell/Kim Thayil/Matt Cameron 352966 11739886 0.99 2512 Outshined A-Sides MPEG audio file Rock Chris Cornell 312476 10274629 0.99 2514 Spoonman A-Sides MPEG audio file Rock Chris Cornell 248476 8289906 0.99 2515 The Day I Tried To Live A-Sides MPEG audio file Rock Chris Cornell 321175 10507137 0.99 2516 Black Hole Sun A-Sides MPEG audio file Rock Soundgarden 320365 10425229 0.99 2517 Fell On Black Days A-Sides MPEG audio file Rock Chris Cornell 282331 9256082 0.99 2518 Pretty Noose A-Sides MPEG audio file Rock Chris Cornell 253570 8317931 0.99 2519 Burden In My Hand A-Sides MPEG audio file Rock Chris Cornell 292153 9659911 0.99 2520 Blow Up The Outside World A-Sides MPEG audio file Rock Chris Cornell 347898 11379527 0.99 2521 Ty Cobb A-Sides MPEG audio file Rock Ben Shepherd/Chris Cornell 188786 6233136 0.99 2522 Bleed Together A-Sides MPEG audio file Rock Chris Cornell 232202 7597074 0.99 2523 Morning Dance Morning Dance MPEG audio file Jazz Jay Beckenstein 238759 8101979 0.99 2524 Jubilee Morning Dance MPEG audio file Jazz Jeremy Wall 275147 9151846 0.99 2525 Rasul Morning Dance MPEG audio file Jazz Jeremy Wall 238315 7854737 0.99 2526 Song For Lorraine Morning Dance MPEG audio file Jazz Jay Beckenstein 240091 8101723 0.99 2527 Starburst Morning Dance MPEG audio file Jazz Jeremy Wall 291500 9768399 0.99 2528 Heliopolis Morning Dance MPEG audio file Jazz Jay Beckenstein 338729 11365655 0.99 2529 It Doesn't Matter Morning Dance MPEG audio file Jazz Chet Catallo 270027 9034177 0.99 2530 Little Linda Morning Dance MPEG audio file Jazz Jeremy Wall 264019 8958743 0.99 2531 End Of Romanticism Morning Dance MPEG audio file Jazz Rick Strauss 320078 10553155 0.99 2532 The House Is Rockin' In Step MPEG audio file Blues Doyle Bramhall/Stevie Ray Vaughan 144352 4706253 0.99 2533 Crossfire In Step MPEG audio file Blues B. Carter/C. Layton/R. Ellsworth/R. Wynans/T. Shannon 251219 8238033 0.99 2534 Tightrope In Step MPEG audio file Blues Doyle Bramhall/Stevie Ray Vaughan 281155 9254906 0.99 2535 Let Me Love You Baby In Step MPEG audio file Blues Willie Dixon 164127 5378455 0.99 2536 Leave My Girl Alone In Step MPEG audio file Blues B. Guy 256365 8438021 0.99 2537 Travis Walk In Step MPEG audio file Blues Stevie Ray Vaughan 140826 4650979 0.99 2538 Wall Of Denial In Step MPEG audio file Blues Doyle Bramhall/Stevie Ray Vaughan 336927 11085915 0.99 2539 Scratch-N-Sniff In Step MPEG audio file Blues Doyle Bramhall/Stevie Ray Vaughan 163422 5353627 0.99 2540 Love Me Darlin' In Step MPEG audio file Blues C. Burnett 201586 6650869 0.99 2541 Riviera Paradise In Step MPEG audio file Blues Stevie Ray Vaughan 528692 17232776 0.99 2542 Dead And Bloated Core MPEG audio file Rock R. DeLeo/Weiland 310386 10170433 0.99 2543 Sex Type Thing Core MPEG audio file Rock D. DeLeo/Kretz/Weiland 218723 7102064 0.99 2544 Wicked Garden Core MPEG audio file Rock D. DeLeo/R. DeLeo/Weiland 245368 7989505 0.99 2545 No Memory Core MPEG audio file Rock Dean Deleo 80613 2660859 0.99 2546 Sin Core MPEG audio file Rock R. DeLeo/Weiland 364800 12018823 0.99 2547 Naked Sunday Core MPEG audio file Rock D. DeLeo/Kretz/R. DeLeo/Weiland 229720 7444201 0.99 2548 Creep Core MPEG audio file Rock R. DeLeo/Weiland 333191 10894988 0.99 2549 Piece Of Pie Core MPEG audio file Rock R. DeLeo/Weiland 324623 10605231 0.99 2550 Plush Core MPEG audio file Rock R. DeLeo/Weiland 314017 10229848 0.99 2551 Wet My Bed Core MPEG audio file Rock R. DeLeo/Weiland 96914 3198627 0.99 2552 Crackerman Core MPEG audio file Rock Kretz/R. DeLeo/Weiland 194403 6317361 0.99 2553 Where The River Goes Core MPEG audio file Rock D. DeLeo/Kretz/Weiland 505991 16468904 0.99 2554 Soldier Side - Intro Mezmerize MPEG audio file Metal Dolmayan, John/Malakian, Daron/Odadjian, Shavo 63764 2056079 0.99 2555 B.Y.O.B. Mezmerize MPEG audio file Metal Tankian, Serj 255555 8407935 0.99 2556 Revenga Mezmerize MPEG audio file Metal Tankian, Serj 228127 7503805 0.99 2557 Cigaro Mezmerize MPEG audio file Metal Tankian, Serj 131787 4321705 0.99 2558 Radio/Video Mezmerize MPEG audio file Metal Dolmayan, John/Malakian, Daron/Odadjian, Shavo 249312 8224917 0.99 2559 This Cocaine Makes Me Feel Like I'm On This Song Mezmerize MPEG audio file Metal Tankian, Serj 128339 4185193 0.99 2560 Violent Pornography Mezmerize MPEG audio file Metal Dolmayan, John/Malakian, Daron/Odadjian, Shavo 211435 6985960 0.99 2561 Question! Mezmerize MPEG audio file Metal Tankian, Serj 200698 6616398 0.99 2562 Sad Statue Mezmerize MPEG audio file Metal Tankian, Serj 205897 6733449 0.99 2563 Old School Hollywood Mezmerize MPEG audio file Metal Dolmayan, John/Malakian, Daron/Odadjian, Shavo 176953 5830258 0.99 2564 Lost in Hollywood Mezmerize MPEG audio file Metal Tankian, Serj 320783 10535158 0.99 2565 The Sun Road [1997] Black Light Syndrome MPEG audio file Rock Terry Bozzio, Steve Stevens, Tony Levin 880640 29008407 0.99 2566 Dark Corners [1997] Black Light Syndrome MPEG audio file Rock Terry Bozzio, Steve Stevens, Tony Levin 513541 16839223 0.99 2567 Duende [1997] Black Light Syndrome MPEG audio file Rock Terry Bozzio, Steve Stevens, Tony Levin 447582 14956771 0.99 2568 Black Light Syndrome [1997] Black Light Syndrome MPEG audio file Rock Terry Bozzio, Steve Stevens, Tony Levin 526471 17300835 0.99 2569 Falling in Circles [1997] Black Light Syndrome MPEG audio file Rock Terry Bozzio, Steve Stevens, Tony Levin 549093 18263248 0.99 2570 Book of Hours [1997] Black Light Syndrome MPEG audio file Rock Terry Bozzio, Steve Stevens, Tony Levin 583366 19464726 0.99 2571 Chaos-Control [1997] Black Light Syndrome MPEG audio file Rock Terry Bozzio, Steve Stevens, Tony Levin 529841 17455568 0.99 2572 Midnight From The Inside Out Live [Disc 1] MPEG audio file Blues Chris Robinson/Rich Robinson 286981 9442157 0.99 2573 Sting Me Live [Disc 1] MPEG audio file Blues Chris Robinson/Rich Robinson 268094 8813561 0.99 2574 Thick & Thin Live [Disc 1] MPEG audio file Blues Chris Robinson/Rich Robinson 222720 7284377 0.99 2575 Greasy Grass River Live [Disc 1] MPEG audio file Blues Chris Robinson/Rich Robinson 218749 7157045 0.99 2576 Sometimes Salvation Live [Disc 1] MPEG audio file Blues Chris Robinson/Rich Robinson 389146 12749424 0.99 2577 Cursed Diamonds Live [Disc 1] MPEG audio file Blues Chris Robinson/Rich Robinson 368300 12047978 0.99 2578 Miracle To Me Live [Disc 1] MPEG audio file Blues Chris Robinson/Rich Robinson 372636 12222116 0.99 2579 Wiser Time Live [Disc 1] MPEG audio file Blues Chris Robinson/Rich Robinson 459990 15161907 0.99 2580 Girl From A Pawnshop Live [Disc 1] MPEG audio file Blues Chris Robinson/Rich Robinson 404688 13250848 0.99 2581 Cosmic Fiend Live [Disc 1] MPEG audio file Blues Chris Robinson/Rich Robinson 308401 10115556 0.99 2582 Black Moon Creeping Live [Disc 2] MPEG audio file Blues Chris Robinson/Rich Robinson 359314 11740886 0.99 2583 High Head Blues Live [Disc 2] MPEG audio file Blues Chris Robinson/Rich Robinson 371879 12227998 0.99 2584 Title Song Live [Disc 2] MPEG audio file Blues Chris Robinson/Rich Robinson 505521 16501316 0.99 2585 She Talks To Angels Live [Disc 2] MPEG audio file Blues Chris Robinson/Rich Robinson 361978 11837342 0.99 2586 Twice As Hard Live [Disc 2] MPEG audio file Blues Chris Robinson/Rich Robinson 275565 9008067 0.99 2587 Lickin' Live [Disc 2] MPEG audio file Blues Chris Robinson/Rich Robinson 314409 10331216 0.99 2588 Soul Singing Live [Disc 2] MPEG audio file Blues Chris Robinson/Rich Robinson 233639 7672489 0.99 2589 Hard To Handle Live [Disc 2] MPEG audio file Blues A.Isbell/A.Jones/O.Redding 206994 6786304 0.99 2590 Remedy Live [Disc 2] MPEG audio file Blues Chris Robinson/Rich Robinson 337084 11049098 0.99 2591 White Riot The Singles MPEG audio file Alternative & Punk Joe Strummer/Mick Jones 118726 3922819 0.99 2592 Remote Control The Singles MPEG audio file Alternative & Punk Joe Strummer/Mick Jones 180297 5949647 0.99 2593 Complete Control The Singles MPEG audio file Alternative & Punk Joe Strummer/Mick Jones 192653 6272081 0.99 2594 Clash City Rockers The Singles MPEG audio file Alternative & Punk Joe Strummer/Mick Jones 227500 7555054 0.99 2595 (White Man) In Hammersmith Palais The Singles MPEG audio file Alternative & Punk Joe Strummer/Mick Jones 240640 7883532 0.99 2596 Tommy Gun The Singles MPEG audio file Alternative & Punk Joe Strummer/Mick Jones 195526 6399872 0.99 2597 English Civil War The Singles MPEG audio file Alternative & Punk Mick Jones/Traditional arr. Joe Strummer 156708 5111226 0.99 2598 I Fought The Law The Singles MPEG audio file Alternative & Punk Sonny Curtis 159764 5245258 0.99 2599 London Calling The Singles MPEG audio file Alternative & Punk Joe Strummer/Mick Jones 199706 6569007 0.99 2600 Train In Vain The Singles MPEG audio file Alternative & Punk Joe Strummer/Mick Jones 189675 6329877 0.99 2601 Bankrobber The Singles MPEG audio file Alternative & Punk Joe Strummer/Mick Jones 272431 9067323 0.99 2602 The Call Up The Singles MPEG audio file Alternative & Punk The Clash 324336 10746937 0.99 2603 Hitsville UK The Singles MPEG audio file Alternative & Punk The Clash 261433 8606887 0.99 2604 The Magnificent Seven The Singles MPEG audio file Alternative & Punk The Clash 268486 8889821 0.99 2605 This Is Radio Clash The Singles MPEG audio file Alternative & Punk The Clash 249756 8366573 0.99 2606 Know Your Rights The Singles MPEG audio file Alternative & Punk The Clash 217678 7195726 0.99 2607 Rock The Casbah The Singles MPEG audio file Alternative & Punk The Clash 222145 7361500 0.99 2608 Should I Stay Or Should I Go The Singles MPEG audio file Alternative & Punk The Clash 187219 6188688 0.99 2609 War (The Process) Beyond Good And Evil MPEG audio file Rock Billy Duffy/Ian Astbury 252630 8254842 0.99 2610 The Saint Beyond Good And Evil MPEG audio file Rock Billy Duffy/Ian Astbury 216215 7061584 0.99 2613 Breathe Beyond Good And Evil MPEG audio file Rock Billy Duffy/Ian Astbury/Marti Frederiksen/Mick Jones 299781 9742361 0.99 2614 Nico Beyond Good And Evil MPEG audio file Rock Billy Duffy/Ian Astbury 289488 9412323 0.99 2615 American Gothic Beyond Good And Evil MPEG audio file Rock Billy Duffy/Ian Astbury 236878 7739840 0.99 2616 Ashes And Ghosts Beyond Good And Evil MPEG audio file Rock Billy Duffy/Bob Rock/Ian Astbury 300591 9787692 0.99 2617 Shape The Sky Beyond Good And Evil MPEG audio file Rock Billy Duffy/Ian Astbury 209789 6885647 0.99 2618 Speed Of Light Beyond Good And Evil MPEG audio file Rock Billy Duffy/Bob Rock/Ian Astbury 262817 8563352 0.99 2619 True Believers Beyond Good And Evil MPEG audio file Rock Billy Duffy/Ian Astbury 308009 9981359 0.99 2620 My Bridges Burn Beyond Good And Evil MPEG audio file Rock Billy Duffy/Ian Astbury 231862 7571370 0.99 2621 She Sells Sanctuary Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 253727 8368634 0.99 2622 Fire Woman Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 312790 10196995 0.99 2623 Lil' Evil Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 165825 5419655 0.99 2624 Spirit Walker Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 230060 7555897 0.99 2625 The Witch Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 258768 8725403 0.99 2626 Revolution Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 256026 8371254 0.99 2627 Wild Hearted Son Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 266893 8670550 0.99 2628 Love Removal Machine Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 257619 8412167 0.99 2629 Rain Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 236669 7788461 0.99 2630 Edie (Ciao Baby) Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 241632 7846177 0.99 2631 Heart Of Soul Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 274207 8967257 0.99 2632 Love Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 326739 10729824 0.99 2633 Wild Flower Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 215536 7084321 0.99 2634 Go West Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 238158 7777749 0.99 2635 Resurrection Joe Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 255451 8532840 0.99 2636 Sun King Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 368431 12010865 0.99 2637 Sweet Soul Sister Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 212009 6889883 0.99 2638 Earth Mofo Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 282200 9204581 0.99 2639 Break on Through The Doors MPEG audio file Rock Robby Krieger, Ray Manzarek, John Densmore, Jim Morrison 149342 4943144 0.99 2640 Soul Kitchen The Doors MPEG audio file Rock Robby Krieger, Ray Manzarek, John Densmore, Jim Morrison 215066 7040865 0.99 2641 The Crystal Ship The Doors MPEG audio file Rock Robby Krieger, Ray Manzarek, John Densmore, Jim Morrison 154853 5052658 0.99 2642 Twentienth Century Fox The Doors MPEG audio file Rock Robby Krieger, Ray Manzarek, John Densmore, Jim Morrison 153913 5069211 0.99 2643 Alabama Song The Doors MPEG audio file Rock Weill-Brecht 200097 6563411 0.99 2644 Light My Fire The Doors MPEG audio file Rock Robby Krieger, Ray Manzarek, John Densmore, Jim Morrison 428329 13963351 0.99 2645 Back Door Man The Doors MPEG audio file Rock Willie Dixon, C. Burnett 214360 7035636 0.99 2646 I Looked At You The Doors MPEG audio file Rock Robby Krieger, Ray Manzarek, John Densmore, Jim Morrison 142080 4663988 0.99 2647 End Of The Night The Doors MPEG audio file Rock Robby Krieger, Ray Manzarek, John Densmore, Jim Morrison 172695 5589732 0.99 2648 Take It As It Comes The Doors MPEG audio file Rock Robby Krieger, Ray Manzarek, John Densmore, Jim Morrison 137168 4512656 0.99 2649 The End The Doors MPEG audio file Rock Robby Krieger, Ray Manzarek, John Densmore, Jim Morrison 701831 22927336 0.99 2650 Roxanne The Police Greatest Hits MPEG audio file Rock G M Sumner 192992 6330159 0.99 2651 Can't Stand Losing You The Police Greatest Hits MPEG audio file Rock G M Sumner 181159 5971983 0.99 2652 Message in a Bottle The Police Greatest Hits MPEG audio file Rock G M Sumner 291474 9647829 0.99 2653 Walking on the Moon The Police Greatest Hits MPEG audio file Rock G M Sumner 302080 10019861 0.99 2654 Don't Stand so Close to Me The Police Greatest Hits MPEG audio file Rock G M Sumner 241031 7956658 0.99 2655 De Do Do Do, De Da Da Da The Police Greatest Hits MPEG audio file Rock G M Sumner 247196 8227075 0.99 2656 Every Little Thing She Does is Magic The Police Greatest Hits MPEG audio file Rock G M Sumner 261120 8646853 0.99 2657 Invisible Sun The Police Greatest Hits MPEG audio file Rock G M Sumner 225593 7304320 0.99 2658 Spirit's in the Material World The Police Greatest Hits MPEG audio file Rock G M Sumner 181133 5986622 0.99 2659 Every Breath You Take The Police Greatest Hits MPEG audio file Rock G M Sumner 254615 8364520 0.99 2660 King Of Pain The Police Greatest Hits MPEG audio file Rock G M Sumner 300512 9880303 0.99 2661 Wrapped Around Your Finger The Police Greatest Hits MPEG audio file Rock G M Sumner 315454 10361490 0.99 2662 Don't Stand So Close to Me '86 The Police Greatest Hits MPEG audio file Rock G M Sumner 293590 9636683 0.99 2663 Message in a Bottle (new classic rock mix) The Police Greatest Hits MPEG audio file Rock G M Sumner 290951 9640349 0.99 2664 Time Is On My Side Hot Rocks, 1964-1971 (Disc 1) MPEG audio file Rock Jerry Ragavoy 179983 5855836 0.99 2665 Heart Of Stone Hot Rocks, 1964-1971 (Disc 1) MPEG audio file Rock Jagger/Richards 164493 5329538 0.99 2666 Play With Fire Hot Rocks, 1964-1971 (Disc 1) MPEG audio file Rock Nanker Phelge 132022 4265297 0.99 2667 Satisfaction Hot Rocks, 1964-1971 (Disc 1) MPEG audio file Rock Jagger/Richards 226612 7398766 0.99 2668 As Tears Go By Hot Rocks, 1964-1971 (Disc 1) MPEG audio file Rock Jagger/Richards/Oldham 164284 5357350 0.99 2669 Get Off Of My Cloud Hot Rocks, 1964-1971 (Disc 1) MPEG audio file Rock Jagger/Richards 176013 5719514 0.99 2670 Mother's Little Helper Hot Rocks, 1964-1971 (Disc 1) MPEG audio file Rock Jagger/Richards 167549 5422434 0.99 2671 19th Nervous Breakdown Hot Rocks, 1964-1971 (Disc 1) MPEG audio file Rock Jagger/Richards 237923 7742984 0.99 2672 Paint It Black Hot Rocks, 1964-1971 (Disc 1) MPEG audio file Rock Jagger/Richards 226063 7442888 0.99 2673 Under My Thumb Hot Rocks, 1964-1971 (Disc 1) MPEG audio file Rock Jagger/Richards 221387 7371799 0.99 2674 Ruby Tuesday Hot Rocks, 1964-1971 (Disc 1) MPEG audio file Rock Jagger/Richards 197459 6433467 0.99 2675 Let's Spend The Night Together Hot Rocks, 1964-1971 (Disc 1) MPEG audio file Rock Jagger/Richards 217495 7137048 0.99 2676 Intro No Security MPEG audio file Rock Jagger/Richards 49737 1618591 0.99 2677 You Got Me Rocking No Security MPEG audio file Rock Jagger/Richards 205766 6734385 0.99 2678 Gimmie Shelters No Security MPEG audio file Rock Jagger/Richards 382119 12528764 0.99 2679 Flip The Switch No Security MPEG audio file Rock Jagger/Richards 252421 8336591 0.99 2680 Memory Motel No Security MPEG audio file Rock Jagger/Richards 365844 11982431 0.99 2681 Corinna No Security MPEG audio file Rock Jesse Ed Davis III/Taj Mahal 257488 8449471 0.99 2682 Saint Of Me No Security MPEG audio file Rock Jagger/Richards 325694 10725160 0.99 2683 Wainting On A Friend No Security MPEG audio file Rock Jagger/Richards 302497 9978046 0.99 2684 Sister Morphine No Security MPEG audio file Rock Faithfull/Jagger/Richards 376215 12345289 0.99 2685 Live With Me No Security MPEG audio file Rock Jagger/Richards 234893 7709006 0.99 2686 Respectable No Security MPEG audio file Rock Jagger/Richards 215693 7099669 0.99 2687 Thief In The Night No Security MPEG audio file Rock De Beauport/Jagger/Richards 337266 10952756 0.99 2688 The Last Time No Security MPEG audio file Rock Jagger/Richards 287294 9498758 0.99 2689 Out Of Control No Security MPEG audio file Rock Jagger/Richards 479242 15749289 0.99 2690 Love Is Strong Voodoo Lounge MPEG audio file Rock Jagger/Richards 230896 7639774 0.99 2691 You Got Me Rocking Voodoo Lounge MPEG audio file Rock Jagger/Richards 215928 7162159 0.99 2692 Sparks Will Fly Voodoo Lounge MPEG audio file Rock Jagger/Richards 196466 6492847 0.99 2693 The Worst Voodoo Lounge MPEG audio file Rock Jagger/Richards 144613 4750094 0.99 2694 New Faces Voodoo Lounge MPEG audio file Rock Jagger/Richards 172146 5689122 0.99 2695 Moon Is Up Voodoo Lounge MPEG audio file Rock Jagger/Richards 222119 7366316 0.99 2696 Out Of Tears Voodoo Lounge MPEG audio file Rock Jagger/Richards 327418 10677236 0.99 2697 I Go Wild Voodoo Lounge MPEG audio file Rock Jagger/Richards 264019 8630833 0.99 2698 Brand New Car Voodoo Lounge MPEG audio file Rock Jagger/Richards 256052 8459344 0.99 2699 Sweethearts Together Voodoo Lounge MPEG audio file Rock Jagger/Richards 285492 9550459 0.99 2700 Suck On The Jugular Voodoo Lounge MPEG audio file Rock Jagger/Richards 268225 8920566 0.99 2701 Blinded By Rainbows Voodoo Lounge MPEG audio file Rock Jagger/Richards 273946 8971343 0.99 2702 Baby Break It Down Voodoo Lounge MPEG audio file Rock Jagger/Richards 249417 8197309 0.99 2703 Thru And Thru Voodoo Lounge MPEG audio file Rock Jagger/Richards 375092 12175406 0.99 2704 Mean Disposition Voodoo Lounge MPEG audio file Rock Jagger/Richards 249155 8273602 0.99 2705 Walking Wounded Tangents MPEG audio file Alternative & Punk The Tea Party 277968 9184345 0.99 2706 Temptation Tangents MPEG audio file Alternative & Punk The Tea Party 205087 6711943 0.99 2707 The Messenger Tangents MPEG audio file Alternative & Punk Daniel Lanois 212062 6975437 0.99 2708 Psychopomp Tangents MPEG audio file Alternative & Punk The Tea Party 315559 10295199 0.99 2709 Sister Awake Tangents MPEG audio file Alternative & Punk The Tea Party 343875 11299407 0.99 2710 The Bazaar Tangents MPEG audio file Alternative & Punk The Tea Party 222458 7245691 0.99 2711 Save Me (Remix) Tangents MPEG audio file Alternative & Punk The Tea Party 396303 13053839 0.99 2712 Fire In The Head Tangents MPEG audio file Alternative & Punk The Tea Party 306337 10005675 0.99 2713 Release Tangents MPEG audio file Alternative & Punk The Tea Party 244114 8014606 0.99 2714 Heaven Coming Down Tangents MPEG audio file Alternative & Punk The Tea Party 241867 7846459 0.99 2715 The River (Remix) Tangents MPEG audio file Alternative & Punk The Tea Party 343170 11193268 0.99 2716 Babylon Tangents MPEG audio file Alternative & Punk The Tea Party 169795 5568808 0.99 2717 Waiting On A Sign Tangents MPEG audio file Alternative & Punk The Tea Party 261903 8558590 0.99 2718 Life Line Tangents MPEG audio file Alternative & Punk The Tea Party 277786 9082773 0.99 2719 Paint It Black Tangents MPEG audio file Alternative & Punk Keith Richards/Mick Jagger 214752 7101572 0.99 2720 Temptation Transmission MPEG audio file Alternative & Punk The Tea Party 205244 6719465 0.99 2721 Army Ants Transmission MPEG audio file Alternative & Punk The Tea Party 215405 7075838 0.99 2722 Psychopomp Transmission MPEG audio file Alternative & Punk The Tea Party 317231 10351778 0.99 2723 Gyroscope Transmission MPEG audio file Alternative & Punk The Tea Party 177711 5810323 0.99 2724 Alarum Transmission MPEG audio file Alternative & Punk The Tea Party 298187 9712545 0.99 2725 Release Transmission MPEG audio file Alternative & Punk The Tea Party 266292 8725824 0.99 2726 Transmission Transmission MPEG audio file Alternative & Punk The Tea Party 317257 10351152 0.99 2727 Babylon Transmission MPEG audio file Alternative & Punk The Tea Party 292466 9601786 0.99 2728 Pulse Transmission MPEG audio file Alternative & Punk The Tea Party 250253 8183872 0.99 2729 Emerald Transmission MPEG audio file Alternative & Punk The Tea Party 289750 9543789 0.99 2730 Aftermath Transmission MPEG audio file Alternative & Punk The Tea Party 343745 11085607 0.99 2731 I Can't Explain My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend 125152 4082896 0.99 2732 Anyway, Anyhow, Anywhere My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend, Roger Daltrey 161253 5234173 0.99 2733 My Generation My Generation - The Very Best Of The Who MPEG audio file Rock John Entwistle/Pete Townshend 197825 6446634 0.99 2734 Substitute My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend 228022 7409995 0.99 2735 I'm A Boy My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend 157126 5120605 0.99 2736 Boris The Spider My Generation - The Very Best Of The Who MPEG audio file Rock John Entwistle 149472 4835202 0.99 2737 Happy Jack My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend 132310 4353063 0.99 2738 Pictures Of Lily My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend 164414 5329751 0.99 2739 I Can See For Miles My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend 262791 8604989 0.99 2740 Magic Bus My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend 197224 6452700 0.99 2741 Pinball Wizard My Generation - The Very Best Of The Who MPEG audio file Rock John Entwistle/Pete Townshend 181890 6055580 0.99 2742 The Seeker My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend 204643 6736866 0.99 2743 Baba O'Riley My Generation - The Very Best Of The Who MPEG audio file Rock John Entwistle/Pete Townshend 309472 10141660 0.99 2744 Won't Get Fooled Again (Full Length Version) My Generation - The Very Best Of The Who MPEG audio file Rock John Entwistle/Pete Townshend 513750 16855521 0.99 2745 Let's See Action My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend 243513 8078418 0.99 2746 5.15 My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend 289619 9458549 0.99 2747 Join Together My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend 262556 8602485 0.99 2748 Squeeze Box My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend 161280 5256508 0.99 2749 Who Are You (Single Edit Version) My Generation - The Very Best Of The Who MPEG audio file Rock John Entwistle/Pete Townshend 299232 9900469 0.99 2750 You Better You Bet My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend 338520 11160877 0.99 2751 Primavera Serie Sem Limite (Disc 1) MPEG audio file Latin Genival Cassiano/Silvio Rochael 126615 4152604 0.99 2752 Chocolate Serie Sem Limite (Disc 1) MPEG audio file Latin Tim Maia 194690 6411587 0.99 2753 Azul Da Cor Do Mar Serie Sem Limite (Disc 1) MPEG audio file Latin Tim Maia 197955 6475007 0.99 2754 O Descobridor Dos Sete Mares Serie Sem Limite (Disc 1) MPEG audio file Latin Gilson Mendonça/Michel 262974 8749583 0.99 2755 Até Que Enfim Encontrei Você Serie Sem Limite (Disc 1) MPEG audio file Latin Tim Maia 105064 3477751 0.99 2756 Coroné Antonio Bento Serie Sem Limite (Disc 1) MPEG audio file Latin Do Vale, João/Luiz Wanderley 131317 4340326 0.99 2757 New Love Serie Sem Limite (Disc 1) MPEG audio file Latin Tim Maia 237897 7786824 0.99 2758 Não Vou Ficar Serie Sem Limite (Disc 1) MPEG audio file Latin Tim Maia 172068 5642919 0.99 2759 Música No Ar Serie Sem Limite (Disc 1) MPEG audio file Latin Tim Maia 158511 5184891 0.99 2760 Salve Nossa Senhora Serie Sem Limite (Disc 1) MPEG audio file Latin Carlos Imperial/Edardo Araújo 115461 3827629 0.99 2761 Você Fugiu Serie Sem Limite (Disc 1) MPEG audio file Latin Genival Cassiano 238367 7971147 0.99 2762 Cristina Nº 2 Serie Sem Limite (Disc 1) MPEG audio file Latin Carlos Imperial/Tim Maia 90148 2978589 0.99 2763 Compadre Serie Sem Limite (Disc 1) MPEG audio file Latin Tim Maia 171389 5631446 0.99 2764 Over Again Serie Sem Limite (Disc 1) MPEG audio file Latin Tim Maia 200489 6612634 0.99 2765 Réu Confesso Serie Sem Limite (Disc 1) MPEG audio file Latin Tim Maia 217391 7189874 0.99 2766 O Que Me Importa Serie Sem Limite (Disc 2) MPEG audio file Latin \N 153155 4977852 0.99 2767 Gostava Tanto De Você Serie Sem Limite (Disc 2) MPEG audio file Latin \N 253805 8380077 0.99 2768 Você Serie Sem Limite (Disc 2) MPEG audio file Latin \N 242599 7911702 0.99 2769 Não Quero Dinheiro Serie Sem Limite (Disc 2) MPEG audio file Latin \N 152607 5031797 0.99 2770 Eu Amo Você Serie Sem Limite (Disc 2) MPEG audio file Latin \N 242782 7914628 0.99 2771 A Festa Do Santo Reis Serie Sem Limite (Disc 2) MPEG audio file Latin \N 159791 5204995 0.99 2772 I Don't Know What To Do With Myself Serie Sem Limite (Disc 2) MPEG audio file Latin \N 221387 7251478 0.99 2773 Padre Cícero Serie Sem Limite (Disc 2) MPEG audio file Latin \N 139598 4581685 0.99 2774 Nosso Adeus Serie Sem Limite (Disc 2) MPEG audio file Latin \N 206471 6793270 0.99 2775 Canário Do Reino Serie Sem Limite (Disc 2) MPEG audio file Latin \N 139337 4552858 0.99 2776 Preciso Ser Amado Serie Sem Limite (Disc 2) MPEG audio file Latin \N 174001 5618895 0.99 2777 Balanço Serie Sem Limite (Disc 2) MPEG audio file Latin \N 209737 6890327 0.99 2778 Preciso Aprender A Ser Só Serie Sem Limite (Disc 2) MPEG audio file Latin \N 162220 5213894 0.99 2779 Esta É A Canção Serie Sem Limite (Disc 2) MPEG audio file Latin \N 184450 6069933 0.99 2780 Formigueiro Serie Sem Limite (Disc 2) MPEG audio file Latin \N 252943 8455132 0.99 2781 Comida Acústico MPEG audio file Alternative & Punk Titãs 322612 10786578 0.99 2782 Go Back Acústico MPEG audio file Alternative & Punk Titãs 230504 7668899 0.99 2783 Prá Dizer Adeus Acústico MPEG audio file Alternative & Punk Titãs 222484 7382048 0.99 2784 Família Acústico MPEG audio file Alternative & Punk Titãs 218331 7267458 0.99 2785 Os Cegos Do Castelo Acústico MPEG audio file Alternative & Punk Titãs 296829 9868187 0.99 2786 O Pulso Acústico MPEG audio file Alternative & Punk Titãs 199131 6566998 0.99 2787 Marvin Acústico MPEG audio file Alternative & Punk Titãs 264359 8741444 0.99 2788 Nem 5 Minutos Guardados Acústico MPEG audio file Alternative & Punk Titãs 245995 8143797 0.99 2789 Flores Acústico MPEG audio file Alternative & Punk Titãs 215510 7148017 0.99 2790 Palavras Acústico MPEG audio file Alternative & Punk Titãs 158458 5285715 0.99 2791 Hereditário Acústico MPEG audio file Alternative & Punk Titãs 151693 5020547 0.99 2792 A Melhor Forma Acústico MPEG audio file Alternative & Punk Titãs 191503 6349938 0.99 2793 Cabeça Dinossauro Acústico MPEG audio file Alternative & Punk Titãs 37120 1220930 0.99 2794 32 Dentes Acústico MPEG audio file Alternative & Punk Titãs 184946 6157904 0.99 2795 Bichos Escrotos (Vinheta) Acústico MPEG audio file Alternative & Punk Titãs 104986 3503755 0.99 2796 Não Vou Lutar Acústico MPEG audio file Alternative & Punk Titãs 189988 6308613 0.99 2797 Homem Primata (Vinheta) Acústico MPEG audio file Alternative & Punk Titãs 34168 1124909 0.99 2798 Homem Primata Acústico MPEG audio file Alternative & Punk Titãs 195500 6486470 0.99 2799 Polícia (Vinheta) Acústico MPEG audio file Alternative & Punk Titãs 56111 1824213 0.99 2800 Querem Meu Sangue Acústico MPEG audio file Alternative & Punk Titãs 212401 7069773 0.99 2801 Diversão Acústico MPEG audio file Alternative & Punk Titãs 285936 9531268 0.99 2802 Televisão Acústico MPEG audio file Alternative & Punk Titãs 293668 9776548 0.99 2803 Sonifera Ilha Volume Dois MPEG audio file Alternative & Punk Branco Mello/Carlos Barmack/Ciro Pessoa/Marcelo Fromer/Toni Belloto 170684 5678290 0.99 2804 Lugar Nenhum Volume Dois MPEG audio file Alternative & Punk Arnaldo Antunes/Charles Gavin/Marcelo Fromer/Sérgio Britto/Toni Bellotto 195840 6472780 0.99 2805 Sua Impossivel Chance Volume Dois MPEG audio file Alternative & Punk Nando Reis 246622 8073248 0.99 2806 Desordem Volume Dois MPEG audio file Alternative & Punk Charles Gavin/Marcelo Fromer/Sérgio Britto 213289 7067340 0.99 2807 Não Vou Me Adaptar Volume Dois MPEG audio file Alternative & Punk Arnaldo Antunes 221831 7304656 0.99 2808 Domingo Volume Dois MPEG audio file Alternative & Punk Sérgio Britto/Toni Bellotto 208613 6883180 0.99 2809 Amanhã Não Se Sabe Volume Dois MPEG audio file Alternative & Punk Sérgio Britto 189440 6243967 0.99 2810 Caras Como Eu Volume Dois MPEG audio file Alternative & Punk Toni Bellotto 183092 5999048 0.99 2811 Senhora E Senhor Volume Dois MPEG audio file Alternative & Punk Arnaldo Anutnes/Marcelo Fromer/Paulo Miklos 203702 6733733 0.99 2812 Era Uma Vez Volume Dois MPEG audio file Alternative & Punk Arnaldo Anutnes/Branco Mello/Marcelo Fromer/Sergio Brotto/Toni Bellotto 224261 7453156 0.99 2813 Miséria Volume Dois MPEG audio file Alternative & Punk Arnaldo Antunes/Britto, SergioMiklos, Paulo 262191 8727645 0.99 2814 Insensível Volume Dois MPEG audio file Alternative & Punk Sérgio Britto 207830 6893664 0.99 2815 Eu E Ela Volume Dois MPEG audio file Alternative & Punk Nando Reis 276035 9138846 0.99 2816 Toda Cor Volume Dois MPEG audio file Alternative & Punk Ciro Pressoa/Marcelo Fromer 209084 6939176 0.99 2817 É Preciso Saber Viver Volume Dois MPEG audio file Alternative & Punk Erasmo Carlos/Roberto Carlos 251115 8271418 0.99 2818 Senhor Delegado/Eu Não Aguento Volume Dois MPEG audio file Alternative & Punk Antonio Lopes 156656 5277983 0.99 2819 Battlestar Galactica: The Story So Far Battlestar Galactica: The Story So Far Protected MPEG-4 video file Science Fiction \N 2622250 490750393 1.99 2820 Occupation / Precipice Battlestar Galactica, Season 3 Protected MPEG-4 video file TV Shows \N 5286953 1054423946 1.99 2821 Exodus, Pt. 1 Battlestar Galactica, Season 3 Protected MPEG-4 video file TV Shows \N 2621708 475079441 1.99 2822 Exodus, Pt. 2 Battlestar Galactica, Season 3 Protected MPEG-4 video file TV Shows \N 2618000 466820021 1.99 2823 Collaborators Battlestar Galactica, Season 3 Protected MPEG-4 video file TV Shows \N 2626626 483484911 1.99 2824 Torn Battlestar Galactica, Season 3 Protected MPEG-4 video file TV Shows \N 2631291 495262585 1.99 2825 A Measure of Salvation Battlestar Galactica, Season 3 Protected MPEG-4 video file Science Fiction \N 2563938 489715554 1.99 2826 Hero Battlestar Galactica, Season 3 Protected MPEG-4 video file Science Fiction \N 2713755 506896959 1.99 2827 Unfinished Business Battlestar Galactica, Season 3 Protected MPEG-4 video file Science Fiction \N 2622038 528499160 1.99 2828 The Passage Battlestar Galactica, Season 3 Protected MPEG-4 video file Science Fiction \N 2623875 490375760 1.99 2829 The Eye of Jupiter Battlestar Galactica, Season 3 Protected MPEG-4 video file Science Fiction \N 2618750 517909587 1.99 2830 Rapture Battlestar Galactica, Season 3 Protected MPEG-4 video file Science Fiction \N 2624541 508406153 1.99 2831 Taking a Break from All Your Worries Battlestar Galactica, Season 3 Protected MPEG-4 video file Science Fiction \N 2624207 492700163 1.99 2832 The Woman King Battlestar Galactica, Season 3 Protected MPEG-4 video file Science Fiction \N 2626376 552893447 1.99 2833 A Day In the Life Battlestar Galactica, Season 3 Protected MPEG-4 video file Science Fiction \N 2620245 462818231 1.99 2834 Dirty Hands Battlestar Galactica, Season 3 Protected MPEG-4 video file Science Fiction \N 2627961 537648614 1.99 2835 Maelstrom Battlestar Galactica, Season 3 Protected MPEG-4 video file Science Fiction \N 2622372 514154275 1.99 2836 The Son Also Rises Battlestar Galactica, Season 3 Protected MPEG-4 video file Science Fiction \N 2621830 499258498 1.99 2837 Crossroads, Pt. 1 Battlestar Galactica, Season 3 Protected MPEG-4 video file Sci Fi & Fantasy \N 2622622 486233524 1.99 2838 Crossroads, Pt. 2 Battlestar Galactica, Season 3 Protected MPEG-4 video file Sci Fi & Fantasy \N 2869953 497335706 1.99 2839 Genesis Heroes, Season 1 Protected MPEG-4 video file TV Shows \N 2611986 515671080 1.99 2840 Don't Look Back Heroes, Season 1 Protected MPEG-4 video file Drama \N 2571154 493628775 1.99 2841 One Giant Leap Heroes, Season 1 Protected MPEG-4 video file Drama \N 2607649 521616246 1.99 2842 Collision Heroes, Season 1 Protected MPEG-4 video file Drama \N 2605480 526182322 1.99 2843 Hiros Heroes, Season 1 Protected MPEG-4 video file Drama \N 2533575 488835454 1.99 2844 Better Halves Heroes, Season 1 Protected MPEG-4 video file Drama \N 2573031 549353481 1.99 2845 Nothing to Hide Heroes, Season 1 Protected MPEG-4 video file TV Shows \N 2605647 510058181 1.99 2846 Seven Minutes to Midnight Heroes, Season 1 Protected MPEG-4 video file Drama \N 2613988 515590682 1.99 2847 Homecoming Heroes, Season 1 Protected MPEG-4 video file Drama \N 2601351 516015339 1.99 2848 Six Months Ago Heroes, Season 1 Protected MPEG-4 video file TV Shows \N 2602852 505133869 1.99 2849 Fallout Heroes, Season 1 Protected MPEG-4 video file Drama \N 2594761 501145440 1.99 2850 The Fix Heroes, Season 1 Protected MPEG-4 video file Drama \N 2600266 507026323 1.99 2851 Distractions Heroes, Season 1 Protected MPEG-4 video file Drama \N 2590382 537111289 1.99 2852 Run! Heroes, Season 1 Protected MPEG-4 video file Drama \N 2602602 542936677 1.99 2853 Unexpected Heroes, Season 1 Protected MPEG-4 video file Drama \N 2598139 511777758 1.99 2854 Company Man Heroes, Season 1 Protected MPEG-4 video file Drama \N 2601226 493168135 1.99 2855 Company Man Heroes, Season 1 Protected MPEG-4 video file Drama \N 2601101 503786316 1.99 2856 Parasite Heroes, Season 1 Protected MPEG-4 video file Drama \N 2602727 487461520 1.99 2857 A Tale of Two Cities Lost, Season 3 Protected MPEG-4 video file TV Shows \N 2636970 513691652 1.99 2858 Lost (Pilot, Part 1) [Premiere] Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2548875 217124866 1.99 2859 Man of Science, Man of Faith (Premiere) Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2612250 543342028 1.99 2860 Adrift Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2564958 502663995 1.99 2861 Lost (Pilot, Part 2) Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2436583 204995876 1.99 2862 The Glass Ballerina Lost, Season 3 Protected MPEG-4 video file Drama \N 2637458 535729216 1.99 2863 Further Instructions Lost, Season 3 Protected MPEG-4 video file TV Shows \N 2563980 502041019 1.99 2864 Orientation Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2609083 500600434 1.99 2865 Tabula Rasa Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2627105 210526410 1.99 2866 Every Man for Himself Lost, Season 3 Protected MPEG-4 video file Drama \N 2637387 513803546 1.99 2867 Everybody Hates Hugo Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2609192 498163145 1.99 2868 Walkabout Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2587370 207748198 1.99 2869 ...And Found Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2563833 500330548 1.99 2870 The Cost of Living Lost, Season 3 Protected MPEG-4 video file TV Shows \N 2637500 505647192 1.99 2871 White Rabbit Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2571965 201654606 1.99 2872 Abandoned Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2587041 537348711 1.99 2873 House of the Rising Sun Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2590032 210379525 1.99 2874 I Do Lost, Season 3 Protected MPEG-4 video file TV Shows \N 2627791 504676825 1.99 2875 Not In Portland Lost, Season 3 Protected MPEG-4 video file Drama \N 2637303 499061234 1.99 2876 Not In Portland Lost, Season 3 Protected MPEG-4 video file Drama \N 2637345 510546847 1.99 2877 The Moth Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2631327 228896396 1.99 2878 The Other 48 Days Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2610625 535256753 1.99 2879 Collision Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2564916 475656544 1.99 2880 Confidence Man Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2615244 223756475 1.99 2881 Flashes Before Your Eyes Lost, Season 3 Protected MPEG-4 video file Drama \N 2636636 537760755 1.99 2882 Lost Survival Guide Lost, Season 3 Protected MPEG-4 video file Drama \N 2632590 486675063 1.99 2883 Solitary Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2612894 207045178 1.99 2884 What Kate Did Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2610250 484583988 1.99 2885 Raised By Another Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2590459 223623810 1.99 2886 Stranger In a Strange Land Lost, Season 3 Protected MPEG-4 video file Drama \N 2636428 505056021 1.99 2887 The 23rd Psalm Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2610416 487401604 1.99 2888 All the Best Cowboys Have Daddy Issues Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2555492 211743651 1.99 2889 The Hunting Party Lost, Season 2 Protected MPEG-4 video file Drama \N 2611333 520350364 1.99 2890 Tricia Tanaka Is Dead Lost, Season 3 Protected MPEG-4 video file Drama \N 2635010 548197162 1.99 2891 Enter 77 Lost, Season 3 Protected MPEG-4 video file Drama \N 2629796 517521422 1.99 2892 Fire + Water Lost, Season 2 Protected MPEG-4 video file Drama \N 2600333 488458695 1.99 2893 Whatever the Case May Be Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2616410 183867185 1.99 2894 Hearts and Minds Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2619462 207607466 1.99 2895 Par Avion Lost, Season 3 Protected MPEG-4 video file Drama \N 2629879 517079642 1.99 2896 The Long Con Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2679583 518376636 1.99 2897 One of Them Lost, Season 2 Protected MPEG-4 video file Drama \N 2698791 542332389 1.99 2898 Special Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2618530 219961967 1.99 2899 The Man from Tallahassee Lost, Season 3 Protected MPEG-4 video file Drama \N 2637637 550893556 1.99 2900 Exposé Lost, Season 3 Protected MPEG-4 video file Drama \N 2593760 511338017 1.99 2901 Homecoming Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2515882 210675221 1.99 2902 Maternity Leave Lost, Season 2 Protected MPEG-4 video file Drama \N 2780416 555244214 1.99 2903 Left Behind Lost, Season 3 Protected MPEG-4 video file Drama \N 2635343 538491964 1.99 2904 Outlaws Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2619887 206500939 1.99 2905 The Whole Truth Lost, Season 2 Protected MPEG-4 video file Drama \N 2610125 495487014 1.99 2906 ...In Translation Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2604575 215441983 1.99 2907 Lockdown Lost, Season 2 Protected MPEG-4 video file Drama \N 2610250 543886056 1.99 2908 One of Us Lost, Season 3 Protected MPEG-4 video file Drama \N 2638096 502387276 1.99 2909 Catch-22 Lost, Season 3 Protected MPEG-4 video file Drama \N 2561394 489773399 1.99 2910 Dave Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2825166 574325829 1.99 2911 Numbers Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2609772 214709143 1.99 2912 D.O.C. Lost, Season 3 Protected MPEG-4 video file Drama \N 2616032 518556641 1.99 2913 Deus Ex Machina Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2582009 214996732 1.99 2914 S.O.S. Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2639541 517979269 1.99 2915 Do No Harm Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2618487 212039309 1.99 2916 Two for the Road Lost, Season 2 Protected MPEG-4 video file Drama \N 2610958 502404558 1.99 2917 The Greater Good Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2617784 214130273 1.99 2918 "?" Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2782333 528227089 1.99 2919 Born to Run Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2618619 213772057 1.99 2920 Three Minutes Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2763666 531556853 1.99 2921 Exodus (Part 1) Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2620747 213107744 1.99 2922 Live Together, Die Alone, Pt. 1 Lost, Season 2 Protected MPEG-4 video file Drama \N 2478041 457364940 1.99 2923 Exodus (Part 2) [Season Finale] Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2605557 208667059 1.99 2924 Live Together, Die Alone, Pt. 2 Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2656531 503619265 1.99 2925 Exodus (Part 3) [Season Finale] Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2619869 197937785 1.99 2926 Zoo Station Achtung Baby MPEG audio file Rock U2 276349 9056902 0.99 2927 Even Better Than The Real Thing Achtung Baby MPEG audio file Rock U2 221361 7279392 0.99 2928 One Achtung Baby MPEG audio file Rock U2 276192 9158892 0.99 2929 Until The End Of The World Achtung Baby MPEG audio file Rock U2 278700 9132485 0.99 2930 Who's Gonna Ride Your Wild Horses Achtung Baby MPEG audio file Rock U2 316551 10304369 0.99 2931 So Cruel Achtung Baby MPEG audio file Rock U2 349492 11527614 0.99 2932 The Fly Achtung Baby MPEG audio file Rock U2 268982 8825399 0.99 2933 Mysterious Ways Achtung Baby MPEG audio file Rock U2 243826 8062057 0.99 2934 Tryin' To Throw Your Arms Around The World Achtung Baby MPEG audio file Rock U2 232463 7612124 0.99 2935 Ultraviolet (Light My Way) Achtung Baby MPEG audio file Rock U2 330788 10754631 0.99 2936 Acrobat Achtung Baby MPEG audio file Rock U2 270288 8824723 0.99 2937 Love Is Blindness Achtung Baby MPEG audio file Rock U2 263497 8531766 0.99 2938 Beautiful Day All That You Can't Leave Behind MPEG audio file Rock Adam Clayton, Bono, Larry Mullen, The Edge 248163 8056723 0.99 2939 Stuck In A Moment You Can't Get Out Of All That You Can't Leave Behind MPEG audio file Rock Adam Clayton, Bono, Larry Mullen, The Edge 272378 8997366 0.99 2940 Elevation All That You Can't Leave Behind MPEG audio file Rock Adam Clayton, Bono, Larry Mullen, The Edge 227552 7479414 0.99 2941 Walk On All That You Can't Leave Behind MPEG audio file Rock Adam Clayton, Bono, Larry Mullen, The Edge 296280 9800861 0.99 2942 Kite All That You Can't Leave Behind MPEG audio file Rock Adam Clayton, Bono, Larry Mullen, The Edge 266893 8765761 0.99 2943 In A Little While All That You Can't Leave Behind MPEG audio file Rock Adam Clayton, Bono, Larry Mullen, The Edge 219271 7189647 0.99 2944 Wild Honey All That You Can't Leave Behind MPEG audio file Rock Adam Clayton, Bono, Larry Mullen, The Edge 226768 7466069 0.99 2945 Peace On Earth All That You Can't Leave Behind MPEG audio file Rock Adam Clayton, Bono, Larry Mullen, The Edge 288496 9476171 0.99 2946 When I Look At The World All That You Can't Leave Behind MPEG audio file Rock Adam Clayton, Bono, Larry Mullen, The Edge 257776 8500491 0.99 2947 New York All That You Can't Leave Behind MPEG audio file Rock Adam Clayton, Bono, Larry Mullen, The Edge 330370 10862323 0.99 2948 Grace All That You Can't Leave Behind MPEG audio file Rock Adam Clayton, Bono, Larry Mullen, The Edge 330657 10877148 0.99 2949 The Three Sunrises B-Sides 1980-1990 MPEG audio file Rock U2 234788 7717990 0.99 2950 Spanish Eyes B-Sides 1980-1990 MPEG audio file Rock U2 196702 6392710 0.99 2951 Sweetest Thing B-Sides 1980-1990 MPEG audio file Rock U2 185103 6154896 0.99 2952 Love Comes Tumbling B-Sides 1980-1990 MPEG audio file Rock U2 282671 9328802 0.99 2953 Bass Trap B-Sides 1980-1990 MPEG audio file Rock U2 213289 6834107 0.99 2954 Dancing Barefoot B-Sides 1980-1990 MPEG audio file Rock Ivan Kral/Patti Smith 287895 9488294 0.99 2955 Everlasting Love B-Sides 1980-1990 MPEG audio file Rock Buzz Cason/Mac Gayden 202631 6708932 0.99 2956 Unchained Melody B-Sides 1980-1990 MPEG audio file Rock Alex North/Hy Zaret 294164 9597568 0.99 2957 Walk To The Water B-Sides 1980-1990 MPEG audio file Rock U2 289253 9523336 0.99 2958 Luminous Times (Hold On To Love) B-Sides 1980-1990 MPEG audio file Rock Brian Eno/U2 277760 9015513 0.99 2959 Hallelujah Here She Comes B-Sides 1980-1990 MPEG audio file Rock U2 242364 8027028 0.99 2960 Silver And Gold B-Sides 1980-1990 MPEG audio file Rock Bono 279875 9199746 0.99 2961 Endless Deep B-Sides 1980-1990 MPEG audio file Rock U2 179879 5899070 0.99 2962 A Room At The Heartbreak Hotel B-Sides 1980-1990 MPEG audio file Rock U2 274546 9015416 0.99 2963 Trash, Trampoline And The Party Girl B-Sides 1980-1990 MPEG audio file Rock U2 153965 5083523 0.99 2964 Vertigo How To Dismantle An Atomic Bomb MPEG audio file Rock Adam Clayton, Bono, Larry Mullen & The Edge 194612 6329502 0.99 2965 Miracle Drug How To Dismantle An Atomic Bomb MPEG audio file Rock Adam Clayton, Bono, Larry Mullen & The Edge 239124 7760916 0.99 2966 Sometimes You Can't Make It On Your Own How To Dismantle An Atomic Bomb MPEG audio file Rock Adam Clayton, Bono, Larry Mullen & The Edge 308976 10112863 0.99 2967 Love And Peace Or Else How To Dismantle An Atomic Bomb MPEG audio file Rock Adam Clayton, Bono, Larry Mullen & The Edge 290690 9476723 0.99 2968 City Of Blinding Lights How To Dismantle An Atomic Bomb MPEG audio file Rock Adam Clayton, Bono, Larry Mullen & The Edge 347951 11432026 0.99 2969 All Because Of You How To Dismantle An Atomic Bomb MPEG audio file Rock Adam Clayton, Bono, Larry Mullen & The Edge 219141 7198014 0.99 2970 A Man And A Woman How To Dismantle An Atomic Bomb MPEG audio file Rock Adam Clayton, Bono, Larry Mullen & The Edge 270132 8938285 0.99 2971 Crumbs From Your Table How To Dismantle An Atomic Bomb MPEG audio file Rock Adam Clayton, Bono, Larry Mullen & The Edge 303568 9892349 0.99 2972 One Step Closer How To Dismantle An Atomic Bomb MPEG audio file Rock Adam Clayton, Bono, Larry Mullen & The Edge 231680 7512912 0.99 2973 Original Of The Species How To Dismantle An Atomic Bomb MPEG audio file Rock Adam Clayton, Bono, Larry Mullen & The Edge 281443 9230041 0.99 2974 Yahweh How To Dismantle An Atomic Bomb MPEG audio file Rock Adam Clayton, Bono, Larry Mullen & The Edge 262034 8636998 0.99 2975 Discotheque Pop MPEG audio file Rock Bono, The Edge, Adam Clayton, and Larry Mullen 319582 10442206 0.99 2976 Do You Feel Loved Pop MPEG audio file Rock Bono, The Edge, Adam Clayton, and Larry Mullen 307539 10122694 0.99 2977 Mofo Pop MPEG audio file Rock Bono, The Edge, Adam Clayton, and Larry Mullen 349178 11583042 0.99 2978 If God Will Send His Angels Pop MPEG audio file Rock Bono, The Edge, Adam Clayton, and Larry Mullen 322533 10563329 0.99 2979 Staring At The Sun Pop MPEG audio file Rock Bono, The Edge, Adam Clayton, and Larry Mullen 276924 9082838 0.99 2980 Last Night On Earth Pop MPEG audio file Rock Bono, The Edge, Adam Clayton, and Larry Mullen 285753 9401017 0.99 2981 Gone Pop MPEG audio file Rock Bono, The Edge, Adam Clayton, and Larry Mullen 266866 8746301 0.99 2982 Miami Pop MPEG audio file Rock Bono, The Edge, Adam Clayton, and Larry Mullen 293041 9741603 0.99 2983 The Playboy Mansion Pop MPEG audio file Rock Bono, The Edge, Adam Clayton, and Larry Mullen 280555 9274144 0.99 2984 If You Wear That Velvet Dress Pop MPEG audio file Rock Bono, The Edge, Adam Clayton, and Larry Mullen 315167 10227333 0.99 2985 Please Pop MPEG audio file Rock Bono, The Edge, Adam Clayton, and Larry Mullen 302602 9909484 0.99 2986 Wake Up Dead Man Pop MPEG audio file Rock Bono, The Edge, Adam Clayton, and Larry Mullen 292832 9515903 0.99 2987 Helter Skelter Rattle And Hum MPEG audio file Rock Lennon, John/McCartney, Paul 187350 6097636 0.99 2988 Van Diemen's Land Rattle And Hum MPEG audio file Rock Bono/Clayton, Adam/Mullen Jr., Larry/The Edge 186044 5990280 0.99 2989 Desire Rattle And Hum MPEG audio file Rock Bono/Clayton, Adam/Mullen Jr., Larry/The Edge 179226 5874535 0.99 2990 Hawkmoon 269 Rattle And Hum MPEG audio file Rock Bono/Clayton, Adam/Mullen Jr., Larry/The Edge 382458 12494987 0.99 2991 All Along The Watchtower Rattle And Hum MPEG audio file Rock Dylan, Bob 264568 8623572 0.99 2992 I Still Haven't Found What I'm Looking for Rattle And Hum MPEG audio file Rock Bono/Clayton, Adam/Mullen Jr., Larry/The Edge 353567 11542247 0.99 2993 Freedom For My People Rattle And Hum MPEG audio file Rock Mabins, Macie/Magee, Sterling/Robinson, Bobby 38164 1249764 0.99 2994 Silver And Gold Rattle And Hum MPEG audio file Rock Bono/Clayton, Adam/Mullen Jr., Larry/The Edge 349831 11450194 0.99 2995 Pride (In The Name Of Love) Rattle And Hum MPEG audio file Rock Bono/Clayton, Adam/Mullen Jr., Larry/The Edge 267807 8806361 0.99 2996 Angel Of Harlem Rattle And Hum MPEG audio file Rock Bono/Clayton, Adam/Mullen Jr., Larry/The Edge 229276 7498022 0.99 2997 Love Rescue Me Rattle And Hum MPEG audio file Rock Bono/Clayton, Adam/Dylan, Bob/Mullen Jr., Larry/The Edge 384522 12508716 0.99 2998 When Love Comes To Town Rattle And Hum MPEG audio file Rock Bono/Clayton, Adam/Mullen Jr., Larry/The Edge 255869 8340954 0.99 2999 Heartland Rattle And Hum MPEG audio file Rock Bono/Clayton, Adam/Mullen Jr., Larry/The Edge 303360 9867748 0.99 3000 God Part II Rattle And Hum MPEG audio file Rock Bono/Clayton, Adam/Mullen Jr., Larry/The Edge 195604 6497570 0.99 3001 The Star Spangled Banner Rattle And Hum MPEG audio file Rock Hendrix, Jimi 43232 1385810 0.99 3002 Bullet The Blue Sky Rattle And Hum MPEG audio file Rock Bono/Clayton, Adam/Mullen Jr., Larry/The Edge 337005 10993607 0.99 3003 All I Want Is You Rattle And Hum MPEG audio file Rock Bono/Clayton, Adam/Mullen Jr., Larry/The Edge 390243 12729820 0.99 3004 Pride (In The Name Of Love) The Best Of 1980-1990 MPEG audio file Rock U2 230243 7549085 0.99 3005 New Year's Day The Best Of 1980-1990 MPEG audio file Rock U2 258925 8491818 0.99 3006 With Or Without You The Best Of 1980-1990 MPEG audio file Rock U2 299023 9765188 0.99 3007 I Still Haven't Found What I'm Looking For The Best Of 1980-1990 MPEG audio file Rock U2 280764 9306737 0.99 3008 Sunday Bloody Sunday The Best Of 1980-1990 MPEG audio file Rock U2 282174 9269668 0.99 3009 Bad The Best Of 1980-1990 MPEG audio file Rock U2 351817 11628058 0.99 3010 Where The Streets Have No Name The Best Of 1980-1990 MPEG audio file Rock U2 276218 9042305 0.99 3011 I Will Follow The Best Of 1980-1990 MPEG audio file Rock U2 218253 7184825 0.99 3012 The Unforgettable Fire The Best Of 1980-1990 MPEG audio file Rock U2 295183 9684664 0.99 3013 Sweetest Thing The Best Of 1980-1990 MPEG audio file Rock U2 & Daragh O'Toole 183066 6071385 0.99 3014 Desire The Best Of 1980-1990 MPEG audio file Rock U2 179853 5893206 0.99 3015 When Love Comes To Town The Best Of 1980-1990 MPEG audio file Rock U2 258194 8479525 0.99 3016 Angel Of Harlem The Best Of 1980-1990 MPEG audio file Rock U2 230217 7527339 0.99 3017 All I Want Is You The Best Of 1980-1990 MPEG audio file Rock U2 & Van Dyke Parks 591986 19202252 0.99 3018 Sunday Bloody Sunday War MPEG audio file Rock U2 278204 9140849 0.99 3019 Seconds War MPEG audio file Rock U2 191582 6352121 0.99 3020 New Year's Day War MPEG audio file Rock U2 336274 11054732 0.99 3021 Like A Song... War MPEG audio file Rock U2 287294 9365379 0.99 3022 Drowning Man War MPEG audio file Rock U2 254458 8457066 0.99 3023 The Refugee War MPEG audio file Rock U2 221283 7374043 0.99 3024 Two Hearts Beat As One War MPEG audio file Rock U2 243487 7998323 0.99 3025 Red Light War MPEG audio file Rock U2 225854 7453704 0.99 3026 Surrender War MPEG audio file Rock U2 333505 11221406 0.99 3027 "40" War MPEG audio file Rock U2 157962 5251767 0.99 3028 Zooropa Zooropa MPEG audio file Rock U2; Bono 392359 12807979 0.99 3029 Babyface Zooropa MPEG audio file Rock U2; Bono 241998 7942573 0.99 3030 Numb Zooropa MPEG audio file Rock U2; Edge, The 260284 8577861 0.99 3031 Lemon Zooropa MPEG audio file Rock U2; Bono 418324 13988878 0.99 3032 Stay (Faraway, So Close!) Zooropa MPEG audio file Rock U2; Bono 298475 9785480 0.99 3033 Daddy's Gonna Pay For Your Crashed Car Zooropa MPEG audio file Rock U2; Bono 320287 10609581 0.99 3034 Some Days Are Better Than Others Zooropa MPEG audio file Rock U2; Bono 257436 8417690 0.99 3035 The First Time Zooropa MPEG audio file Rock U2; Bono 225697 7247651 0.99 3036 Dirty Day Zooropa MPEG audio file Rock U2; Bono & Edge, The 324440 10652877 0.99 3037 The Wanderer Zooropa MPEG audio file Rock U2; Bono 283951 9258717 0.99 3038 Breakfast In Bed UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 196179 6513325 0.99 3039 Where Did I Go Wrong UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 226742 7485054 0.99 3040 I Would Do For You UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 334524 11193602 0.99 3041 Homely Girl UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 203833 6790788 0.99 3042 Here I Am (Come And Take Me) UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 242102 8106249 0.99 3043 Kingston Town UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 226951 7638236 0.99 3044 Wear You To The Ball UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 213342 7159527 0.99 3045 (I Can't Help) Falling In Love With You UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 207568 6905623 0.99 3046 Higher Ground UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 260179 8665244 0.99 3047 Bring Me Your Cup UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 341498 11346114 0.99 3048 C'est La Vie UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 270053 9031661 0.99 3049 Reggae Music UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 245106 8203931 0.99 3050 Superstition UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 319582 10728099 0.99 3051 Until My Dying Day UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 235807 7886195 0.99 3052 Where Have All The Good Times Gone? Diver Down MPEG audio file Rock Ray Davies 186723 6063937 0.99 3053 Hang 'Em High Diver Down MPEG audio file Rock Alex Van Halen/David Lee Roth/Edward Van Halen/Michael Anthony 210259 6872314 0.99 3054 Cathedral Diver Down MPEG audio file Rock Alex Van Halen/David Lee Roth/Edward Van Halen/Michael Anthony 82860 2650998 0.99 3055 Secrets Diver Down MPEG audio file Rock Alex Van Halen/David Lee Roth/Edward Van Halen/Michael Anthony 206968 6803255 0.99 3056 Intruder Diver Down MPEG audio file Rock Alex Van Halen/David Lee Roth/Edward Van Halen/Michael Anthony 100153 3282142 0.99 3057 (Oh) Pretty Woman Diver Down MPEG audio file Rock Bill Dees/Roy Orbison 174680 5665828 0.99 3058 Dancing In The Street Diver Down MPEG audio file Rock Ivy Jo Hunter/Marvin Gaye/William Stevenson 225985 7461499 0.99 3059 Little Guitars (Intro) Diver Down MPEG audio file Rock Alex Van Halen/David Lee Roth/Edward Van Halen/Michael Anthony 42240 1439530 0.99 3060 Little Guitars Diver Down MPEG audio file Rock Alex Van Halen/David Lee Roth/Edward Van Halen/Michael Anthony 228806 7453043 0.99 3061 Big Bad Bill (Is Sweet William Now) Diver Down MPEG audio file Rock Jack Yellen/Milton Ager 165146 5489609 0.99 3062 The Full Bug Diver Down MPEG audio file Rock Alex Van Halen/David Lee Roth/Edward Van Halen/Michael Anthony 201116 6551013 0.99 3063 Happy Trails Diver Down MPEG audio file Rock Dale Evans 65488 2111141 0.99 3064 Eruption The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, David Lee Roth, Michael Anthony 102164 3272891 0.99 3065 Ain't Talkin' 'bout Love The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, David Lee Roth, Michael Anthony 228336 7569506 0.99 3066 Runnin' With The Devil The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, David Lee Roth, Michael Anthony 215902 7061901 0.99 3067 Dance the Night Away The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, David Lee Roth, Michael Anthony 185965 6087433 0.99 3068 And the Cradle Will Rock... The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, David Lee Roth, Michael Anthony 213968 7011402 0.99 3069 Unchained The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, David Lee Roth, Michael Anthony 208953 6777078 0.99 3070 Jump The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, David Lee Roth 241711 7911090 0.99 3071 Panama The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, David Lee Roth 211853 6921784 0.99 3072 Why Can't This Be Love The Best Of Van Halen, Vol. I MPEG audio file Rock Van Halen 227761 7457655 0.99 3073 Dreams The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony,/Edward Van Halen, Alex Van Halen, Michael Anthony, Sammy Hagar 291813 9504119 0.99 3074 When It's Love The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony,/Edward Van Halen, Alex Van Halen, Michael Anthony, Sammy Hagar 338991 11049966 0.99 3128 Samba Do Jato Vinicius De Moraes MPEG audio file Latin \N 220813 7357840 0.99 3075 Poundcake The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony,/Edward Van Halen, Alex Van Halen, Michael Anthony, Sammy Hagar 321854 10366978 0.99 3076 Right Now The Best Of Van Halen, Vol. I MPEG audio file Rock Van Halen 321828 10503352 0.99 3077 Can't Stop Loving You The Best Of Van Halen, Vol. I MPEG audio file Rock Van Halen 248502 8107896 0.99 3078 Humans Being The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony,/Edward Van Halen, Alex Van Halen, Michael Anthony, Sammy Hagar 308950 10014683 0.99 3079 Can't Get This Stuff No More The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony,/Edward Van Halen, Alex Van Halen, Michael Anthony, David Lee Roth 315376 10355753 0.99 3080 Me Wise Magic The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony,/Edward Van Halen, Alex Van Halen, Michael Anthony, David Lee Roth 366053 12013467 0.99 3081 Runnin' With The Devil Van Halen MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony and David Lee Roth 216032 7056863 0.99 3082 Eruption Van Halen MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony and David Lee Roth 102556 3286026 0.99 3083 You Really Got Me Van Halen MPEG audio file Rock Ray Davies 158589 5194092 0.99 3084 Ain't Talkin' 'Bout Love Van Halen MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony and David Lee Roth 230060 7617284 0.99 3085 I'm The One Van Halen MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony and David Lee Roth 226507 7373922 0.99 3086 Jamie's Cryin' Van Halen MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony and David Lee Roth 210546 6946086 0.99 3087 Atomic Punk Van Halen MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony and David Lee Roth 182073 5908861 0.99 3088 Feel Your Love Tonight Van Halen MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony and David Lee Roth 222850 7293608 0.99 3089 Little Dreamer Van Halen MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony and David Lee Roth 203258 6648122 0.99 3090 Ice Cream Man Van Halen MPEG audio file Rock John Brim 200306 6573145 0.99 3091 On Fire Van Halen MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony and David Lee Roth 180636 5879235 0.99 3092 Neworld Van Halen III MPEG audio file Rock Van Halen 105639 3495897 0.99 3093 Without You Van Halen III MPEG audio file Rock Van Halen 390295 12619558 0.99 3094 One I Want Van Halen III MPEG audio file Rock Van Halen 330788 10743970 0.99 3095 From Afar Van Halen III MPEG audio file Rock Van Halen 324414 10524554 0.99 3096 Dirty Water Dog Van Halen III MPEG audio file Rock Van Halen 327392 10709202 0.99 3097 Once Van Halen III MPEG audio file Rock Van Halen 462837 15378082 0.99 3098 Fire in the Hole Van Halen III MPEG audio file Rock Van Halen 331728 10846768 0.99 3099 Josephina Van Halen III MPEG audio file Rock Van Halen 342491 11161521 0.99 3100 Year to the Day Van Halen III MPEG audio file Rock Van Halen 514612 16621333 0.99 3101 Primary Van Halen III MPEG audio file Rock Van Halen 86987 2812555 0.99 3102 Ballot or the Bullet Van Halen III MPEG audio file Rock Van Halen 342282 11212955 0.99 3103 How Many Say I Van Halen III MPEG audio file Rock Van Halen 363937 11716855 0.99 3104 Sucker Train Blues Contraband MPEG audio file Rock Dave Kushner, Duff, Matt Sorum, Scott Weiland & Slash 267859 8738780 0.99 3105 Do It For The Kids Contraband MPEG audio file Rock Dave Kushner, Duff, Matt Sorum, Scott Weiland & Slash 235911 7693331 0.99 3106 Big Machine Contraband MPEG audio file Rock Dave Kushner, Duff, Matt Sorum, Scott Weiland & Slash 265613 8673442 0.99 3107 Illegal I Song Contraband MPEG audio file Rock Dave Kushner, Duff, Matt Sorum, Scott Weiland & Slash 257750 8483347 0.99 3108 Spectacle Contraband MPEG audio file Rock Dave Kushner, Duff, Matt Sorum, Scott Weiland & Slash 221701 7252876 0.99 3109 Fall To Pieces Contraband MPEG audio file Rock Dave Kushner, Duff, Matt Sorum, Scott Weiland & Slash 270889 8823096 0.99 3110 Headspace Contraband MPEG audio file Rock Dave Kushner, Duff, Matt Sorum, Scott Weiland & Slash 223033 7237986 0.99 3111 Superhuman Contraband MPEG audio file Rock Dave Kushner, Duff, Matt Sorum, Scott Weiland & Slash 255921 8365328 0.99 3112 Set Me Free Contraband MPEG audio file Rock Dave Kushner, Duff, Matt Sorum, Scott Weiland & Slash 247954 8053388 0.99 3113 You Got No Right Contraband MPEG audio file Rock Dave Kushner, Duff, Matt Sorum, Scott Weiland & Slash 335412 10991094 0.99 3114 Slither Contraband MPEG audio file Rock Dave Kushner, Duff, Matt Sorum, Scott Weiland & Slash 248398 8118785 0.99 3115 Dirty Little Thing Contraband MPEG audio file Rock Dave Kushner, Duff, Keith Nelson, Matt Sorum, Scott Weiland & Slash 237844 7732982 0.99 3116 Loving The Alien Contraband MPEG audio file Rock Dave Kushner, Duff, Matt Sorum, Scott Weiland & Slash 348786 11412762 0.99 3117 Pela Luz Dos Olhos Teus Vinicius De Moraes MPEG audio file Latin \N 119196 3905715 0.99 3118 A Bencao E Outros Vinicius De Moraes MPEG audio file Latin \N 421093 14234427 0.99 3119 Tudo Na Mais Santa Paz Vinicius De Moraes MPEG audio file Latin \N 222406 7426757 0.99 3120 O Velho E Aflor Vinicius De Moraes MPEG audio file Latin \N 275121 9126828 0.99 3121 Cotidiano N 2 Vinicius De Moraes MPEG audio file Latin \N 55902 1805797 0.99 3122 Adeus Vinicius De Moraes MPEG audio file Latin \N 221884 7259351 0.99 3123 Samba Pra Endrigo Vinicius De Moraes MPEG audio file Latin \N 259265 8823551 0.99 3124 So Por Amor Vinicius De Moraes MPEG audio file Latin \N 236591 7745764 0.99 3125 Meu Pranto Rolou Vinicius De Moraes MPEG audio file Latin \N 181760 6003345 0.99 3126 Mulher Carioca Vinicius De Moraes MPEG audio file Latin \N 191686 6395048 0.99 3127 Um Homem Chamado Alfredo Vinicius De Moraes MPEG audio file Latin \N 151640 4976227 0.99 3129 Oi, La Vinicius De Moraes MPEG audio file Latin \N 167053 5562700 0.99 3130 Vinicius, Poeta Do Encontro Vinicius De Moraes MPEG audio file Latin \N 336431 10858776 0.99 3131 Soneto Da Separacao Vinicius De Moraes MPEG audio file Latin \N 193880 6277511 0.99 3132 Still Of The Night Greatest Hits MPEG audio file Metal Sykes 398210 13043817 0.99 3133 Here I Go Again Greatest Hits MPEG audio file Metal Marsden 233874 7652473 0.99 3134 Is This Love Greatest Hits MPEG audio file Metal Sykes 283924 9262360 0.99 3135 Love Ain't No Stranger Greatest Hits MPEG audio file Metal Galley 259395 8490428 0.99 3136 Looking For Love Greatest Hits MPEG audio file Metal Sykes 391941 12769847 0.99 3137 Now You're Gone Greatest Hits MPEG audio file Metal Vandenberg 251141 8162193 0.99 3138 Slide It In Greatest Hits MPEG audio file Metal Coverdale 202475 6615152 0.99 3139 Slow An' Easy Greatest Hits MPEG audio file Metal Moody 367255 11961332 0.99 3140 Judgement Day Greatest Hits MPEG audio file Metal Vandenberg 317074 10326997 0.99 3141 You're Gonna Break My Hart Again Greatest Hits MPEG audio file Metal Sykes 250853 8176847 0.99 3142 The Deeper The Love Greatest Hits MPEG audio file Metal Vandenberg 262791 8606504 0.99 3143 Crying In The Rain Greatest Hits MPEG audio file Metal Coverdale 337005 10931921 0.99 3144 Fool For Your Loving Greatest Hits MPEG audio file Metal Marsden/Moody 250801 8129820 0.99 3145 Sweet Lady Luck Greatest Hits MPEG audio file Metal Vandenberg 273737 8919163 0.99 3146 Faixa Amarela Ao Vivo [IMPORT] MPEG audio file Latin Beto Gogo/Jessé Pai/Luiz Carlos/Zeca Pagodinho 240692 8082036 0.99 3147 Posso Até Me Apaixonar Ao Vivo [IMPORT] MPEG audio file Latin Dudu Nobre 200698 6735526 0.99 3148 Não Sou Mais Disso Ao Vivo [IMPORT] MPEG audio file Latin Jorge Aragão/Zeca Pagodinho 225985 7613817 0.99 3149 Vivo Isolado Do Mundo Ao Vivo [IMPORT] MPEG audio file Latin Alcides Dias Lopes 180035 6073995 0.99 3150 Coração Em Desalinho Ao Vivo [IMPORT] MPEG audio file Latin Mauro Diniz/Ratino Sigem 185208 6225948 0.99 3151 Seu Balancê Ao Vivo [IMPORT] MPEG audio file Latin Paulinho Rezende/Toninho Geraes 219454 7311219 0.99 3152 Vai Adiar Ao Vivo [IMPORT] MPEG audio file Latin Alcino Corrêa/Monarco 270393 9134882 0.99 3153 Rugas Ao Vivo [IMPORT] MPEG audio file Latin Augusto Garcez/Nelson Cavaquinho 140930 4703182 0.99 3154 Feirinha da Pavuna/Luz do Repente/Bagaço da Laranja Ao Vivo [IMPORT] MPEG audio file Latin Arlindo Cruz/Franco/Marquinhos PQD/Negro, Jovelina Pérolo/Zeca Pagodinho 107206 3593684 0.99 3155 Sem Essa de Malandro Agulha Ao Vivo [IMPORT] MPEG audio file Latin Aldir Blanc/Jayme Vignoli 158484 5332668 0.99 3156 Chico Não Vai na Corimba Ao Vivo [IMPORT] MPEG audio file Latin Dudu Nobre/Zeca Pagodinho 269374 9122188 0.99 3157 Papel Principal Ao Vivo [IMPORT] MPEG audio file Latin Almir Guineto/Dedé Paraiso/Luverci Ernesto 217495 7325302 0.99 3158 Saudade Louca Ao Vivo [IMPORT] MPEG audio file Latin Acyr Marques/Arlindo Cruz/Franco 243591 8136475 0.99 3159 Camarão que Dorme e Onda Leva Ao Vivo [IMPORT] MPEG audio file Latin Acyi Marques/Arlindo Bruz/Braço, Beto Sem/Zeca Pagodinho 299102 10012231 0.99 3160 Sapopemba e Maxambomba Ao Vivo [IMPORT] MPEG audio file Latin Nei Lopes/Wilson Moreira 245394 8268712 0.99 3161 Minha Fé Ao Vivo [IMPORT] MPEG audio file Latin Murilão 206994 6981474 0.99 3162 Lua de Ogum Ao Vivo [IMPORT] MPEG audio file Latin Ratinho/Zeca Pagodinho 168463 5719129 0.99 3163 Samba pras moças Ao Vivo [IMPORT] MPEG audio file Latin Grazielle/Roque Ferreira 152816 5121366 0.99 3164 Verdade Ao Vivo [IMPORT] MPEG audio file Latin Carlinhos Santana/Nelson Rufino 332826 11120708 0.99 3165 The Brig Lost, Season 3 Protected MPEG-4 video file Drama \N 2617325 488919543 1.99 3166 .07% Heroes, Season 1 Protected MPEG-4 video file Drama \N 2585794 541715199 1.99 3167 Five Years Gone Heroes, Season 1 Protected MPEG-4 video file Drama \N 2587712 530551890 1.99 3168 The Hard Part Heroes, Season 1 Protected MPEG-4 video file Drama \N 2601017 475996611 1.99 3169 The Man Behind the Curtain Lost, Season 3 Protected MPEG-4 video file Drama \N 2615990 493951081 1.99 3170 Greatest Hits Lost, Season 3 Protected MPEG-4 video file Drama \N 2617117 522102916 1.99 3171 Landslide Heroes, Season 1 Protected MPEG-4 video file Drama \N 2600725 518677861 1.99 3172 The Office: An American Workplace (Pilot) The Office, Season 1 Protected MPEG-4 video file TV Shows \N 1380833 290482361 1.99 3173 Diversity Day The Office, Season 1 Protected MPEG-4 video file TV Shows \N 1306416 257879716 1.99 3174 Health Care The Office, Season 1 Protected MPEG-4 video file TV Shows \N 1321791 260493577 1.99 3175 The Alliance The Office, Season 1 Protected MPEG-4 video file TV Shows \N 1317125 266203162 1.99 3176 Basketball The Office, Season 1 Protected MPEG-4 video file TV Shows \N 1323541 267464180 1.99 3177 Hot Girl The Office, Season 1 Protected MPEG-4 video file TV Shows \N 1325458 267836576 1.99 3178 The Dundies The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1253541 246845576 1.99 3179 Sexual Harassment The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1294541 273069146 1.99 3180 Office Olympics The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1290458 256247623 1.99 3181 The Fire The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1288166 266856017 1.99 3182 Halloween The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1315333 249205209 1.99 3183 The Fight The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1320028 277149457 1.99 3184 The Client The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1299341 253836788 1.99 3185 Performance Review The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1292458 256143822 1.99 3186 Email Surveillance The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1328870 265101113 1.99 3187 Christmas Party The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1282115 260891300 1.99 3188 Booze Cruise The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1267958 252518021 1.99 3189 The Injury The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1275275 253912762 1.99 3190 The Secret The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1264875 253143200 1.99 3191 The Carpet The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1264375 256477011 1.99 3192 Boys and Girls The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1278333 255245729 1.99 3193 Valentine's Day The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1270375 253552710 1.99 3194 Dwight's Speech The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1278041 255001728 1.99 3195 Take Your Daughter to Work Day The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1268333 253451012 1.99 3196 Michael's Birthday The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1237791 247238398 1.99 3197 Drug Testing The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1278625 244626927 1.99 3198 Conflict Resolution The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1274583 253808658 1.99 3199 Casino Night - Season Finale The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1712791 327642458 1.99 3200 Gay Witch Hunt The Office, Season 3 Protected MPEG-4 video file TV Shows \N 1326534 276942637 1.99 3201 The Convention The Office, Season 3 Protected MPEG-4 video file TV Shows \N 1297213 255117055 1.99 3202 The Coup The Office, Season 3 Protected MPEG-4 video file TV Shows \N 1276526 267205501 1.99 3203 Grief Counseling The Office, Season 3 Protected MPEG-4 video file TV Shows \N 1282615 256912833 1.99 3204 The Initiation The Office, Season 3 Protected MPEG-4 video file TV Shows \N 1280113 251728257 1.99 3205 Diwali The Office, Season 3 Protected MPEG-4 video file TV Shows \N 1279904 252726644 1.99 3206 Branch Closing The Office, Season 3 Protected MPEG-4 video file TV Shows \N 1822781 358761786 1.99 3207 The Merger The Office, Season 3 Protected MPEG-4 video file TV Shows \N 1801926 345960631 1.99 3208 The Convict The Office, Season 3 Protected MPEG-4 video file Comedy \N 1273064 248863427 1.99 3209 A Benihana Christmas, Pts. 1 & 2 The Office, Season 3 Protected MPEG-4 video file Comedy \N 2519436 515301752 1.99 3210 Back from Vacation The Office, Season 3 Protected MPEG-4 video file Comedy \N 1271688 245378749 1.99 3211 Traveling Salesmen The Office, Season 3 Protected MPEG-4 video file Comedy \N 1289039 250822697 1.99 3212 Producer's Cut: The Return The Office, Season 3 Protected MPEG-4 video file Comedy \N 1700241 337219980 1.99 3213 Ben Franklin The Office, Season 3 Protected MPEG-4 video file Comedy \N 1271938 264168080 1.99 3214 Phyllis's Wedding The Office, Season 3 Protected MPEG-4 video file Comedy \N 1271521 258561054 1.99 3215 Business School The Office, Season 3 Protected MPEG-4 video file Comedy \N 1302093 254402605 1.99 3216 Cocktails The Office, Season 3 Protected MPEG-4 video file Comedy \N 1272522 259011909 1.99 3217 The Negotiation The Office, Season 3 Protected MPEG-4 video file Comedy \N 1767851 371663719 1.99 3218 Safety Training The Office, Season 3 Protected MPEG-4 video file Comedy \N 1271229 253054534 1.99 3219 Product Recall The Office, Season 3 Protected MPEG-4 video file Comedy \N 1268268 251208610 1.99 3220 Women's Appreciation The Office, Season 3 Protected MPEG-4 video file Comedy \N 1732649 338778844 1.99 3221 Beach Games The Office, Season 3 Protected MPEG-4 video file Comedy \N 1676134 333671149 1.99 3222 The Job The Office, Season 3 Protected MPEG-4 video file Comedy \N 2541875 501060138 1.99 3223 How to Stop an Exploding Man Heroes, Season 1 Protected MPEG-4 video file Drama \N 2687103 487881159 1.99 3224 Through a Looking Glass Lost, Season 3 Protected MPEG-4 video file Drama \N 5088838 1059546140 1.99 3225 Your Time Is Gonna Come Un-Led-Ed Protected AAC audio file Rock Page, Jones 310774 5126563 0.99 3226 Battlestar Galactica, Pt. 1 Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2952702 541359437 1.99 3227 Battlestar Galactica, Pt. 2 Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2956081 521387924 1.99 3228 Battlestar Galactica, Pt. 3 Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2927802 554509033 1.99 3229 Lost Planet of the Gods, Pt. 1 Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2922547 537812711 1.99 3230 Lost Planet of the Gods, Pt. 2 Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2914664 534343985 1.99 3231 The Lost Warrior Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2920045 558872190 1.99 3232 The Long Patrol Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2925008 513122217 1.99 3233 The Gun On Ice Planet Zero, Pt. 1 Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2907615 540980196 1.99 3234 The Gun On Ice Planet Zero, Pt. 2 Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2924341 546542281 1.99 3235 The Magnificent Warriors Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2924716 570152232 1.99 3236 The Young Lords Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2863571 587051735 1.99 3237 The Living Legend, Pt. 1 Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2924507 503641007 1.99 3238 The Living Legend, Pt. 2 Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2923298 515632754 1.99 3239 Fire In Space Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2926593 536784757 1.99 3240 War of the Gods, Pt. 1 Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2922630 505761343 1.99 3241 War of the Gods, Pt. 2 Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2923381 487899692 1.99 3242 The Man With Nine Lives Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2956998 577829804 1.99 3243 Murder On the Rising Star Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2935894 551759986 1.99 3244 Greetings from Earth, Pt. 1 Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2960293 536824558 1.99 3245 Greetings from Earth, Pt. 2 Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2903778 527842860 1.99 3246 Baltar's Escape Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2922088 525564224 1.99 3247 Experiment In Terra Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2923548 547982556 1.99 3248 Take the Celestra Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2927677 512381289 1.99 3249 The Hand of God Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2924007 536583079 1.99 3250 Pilot Aquaman Protected MPEG-4 video file TV Shows \N 2484567 492670102 1.99 3251 Through the Looking Glass, Pt. 2 Lost, Season 3 Protected MPEG-4 video file Drama \N 2617117 550943353 1.99 3252 Through the Looking Glass, Pt. 1 Lost, Season 3 Protected MPEG-4 video file Drama \N 2610860 493211809 1.99 3253 Instant Karma Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 193188 3150090 0.99 3254 #9 Dream Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 278312 4506425 0.99 3255 Mother Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 287740 4656660 0.99 3256 Give Peace a Chance Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 274644 4448025 0.99 3257 Cold Turkey Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 281424 4556003 0.99 3258 Whatever Gets You Thru the Night Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 215084 3499018 0.99 3259 I'm Losing You Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 240719 3907467 0.99 3260 Gimme Some Truth Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 232778 3780807 0.99 3261 Oh, My Love Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 159473 2612788 0.99 3262 Imagine Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 192329 3136271 0.99 3263 Nobody Told Me Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 210348 3423395 0.99 3264 Jealous Guy Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 239094 3881620 0.99 3265 Working Class Hero Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 265449 4301430 0.99 3266 Power to the People Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 213018 3466029 0.99 3267 Imagine Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 219078 3562542 0.99 3268 Beautiful Boy Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 227995 3704642 0.99 3269 Isolation Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 156059 2558399 0.99 3270 Watching the Wheels Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 198645 3237063 0.99 3271 Grow Old With Me Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 149093 2447453 0.99 3272 Gimme Some Truth Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 187546 3060083 0.99 3273 [Just Like] Starting Over Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 215549 3506308 0.99 3274 God Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 260410 4221135 0.99 3275 Real Love Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 236911 3846658 0.99 3276 Sympton of the Universe Speak of the Devil Protected AAC audio file Rock \N 340890 5489313 0.99 3277 Snowblind Speak of the Devil Protected AAC audio file Rock \N 295960 4773171 0.99 3278 Black Sabbath Speak of the Devil Protected AAC audio file Rock \N 364180 5860455 0.99 3279 Fairies Wear Boots Speak of the Devil Protected AAC audio file Rock \N 392764 6315916 0.99 3280 War Pigs Speak of the Devil Protected AAC audio file Rock \N 515435 8270194 0.99 3281 The Wizard Speak of the Devil Protected AAC audio file Rock \N 282678 4561796 0.99 3282 N.I.B. Speak of the Devil Protected AAC audio file Rock \N 335248 5399456 0.99 3283 Sweet Leaf Speak of the Devil Protected AAC audio file Rock \N 354706 5709700 0.99 3284 Never Say Die Speak of the Devil Protected AAC audio file Rock \N 258343 4173799 0.99 3285 Sabbath, Bloody Sabbath Speak of the Devil Protected AAC audio file Rock \N 333622 5373633 0.99 3286 Iron Man/Children of the Grave Speak of the Devil Protected AAC audio file Rock \N 552308 8858616 0.99 3287 Paranoid Speak of the Devil Protected AAC audio file Rock \N 189171 3071042 0.99 3288 Rock You Like a Hurricane 20th Century Masters - The Millennium Collection: The Best of Scorpions Protected AAC audio file Rock \N 255766 4300973 0.99 3289 No One Like You 20th Century Masters - The Millennium Collection: The Best of Scorpions Protected AAC audio file Rock \N 240325 4050259 0.99 3290 The Zoo 20th Century Masters - The Millennium Collection: The Best of Scorpions Protected AAC audio file Rock \N 332740 5550779 0.99 3291 Loving You Sunday Morning 20th Century Masters - The Millennium Collection: The Best of Scorpions Protected AAC audio file Rock \N 339125 5654493 0.99 3292 Still Loving You 20th Century Masters - The Millennium Collection: The Best of Scorpions Protected AAC audio file Rock \N 390674 6491444 0.99 3293 Big City Nights 20th Century Masters - The Millennium Collection: The Best of Scorpions Protected AAC audio file Rock \N 251865 4237651 0.99 3294 Believe in Love 20th Century Masters - The Millennium Collection: The Best of Scorpions Protected AAC audio file Rock \N 325774 5437651 0.99 3295 Rhythm of Love 20th Century Masters - The Millennium Collection: The Best of Scorpions Protected AAC audio file Rock \N 231246 3902834 0.99 3296 I Can't Explain 20th Century Masters - The Millennium Collection: The Best of Scorpions Protected AAC audio file Rock \N 205332 3482099 0.99 3297 Tease Me Please Me 20th Century Masters - The Millennium Collection: The Best of Scorpions Protected AAC audio file Rock \N 287229 4811894 0.99 3298 Wind of Change 20th Century Masters - The Millennium Collection: The Best of Scorpions Protected AAC audio file Rock \N 315325 5268002 0.99 3299 Send Me an Angel 20th Century Masters - The Millennium Collection: The Best of Scorpions Protected AAC audio file Rock \N 273041 4581492 0.99 3300 Jump Around House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Muggerud 217835 8715653 0.99 3301 Salutations House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Dimant 69120 2767047 0.99 3302 Put Your Head Out House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Freese/L. Muggerud 182230 7291473 0.99 3303 Top O' The Morning To Ya House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Dimant 216633 8667599 0.99 3304 Commercial 1 House of Pain MPEG audio file Hip Hop/Rap L. Muggerud 7941 319888 0.99 3305 House And The Rising Sun House of Pain MPEG audio file Hip Hop/Rap E. Schrody/J. Vasquez/L. Dimant 219402 8778369 0.99 3306 Shamrocks And Shenanigans House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Dimant 218331 8735518 0.99 3307 House Of Pain Anthem House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Dimant 155611 6226713 0.99 3308 Danny Boy, Danny Boy House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Muggerud 114520 4583091 0.99 3309 Guess Who's Back House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Muggerud 238393 9537994 0.99 3310 Commercial 2 House of Pain MPEG audio file Hip Hop/Rap L. Muggerud 21211 850698 0.99 3311 Put On Your Shit Kickers House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Muggerud 190432 7619569 0.99 3312 Come And Get Some Of This House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Muggerud/R. Medrano 170475 6821279 0.99 3313 Life Goes On House of Pain MPEG audio file Hip Hop/Rap E. Schrody/R. Medrano 163030 6523458 0.99 3314 One For The Road House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Dimant/L. Muggerud 170213 6810820 0.99 3315 Feel It House of Pain MPEG audio file Hip Hop/Rap E. Schrody/R. Medrano 239908 9598588 0.99 3316 All My Love House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Dimant 200620 8027065 0.99 3317 Jump Around (Pete Rock Remix) House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Muggerud 236120 9447101 0.99 3318 Shamrocks And Shenanigans (Boom Shalock Lock Boom/Butch Vig Mix) House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Dimant 237035 9483705 0.99 3319 Instinto Colectivo Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 300564 12024875 0.99 3320 Chapa o Coco Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 143830 5755478 0.99 3321 Prostituta Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 359000 14362307 0.99 3322 Eu So Queria Sumir Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 269740 10791921 0.99 3323 Tres Reis Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 304143 12168015 0.99 3324 Um Lugar ao Sol Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 212323 8495217 0.99 3325 Batalha Naval Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 285727 11431382 0.99 3326 Todo o Carnaval tem seu Fim Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 237426 9499371 0.99 3327 O Misterio do Samba Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 226142 9047970 0.99 3328 Armadura Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 232881 9317533 0.99 3329 Na Ladeira Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 221570 8865099 0.99 3330 Carimbo Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 328751 13152314 0.99 3331 Catimbo Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 254484 10181692 0.99 3332 Funk de Bamba Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 237322 9495184 0.99 3333 Chega no Suingue Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 221805 8874509 0.99 3334 Mun-Ra Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 274651 10988338 0.99 3335 Freestyle Love Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 318484 12741680 0.99 3336 War Pigs Cake: B-Sides and Rarities Purchased AAC audio file Alternative \N 234013 8052374 0.99 3337 Past, Present, and Future LOST, Season 4 Protected MPEG-4 video file Drama \N 2492867 490796184 1.99 3338 The Beginning of the End LOST, Season 4 Protected MPEG-4 video file Drama \N 2611903 526865050 1.99 3339 LOST Season 4 Trailer LOST, Season 4 Protected MPEG-4 video file Drama \N 112712 20831818 1.99 3340 LOST In 8:15 LOST, Season 4 Protected MPEG-4 video file Drama \N 497163 98460675 1.99 3341 Confirmed Dead LOST, Season 4 Protected MPEG-4 video file Drama \N 2611986 512168460 1.99 3342 The Economist LOST, Season 4 Protected MPEG-4 video file Drama \N 2609025 516934914 1.99 3343 Eggtown LOST, Season 4 Protected MPEG-4 video file TV Shows \N 2608817 501061240 1.99 3344 The Constant LOST, Season 4 Protected MPEG-4 video file Drama \N 2611569 520209363 1.99 3345 The Other Woman LOST, Season 4 Protected MPEG-4 video file Drama \N 2605021 513246663 1.99 3346 Ji Yeon LOST, Season 4 Protected MPEG-4 video file TV Shows \N 2588797 506458858 1.99 3347 Meet Kevin Johnson LOST, Season 4 Protected MPEG-4 video file TV Shows \N 2612028 504132981 1.99 3348 The Shape of Things to Come LOST, Season 4 Protected MPEG-4 video file Drama \N 2591299 502284266 1.99 3349 Amanda Quiet Songs AAC audio file Jazz Luca Gusella 246503 4011615 0.99 3350 Despertar Quiet Songs AAC audio file Jazz Andrea Dulbecco 307385 4821485 0.99 3351 Din Din Wo (Little Child) Muso Ko AAC audio file World Habib Koité 285837 4615841 0.99 3352 Distance Realize AAC audio file Electronica/Dance Karsh Kale/Vishal Vaid 327122 5327463 0.99 3353 I Guess You're Right Every Kind of Light AAC audio file Rock Darius "Take One" Minwalla/Jon Auer/Ken Stringfellow/Matt Harris 212044 3453849 0.99 3354 I Ka Barra (Your Work) Muso Ko AAC audio file World Habib Koité 300605 4855457 0.99 3355 Love Comes Every Kind of Light AAC audio file Rock Darius "Take One" Minwalla/Jon Auer/Ken Stringfellow/Matt Harris 199923 3240609 0.99 3356 Muita Bobeira Duos II AAC audio file Latin Luciana Souza 172710 2775071 0.99 3357 OAM's Blues Worlds AAC audio file Jazz Aaron Goldberg 266936 4292028 0.99 3358 One Step Beyond Realize AAC audio file Electronica/Dance Karsh Kale 366085 6034098 0.99 3359 Symphony No. 3 in E-flat major, Op. 55, "Eroica" - Scherzo: Allegro Vivace The Best of Beethoven AAC audio file Classical Ludwig van Beethoven 356426 5817216 0.99 3360 Something Nice Back Home LOST, Season 4 Protected MPEG-4 video file Drama \N 2612779 484711353 1.99 3361 Cabin Fever LOST, Season 4 Protected MPEG-4 video file Drama \N 2612028 477733942 1.99 3362 There's No Place Like Home, Pt. 1 LOST, Season 4 Protected MPEG-4 video file Drama \N 2609526 522919189 1.99 3363 There's No Place Like Home, Pt. 2 LOST, Season 4 Protected MPEG-4 video file Drama \N 2497956 523748920 1.99 3364 There's No Place Like Home, Pt. 3 LOST, Season 4 Protected MPEG-4 video file Drama \N 2582957 486161766 1.99 3365 Say Hello 2 Heaven Temple of the Dog Protected AAC audio file Alternative \N 384497 6477217 0.99 3366 Reach Down Temple of the Dog Protected AAC audio file Alternative \N 672773 11157785 0.99 3367 Hunger Strike Temple of the Dog Protected AAC audio file Alternative \N 246292 4233212 0.99 3368 Pushin Forward Back Temple of the Dog Protected AAC audio file Alternative \N 225278 3892066 0.99 3369 Call Me a Dog Temple of the Dog Protected AAC audio file Alternative \N 304458 5177612 0.99 3370 Times of Trouble Temple of the Dog Protected AAC audio file Alternative \N 342539 5795951 0.99 3371 Wooden Jesus Temple of the Dog Protected AAC audio file Alternative \N 250565 4302603 0.99 3372 Your Savior Temple of the Dog Protected AAC audio file Alternative \N 244226 4199626 0.99 3373 Four Walled World Temple of the Dog Protected AAC audio file Alternative \N 414474 6964048 0.99 3374 All Night Thing Temple of the Dog Protected AAC audio file Alternative \N 231803 3997982 0.99 3375 No Such Thing Carry On Protected AAC audio file Alternative Chris Cornell 224837 3691272 0.99 3376 Poison Eye Carry On Protected AAC audio file Alternative Chris Cornell 237120 3890037 0.99 3377 Arms Around Your Love Carry On Protected AAC audio file Alternative Chris Cornell 214016 3516224 0.99 3378 Safe and Sound Carry On Protected AAC audio file Alternative Chris Cornell 256764 4207769 0.99 3379 She'll Never Be Your Man Carry On Protected AAC audio file Alternative Chris Cornell 204078 3355715 0.99 3380 Ghosts Carry On Protected AAC audio file Alternative Chris Cornell 231547 3799745 0.99 3381 Killing Birds Carry On Protected AAC audio file Alternative Chris Cornell 218498 3588776 0.99 3382 Billie Jean Carry On Protected AAC audio file Alternative Michael Jackson 281401 4606408 0.99 3383 Scar On the Sky Carry On Protected AAC audio file Alternative Chris Cornell 220193 3616618 0.99 3384 Your Soul Today Carry On Protected AAC audio file Alternative Chris Cornell 205959 3385722 0.99 3385 Finally Forever Carry On Protected AAC audio file Alternative Chris Cornell 217035 3565098 0.99 3386 Silence the Voices Carry On Protected AAC audio file Alternative Chris Cornell 267376 4379597 0.99 3387 Disappearing Act Carry On Protected AAC audio file Alternative Chris Cornell 273320 4476203 0.99 3388 You Know My Name Carry On Protected AAC audio file Alternative Chris Cornell 240255 3940651 0.99 3389 Revelations Revelations Protected AAC audio file Alternative \N 252376 4111051 0.99 3390 One and the Same Revelations Protected AAC audio file Alternative \N 217732 3559040 0.99 3391 Sound of a Gun Revelations Protected AAC audio file Alternative \N 260154 4234990 0.99 3392 Until We Fall Revelations Protected AAC audio file Alternative \N 230758 3766605 0.99 3393 Original Fire Revelations Protected AAC audio file Alternative \N 218916 3577821 0.99 3394 Broken City Revelations Protected AAC audio file Alternative \N 228366 3728955 0.99 3395 Somedays Revelations Protected AAC audio file Alternative \N 213831 3497176 0.99 3396 Shape of Things to Come Revelations Protected AAC audio file Alternative \N 274597 4465399 0.99 3397 Jewel of the Summertime Revelations Protected AAC audio file Alternative \N 233242 3806103 0.99 3398 Wide Awake Revelations Protected AAC audio file Alternative \N 266308 4333050 0.99 3399 Nothing Left to Say But Goodbye Revelations Protected AAC audio file Alternative \N 213041 3484335 0.99 3400 Moth Revelations Protected AAC audio file Alternative \N 298049 4838884 0.99 3401 Show Me How to Live (Live at the Quart Festival) Revelations Protected AAC audio file Alternative \N 301974 4901540 0.99 3402 Band Members Discuss Tracks from "Revelations" Revelations Protected MPEG-4 video file Alternative \N 294294 61118891 0.99 3403 Intoitus: Adorate Deum Adorate Deum: Gregorian Chant from the Proper of the Mass Protected AAC audio file Classical Anonymous 245317 4123531 0.99 3404 Miserere mei, Deus Allegri: Miserere Protected AAC audio file Classical Gregorio Allegri 501503 8285941 0.99 3405 Canon and Gigue in D Major: I. Canon Pachelbel: Canon & Gigue Protected AAC audio file Classical Johann Pachelbel 271788 4438393 0.99 3406 Concerto No. 1 in E Major, RV 269 "Spring": I. Allegro Vivaldi: The Four Seasons Protected AAC audio file Classical Antonio Vivaldi 199086 3347810 0.99 3407 Concerto for 2 Violins in D Minor, BWV 1043: I. Vivace Bach: Violin Concertos Protected AAC audio file Classical Johann Sebastian Bach 193722 3192890 0.99 3408 Aria Mit 30 Veränderungen, BWV 988 "Goldberg Variations": Aria Bach: Goldberg Variations Protected AAC audio file Classical Johann Sebastian Bach 120463 2081895 0.99 3409 Suite for Solo Cello No. 1 in G Major, BWV 1007: I. Prélude Bach: The Cello Suites Protected AAC audio file Classical Johann Sebastian Bach 143288 2315495 0.99 3410 The Messiah: Behold, I Tell You a Mystery... The Trumpet Shall Sound Handel: The Messiah (Highlights) Protected AAC audio file Classical George Frideric Handel 582029 9553140 0.99 3411 Solomon HWV 67: The Arrival of the Queen of Sheba The World of Classical Favourites Protected AAC audio file Classical George Frideric Handel 197135 3247914 0.99 3412 "Eine Kleine Nachtmusik" Serenade In G, K. 525: I. Allegro Sir Neville Marriner: A Celebration Protected AAC audio file Classical Wolfgang Amadeus Mozart 348971 5760129 0.99 3413 Concerto for Clarinet in A Major, K. 622: II. Adagio Mozart: Wind Concertos Protected AAC audio file Classical Wolfgang Amadeus Mozart 394482 6474980 0.99 3414 Symphony No. 104 in D Major "London": IV. Finale: Spiritoso Haydn: Symphonies 99 - 104 Purchased AAC audio file Classical Franz Joseph Haydn 306687 10085867 0.99 3415 Symphony No.5 in C Minor: I. Allegro con brio Beethoven: Symhonies Nos. 5 & 6 Protected AAC audio file Classical Ludwig van Beethoven 392462 6419730 0.99 3416 Ave Maria A Soprano Inspired Protected AAC audio file Classical Franz Schubert 338243 5605648 0.99 3417 Nabucco: Chorus, "Va, Pensiero, Sull'ali Dorate" Great Opera Choruses Protected AAC audio file Classical Giuseppe Verdi 274504 4498583 0.99 3418 Die Walküre: The Ride of the Valkyries Wagner: Favourite Overtures Protected AAC audio file Classical Richard Wagner 189008 3114209 0.99 3419 Requiem, Op.48: 4. Pie Jesu Fauré: Requiem, Ravel: Pavane & Others Protected AAC audio file Classical Gabriel Fauré 258924 4314850 0.99 3420 The Nutcracker, Op. 71a, Act II: Scene 14: Pas de deux: Dance of the Prince & the Sugar-Plum Fairy Tchaikovsky: The Nutcracker Protected AAC audio file Classical Peter Ilyich Tchaikovsky 304226 5184289 0.99 3421 Nimrod (Adagio) from Variations On an Original Theme, Op. 36 "Enigma" The Last Night of the Proms Protected AAC audio file Classical Edward Elgar 250031 4124707 0.99 3422 Madama Butterfly: Un Bel Dì Vedremo Puccini: Madama Butterfly - Highlights Protected AAC audio file Classical Giacomo Puccini 277639 4588197 0.99 3423 Jupiter, the Bringer of Jollity Holst: The Planets, Op. 32 & Vaughan Williams: Fantasies Protected AAC audio file Classical Gustav Holst 522099 8547876 0.99 3424 Turandot, Act III, Nessun dorma! Pavarotti's Opera Made Easy Protected AAC audio file Classical Giacomo Puccini 176911 2920890 0.99 3425 Adagio for Strings from the String Quartet, Op. 11 Great Performances - Barber's Adagio and Other Romantic Favorites for Strings Protected AAC audio file Classical Samuel Barber 596519 9585597 0.99 3426 Carmina Burana: O Fortuna Carmina Burana Protected AAC audio file Classical Carl Orff 156710 2630293 0.99 3427 Fanfare for the Common Man A Copland Celebration, Vol. I Protected AAC audio file Classical Aaron Copland 198064 3211245 0.99 3428 Branch Closing The Office, Season 3 Protected MPEG-4 video file Comedy \N 1814855 360331351 1.99 3429 The Return The Office, Season 3 Protected MPEG-4 video file Comedy \N 1705080 343877320 1.99 3430 Toccata and Fugue in D Minor, BWV 565: I. Toccata Bach: Toccata & Fugue in D Minor Protected AAC audio file Classical Johann Sebastian Bach 153901 2649938 0.99 3431 Symphony No.1 in D Major, Op.25 "Classical", Allegro Con Brio Prokofiev: Symphony No.1 Protected AAC audio file Classical Sergei Prokofiev 254001 4195542 0.99 3432 Scheherazade, Op. 35: I. The Sea and Sindbad's Ship Scheherazade Protected AAC audio file Classical Nikolai Rimsky-Korsakov 545203 8916313 0.99 3433 Concerto No.2 in F Major, BWV1047, I. Allegro Bach: The Brandenburg Concertos Protected AAC audio file Classical Johann Sebastian Bach 307244 5064553 0.99 3434 Concerto for Piano No. 2 in F Minor, Op. 21: II. Larghetto Chopin: Piano Concertos Nos. 1 & 2 Protected AAC audio file Classical Frédéric Chopin 560342 9160082 0.99 3435 Cavalleria Rusticana \\ Act \\ Intermezzo Sinfonico Mascagni: Cavalleria Rusticana Protected AAC audio file Classical Pietro Mascagni 243436 4001276 0.99 3436 Karelia Suite, Op.11: 2. Ballade (Tempo Di Menuetto) Sibelius: Finlandia Protected AAC audio file Classical Jean Sibelius 406000 5908455 0.99 3437 Piano Sonata No. 14 in C Sharp Minor, Op. 27, No. 2, "Moonlight": I. Adagio sostenuto Beethoven Piano Sonatas: Moonlight & Pastorale Protected AAC audio file Classical Ludwig van Beethoven 391000 6318740 0.99 3438 Fantasia On Greensleeves The World of Classical Favourites Protected AAC audio file Classical Ralph Vaughan Williams 268066 4513190 0.99 3439 Das Lied Von Der Erde, Von Der Jugend Great Recordings of the Century - Mahler: Das Lied von der Erde Protected AAC audio file Classical Gustav Mahler 223583 3700206 0.99 3440 Concerto for Cello and Orchestra in E minor, Op. 85: I. Adagio - Moderato Elgar: Cello Concerto & Vaughan Williams: Fantasias Protected AAC audio file Classical Edward Elgar 483133 7865479 0.99 3441 Two Fanfares for Orchestra: II. Short Ride in a Fast Machine Adams, John: The Chairman Dances Protected AAC audio file Classical John Adams 254930 4310896 0.99 3442 Wellington's Victory or the Battle Symphony, Op.91: 2. Symphony of Triumph Tchaikovsky: 1812 Festival Overture, Op.49, Capriccio Italien & Beethoven: Wellington's Victory Protected AAC audio file Classical Ludwig van Beethoven 412000 6965201 0.99 3443 Missa Papae Marcelli: Kyrie Palestrina: Missa Papae Marcelli & Allegri: Miserere Protected AAC audio file Classical Giovanni Pierluigi da Palestrina 240666 4244149 0.99 3444 Romeo et Juliette: No. 11 - Danse des Chevaliers Prokofiev: Romeo & Juliet Protected AAC audio file Classical \N 275015 4519239 0.99 3445 On the Beautiful Blue Danube Strauss: Waltzes Protected AAC audio file Classical Johann Strauss II 526696 8610225 0.99 3446 Symphonie Fantastique, Op. 14: V. Songe d'une nuit du sabbat Berlioz: Symphonie Fantastique Protected AAC audio file Classical Hector Berlioz 561967 9173344 0.99 3447 Carmen: Overture Bizet: Carmen Highlights Protected AAC audio file Classical Georges Bizet 132932 2189002 0.99 3448 Lamentations of Jeremiah, First Set \\ Incipit Lamentatio English Renaissance Protected AAC audio file Classical Thomas Tallis 69194 1208080 0.99 3449 Music for the Royal Fireworks, HWV351 (1749): La Réjouissance Handel: Music for the Royal Fireworks (Original Version 1749) Protected AAC audio file Classical George Frideric Handel 120000 2193734 0.99 3450 Peer Gynt Suite No.1, Op.46: 1. Morning Mood Grieg: Peer Gynt Suites & Sibelius: Pelléas et Mélisande Protected AAC audio file Classical Edvard Grieg 253422 4298769 0.99 3451 Die Zauberflöte, K.620: "Der Hölle Rache Kocht in Meinem Herze" Mozart Gala: Famous Arias Protected AAC audio file Opera Wolfgang Amadeus Mozart 174813 2861468 0.99 3452 SCRIABIN: Prelude in B Major, Op. 11, No. 11 SCRIABIN: Vers la flamme Purchased AAC audio file Classical \N 101293 3819535 0.99 3453 Pavan, Lachrimae Antiquae Armada: Music from the Courts of England and Spain Protected AAC audio file Classical John Dowland 253281 4211495 0.99 3454 Symphony No. 41 in C Major, K. 551, "Jupiter": IV. Molto allegro Mozart: Symphonies Nos. 40 & 41 Protected AAC audio file Classical Wolfgang Amadeus Mozart 362933 6173269 0.99 3455 Rehab Back to Black Protected AAC audio file R&B/Soul \N 213240 3416878 0.99 3456 You Know I'm No Good Back to Black Protected AAC audio file R&B/Soul \N 256946 4133694 0.99 3457 Me & Mr. Jones Back to Black Protected AAC audio file R&B/Soul \N 151706 2449438 0.99 3458 Just Friends Back to Black Protected AAC audio file R&B/Soul \N 191933 3098906 0.99 3459 Back to Black Back to Black Protected AAC audio file R&B/Soul Mark Ronson 240320 3852953 0.99 3460 Love Is a Losing Game Back to Black Protected AAC audio file R&B/Soul \N 154386 2509409 0.99 3461 Tears Dry On Their Own Back to Black Protected AAC audio file R&B/Soul Nickolas Ashford & Valerie Simpson 185293 2996598 0.99 3462 Wake Up Alone Back to Black Protected AAC audio file R&B/Soul Paul O'duffy 221413 3576773 0.99 3463 Some Unholy War Back to Black Protected AAC audio file R&B/Soul \N 141520 2304465 0.99 3464 He Can Only Hold Her Back to Black Protected AAC audio file R&B/Soul Richard Poindexter & Robert Poindexter 166680 2666531 0.99 3465 You Know I'm No Good (feat. Ghostface Killah) Back to Black Protected AAC audio file R&B/Soul \N 202320 3260658 0.99 3466 Rehab (Hot Chip Remix) Back to Black Protected AAC audio file R&B/Soul \N 418293 6670600 0.99 3467 Intro / Stronger Than Me Frank Protected AAC audio file Pop \N 234200 3832165 0.99 3468 You Sent Me Flying / Cherry Frank Protected AAC audio file Pop \N 409906 6657517 0.99 3469 F**k Me Pumps Frank Protected AAC audio file Pop Salaam Remi 200253 3324343 0.99 3470 I Heard Love Is Blind Frank Protected AAC audio file Pop \N 129666 2190831 0.99 3471 (There Is) No Greater Love (Teo Licks) Frank Protected AAC audio file Pop Isham Jones & Marty Symes 167933 2773507 0.99 3472 In My Bed Frank Protected AAC audio file Pop Salaam Remi 315960 5211774 0.99 3473 Take the Box Frank Protected AAC audio file Pop Luke Smith 199160 3281526 0.99 3474 October Song Frank Protected AAC audio file Pop Matt Rowe & Stefan Skarbek 204846 3358125 0.99 3475 What Is It About Men Frank Protected AAC audio file Pop Delroy "Chris" Cooper, Donovan Jackson, Earl Chinna Smith, Felix Howard, Gordon Williams, Luke Smith, Paul Watson & Wilburn Squiddley Cole 209573 3426106 0.99 3476 Help Yourself Frank Protected AAC audio file Pop Freddy James, Jimmy hogarth & Larry Stock 300884 5029266 0.99 3477 Amy Amy Amy (Outro) Frank Protected AAC audio file Pop Astor Campbell, Delroy "Chris" Cooper, Donovan Jackson, Dorothy Fields, Earl Chinna Smith, Felix Howard, Gordon Williams, James Moody, Jimmy McHugh, Matt Rowe, Salaam Remi & Stefan Skarbek 663426 10564704 0.99 3478 Slowness Carried to Dust (Bonus Track Version) Protected AAC audio file Alternative \N 215386 3644793 0.99 3479 Prometheus Overture, Op. 43 Beethoven: Symphony No. 6 'Pastoral' Etc. Purchased AAC audio file Classical Ludwig van Beethoven 339567 10887931 0.99 3480 Sonata for Solo Violin: IV: Presto Bartok: Violin & Viola Concertos Purchased AAC audio file Classical Béla Bartók 299350 9785346 0.99 3481 A Midsummer Night's Dream, Op.61 Incidental Music: No.7 Notturno Mendelssohn: A Midsummer Night's Dream Protected AAC audio file Classical \N 387826 6497867 0.99 3482 Suite No. 3 in D, BWV 1068: III. Gavotte I & II Bach: Orchestral Suites Nos. 1 - 4 Protected AAC audio file Classical Johann Sebastian Bach 225933 3847164 0.99 3483 Concert pour 4 Parties de V**les, H. 545: I. Prelude Charpentier: Divertissements, Airs & Concerts Protected AAC audio file Classical Marc-Antoine Charpentier 110266 1973559 0.99 3484 Adios nonino South American Getaway Protected AAC audio file Classical Astor Piazzolla 289388 4781384 0.99 3485 Symphony No. 3 Op. 36 for Orchestra and Soprano "Symfonia Piesni Zalosnych" \\ Lento E Largo - Tranquillissimo Górecki: Symphony No. 3 Protected AAC audio file Classical Henryk Górecki 567494 9273123 0.99 3486 Act IV, Symphony Purcell: The Fairy Queen Protected AAC audio file Classical Henry Purcell 364296 5987695 0.99 3487 3 Gymnopédies: No.1 - Lent Et Grave, No.3 - Lent Et Douloureux The Ultimate Relexation Album Protected AAC audio file Classical Erik Satie 385506 6458501 0.99 3488 Music for the Funeral of Queen Mary: VI. "Thou Knowest, Lord, the Secrets of Our Hearts" Purcell: Music for the Queen Mary Protected AAC audio file Classical Henry Purcell 142081 2365930 0.99 3489 Symphony No. 2: III. Allegro vivace Weill: The Seven Deadly Sins Protected AAC audio file Classical Kurt Weill 376510 6129146 0.99 3490 Partita in E Major, BWV 1006A: I. Prelude J.S. Bach: Chaconne, Suite in E Minor, Partita in E Major & Prelude, Fugue and Allegro Protected AAC audio file Classical Johann Sebastian Bach 285673 4744929 0.99 3491 Le Sacre Du Printemps: I.iv. Spring Rounds Prokofiev: Symphony No.5 & Stravinksy: Le Sacre Du Printemps Protected AAC audio file Classical Igor Stravinsky 234746 4072205 0.99 3492 Sing Joyfully English Renaissance Protected AAC audio file Classical William Byrd 133768 2256484 0.99 3493 Metopes, Op. 29: Calypso Szymanowski: Piano Works, Vol. 1 Protected AAC audio file Classical Karol Szymanowski 333669 5548755 0.99 3494 Symphony No. 2, Op. 16 - "The Four Temperaments": II. Allegro Comodo e Flemmatico Nielsen: The Six Symphonies Protected AAC audio file Classical Carl Nielsen 286998 4834785 0.99 3495 24 Caprices, Op. 1, No. 24, for Solo Violin, in A Minor Great Recordings of the Century: Paganini's 24 Caprices Protected AAC audio file Classical Niccolò Paganini 265541 4371533 0.99 3496 Étude 1, In C Major - Preludio (Presto) - Liszt Liszt - 12 Études D'Execution Transcendante Purchased AAC audio file Classical \N 51780 2229617 0.99 3497 Erlkonig, D.328 Great Recordings of the Century - Shubert: Schwanengesang, 4 Lieder Protected AAC audio file Classical \N 261849 4307907 0.99 3498 Concerto for Violin, Strings and Continuo in G Major, Op. 3, No. 9: I. Allegro Locatelli: Concertos for Violin, Strings and Continuo, Vol. 3 Purchased AAC audio file Classical Pietro Antonio Locatelli 493573 16454937 0.99 3499 Pini Di Roma (Pinien Von Rom) \\ I Pini Della Via Appia Respighi:Pines of Rome Protected AAC audio file Classical \N 286741 4718950 0.99 3500 String Quartet No. 12 in C Minor, D. 703 "Quartettsatz": II. Andante - Allegro assai Schubert: The Late String Quartets & String Quintet (3 CD's) Protected AAC audio file Classical Franz Schubert 139200 2283131 0.99 3501 L'orfeo, Act 3, Sinfonia (Orchestra) Monteverdi: L'Orfeo Protected AAC audio file Classical Claudio Monteverdi 66639 1189062 0.99 3502 Quintet for Horn, Violin, 2 Violas, and Cello in E Flat Major, K. 407/386c: III. Allegro Mozart: Chamber Music Protected AAC audio file Classical Wolfgang Amadeus Mozart 221331 3665114 0.99 3503 Koyaanisqatsi Koyaanisqatsi (Soundtrack from the Motion Picture) Protected AAC audio file Soundtrack Philip Glass 206005 3305164 0.99 pgloader/test/regress/expected/csv-trim-extra-blanks.out0000644000175000017500000000047313047375022023670 0ustar vagrantvagrant1 quoted empty string should be empty string 2 no value between separators \N should be null 3 quoted blanks should be blanks 4 unquoted blanks \N should be null 5 unquoted string no quote should be 'no quote' 6 quoted separator a,b,c should be 'a,b,c' 7 trim extra blanks test string should be 'test string' pgloader/test/regress/expected/copy-hex.out0000644000175000017500000000003513047375022021261 0ustar vagrantvagrant1 a 2 aa 3  4 a 5 \\N 6 \N pgloader/test/regress/expected/csv-non-printable.out0000644000175000017500000000032713047375022023072 0ustar vagrantvagrantcol1 45 005 45 works col1 44 006 44 Fails 0xa5 col1 45 006 45 Fails 0xa6 col1 45 006 45 Fails using escape 0xa6 col1 46 006 46 Fails 0xa7 col1 47 006 47 Fails 0xa8 col1 4T works 006 followed by 4 works ? why pgloader/test/regress/expected/fields-with-periods.out0000644000175000017500000000003013047375022023402 0ustar vagrantvagrantabc 123 def 456 ghi 789 pgloader/test/regress/expected/csv.out0000644000175000017500000000030513047375022020320 0ustar vagrantvagrant33996344 33996351 GB United Kingdom 50331648 68257567 US United States 68257568 68257599 CA Canada 68257600 68259583 US United States 68259584 68259599 CA Canada 68259600 68296775 US United States pgloader/test/regress/expected/csv-before-after.out0000644000175000017500000003056113047375022022666 0ustar vagrantvagrant223.207.65.0/24 195756 223.207.66.0-223.207.69.255 209 223.207.70.0/23 29727 223.207.72.0-223.207.74.255 209 223.207.75.0/24 29727 223.207.76.0/25 209 223.207.76.128/25 29727 223.207.77.0-223.207.81.255 209 223.207.82.0/24 107738 223.207.83.0-223.207.89.255 209 223.207.90.0/24 152101 223.207.91.0/24 22537 223.207.92.0/24 152101 223.207.93.0-223.207.95.255 209 223.207.96.0/24 22537 223.207.97.0-223.207.101.255 209 223.207.102.0/24 258257 223.207.103.0-223.207.112.255 209 223.207.113.0/24 157887 223.207.114.0/23 209 223.207.116.0/24 157887 223.207.117.0/24 36801 223.207.118.0/23 209 223.207.120.0/23 157887 223.207.122.0/24 36801 223.207.123.0/24 209 223.207.124.0/24 36801 223.207.125.0/24 209 223.207.126.0/23 36801 223.207.128.0/24 209 223.207.129.0/24 36801 223.207.130.0-223.207.133.255 209 223.207.134.0/23 36801 223.207.136.0/23 22537 223.207.138.0/23 209 223.207.140.0/24 105970 223.207.141.0-223.207.143.255 209 223.207.144.0/24 195756 223.207.145.0-223.207.147.255 209 223.207.148.0/23 29727 223.207.150.0-223.207.165.255 209 223.207.166.0/24 104087 223.207.167.0-223.207.169.255 209 223.207.170.0/24 111006 223.207.171.0-223.207.175.255 209 223.207.176.0/24 104486 223.207.177.0/24 157991 223.207.178.0/24 104486 223.207.179.0-223.207.191.255 209 223.207.192.0/23 29727 223.207.194.0-223.207.197.255 209 223.207.198.0/23 29727 223.207.200.0-223.207.219.255 209 223.207.220.0/24 199446 223.207.221.0/24 209 223.207.222.0/24 152101 223.207.223.0-223.207.224.255 209 223.207.225.0/24 108056 223.207.226.0-223.207.255.255 209 223.208.0.0/17 24328 223.208.128.0/17 47667 223.209.0.0-223.209.111.255 24328 223.209.112.0/20 104221 223.209.128.0-223.210.127.255 24328 223.210.128.0/19 104025 223.210.160.0-223.211.127.255 24328 223.211.128.0/18 104025 223.211.192.0/18 24328 223.212.0.0/15 16496 223.214.0.0/15 104129 223.216.0.0-223.216.6.255 14614 223.216.7.0/24 346442 223.216.8.0-223.216.74.255 14614 223.216.75.0/24 113046 223.216.76.0/23 14614 223.216.78.0/24 341794 223.216.79.0-223.216.128.255 14614 223.216.129.0/24 53101 223.216.130.0/24 14614 223.216.131.0/24 113548 223.216.132.0/22 14614 223.216.136.0/24 53101 223.216.137.0-223.216.140.255 14614 223.216.141.0/24 53101 223.216.142.0-223.216.144.255 14614 223.216.145.0/24 336695 223.216.146.0-223.216.252.255 14614 223.216.253.0/24 53101 223.216.254.0-223.217.0.255 14614 223.217.1.0/24 336677 223.217.2.0/24 20630 223.217.3.0-223.217.4.255 14614 223.217.5.0/24 20630 223.217.6.0/24 14614 223.217.7.0/24 336677 223.217.8.0-223.217.14.255 14614 223.217.15.0/24 113245 223.217.16.0/24 112160 223.217.17.0-223.217.20.255 14614 223.217.21.0/24 104325 223.217.22.0-223.217.50.255 14614 223.217.51.0/24 112896 223.217.52.0-223.217.60.255 14614 223.217.61.0/24 106120 223.217.62.0-223.217.96.255 14614 223.217.97.0-223.217.98.255 112608 223.217.99.0-223.217.106.255 14614 223.217.107.0/24 112398 223.217.108.0-223.217.139.255 14614 223.217.140.0/24 336692 223.217.141.0-223.217.147.255 14614 223.217.148.0/23 337936 223.217.150.0-223.217.163.255 14614 223.217.164.0/24 338005 223.217.165.0-223.217.169.255 14614 223.217.170.0/24 337522 223.217.171.0-223.217.183.255 14614 223.217.184.0/24 106418 223.217.185.0-223.217.188.255 14614 223.217.189.0-223.217.190.255 109797 223.217.191.0-223.217.249.255 14614 223.217.250.0/24 57645 223.217.251.0/24 346205 223.217.252.0-223.218.15.255 14614 223.218.16.0/24 111975 223.218.17.0-223.218.26.255 14614 223.218.27.0/24 112589 223.218.28.0-223.218.38.255 14614 223.218.39.0/24 104239 223.218.40.0-223.218.52.255 14614 223.218.53.0/24 41997 223.218.54.0-223.218.67.255 14614 223.218.68.0/24 337505 223.218.69.0-223.218.70.255 14614 223.218.71.0/24 105896 223.218.72.0/24 337505 223.218.73.0-223.218.107.255 14614 223.218.108.0/24 64704 223.218.109.0/24 113229 223.218.110.0-223.218.127.255 14614 223.218.128.0/24 336674 223.218.129.0/24 341516 223.218.130.0/24 14614 223.218.131.0/24 336674 223.218.132.0/22 14614 223.218.136.0/24 21250 223.218.137.0-223.218.139.255 14614 223.218.140.0/24 336674 223.218.141.0-223.218.145.255 14614 223.218.146.0/24 21250 223.218.147.0-223.218.149.255 14614 223.218.150.0/24 21250 223.218.151.0-223.218.155.255 14614 223.218.156.0/24 336674 223.218.157.0-223.218.161.255 14614 223.218.162.0/24 21250 223.218.163.0/24 14614 223.218.164.0/24 21250 223.218.165.0/24 14614 223.218.166.0/24 56483 223.218.167.0-223.218.170.255 14614 223.218.171.0/24 336674 223.218.172.0-223.218.174.255 14614 223.218.175.0/24 31831 223.218.176.0/24 14614 223.218.177.0-223.218.178.255 104232 223.218.179.0/24 14614 223.218.180.0/24 336674 223.218.181.0-223.218.214.255 14614 223.218.215.0/24 109384 223.218.216.0/24 14614 223.218.217.0/24 285672 223.218.218.0-223.219.2.255 14614 223.219.3.0/24 112305 223.219.4.0-223.219.55.255 14614 223.219.56.0/24 416519 223.219.57.0-223.219.74.255 14614 223.219.75.0/24 113121 223.219.76.0-223.219.85.255 14614 223.219.86.0/24 104230 223.219.87.0-223.219.127.255 14614 223.219.128.0/23 337510 223.219.130.0-223.219.133.255 14614 223.219.134.0/24 106419 223.219.135.0-223.219.138.255 14614 223.219.139.0/24 337510 223.219.140.0-223.219.150.255 14614 223.219.151.0/24 337510 223.219.152.0-223.219.178.255 14614 223.219.179.0/24 106417 223.219.180.0-223.219.187.255 14614 223.219.188.0/24 336676 223.219.189.0-223.219.209.255 14614 223.219.210.0/24 113477 223.219.211.0-223.219.236.255 14614 223.219.237.0/24 337495 223.219.238.0-223.219.240.255 14614 223.219.241.0/24 112338 223.219.242.0-223.219.245.255 14614 223.219.246.0/24 337495 223.219.247.0-223.219.249.255 14614 223.219.250.0/24 112214 223.219.251.0-223.219.255.255 14614 223.220.0.0/15 104339 223.222.0.0/16 119 223.223.0.0-223.223.6.255 69710 223.223.7.0-223.223.8.255 336681 223.223.9.0-223.223.21.255 69710 223.223.22.0/24 336681 223.223.23.0-223.223.44.255 69710 223.223.45.0/24 336681 223.223.46.0-223.223.51.255 69710 223.223.52.0/24 336681 223.223.53.0-223.223.73.255 69710 223.223.74.0/24 336681 223.223.75.0-223.223.127.255 69710 223.223.128.0/24 103 223.223.129.0/24 45899 223.223.130.0-223.223.132.255 103 223.223.133.0-223.223.135.255 45899 223.223.136.0/24 103 223.223.137.0-223.223.139.255 45899 223.223.140.0-223.223.142.255 103 223.223.143.0/24 45899 223.223.144.0/24 108155 223.223.145.0/24 45899 223.223.146.0/24 103 223.223.147.0-223.223.149.255 45899 223.223.150.0/24 103 223.223.151.0-223.223.156.255 45899 223.223.157.0-223.223.159.255 103 223.223.160.0/24 112503 223.223.161.0-223.223.167.255 111 223.223.168.0/21 114 223.223.176.0-223.223.207.255 49 223.223.208.0/22 111 223.223.212.0/24 342351 223.223.213.0-223.223.215.255 111 223.223.216.0/22 94 223.223.220.0/22 191 223.223.224.0/19 111 223.224.0.0-223.224.13.255 103 223.224.14.0/24 127 223.224.15.0-223.224.38.255 103 223.224.39.0/24 348867 223.224.40.0/22 103 223.224.44.0/24 368477 223.224.45.0-223.224.57.255 103 223.224.58.0/24 45899 223.224.59.0-223.224.64.0 103 223.224.64.1-223.224.127.254 20067 223.224.127.255-223.224.128.0 103 223.224.128.1-223.224.255.254 20067 223.224.255.255 103 223.225.0.0-223.225.74.255 108155 223.225.75.0/24 402895 223.225.76.0-223.225.83.255 108155 223.225.84.0/24 70072 223.225.85.0-223.225.255.254 108155 223.225.255.255 103 223.226.0.0/23 105450 223.226.2.0/23 25833 223.226.4.0-223.226.68.255 105450 223.226.69.0/24 24852 223.226.70.0-223.226.88.255 105450 223.226.89.0/24 25938 223.226.90.0-223.226.92.255 105450 223.226.93.0/24 24852 223.226.94.0-223.226.104.255 105450 223.226.105.0/24 45896 223.226.106.0-223.226.126.255 105450 223.226.127.0/24 25938 223.226.128.0-223.226.255.254 105450 223.226.255.255 103 223.227.0.0-223.227.228.255 108155 223.227.229.0/24 20067 223.227.230.0-223.227.232.255 108155 223.227.233.0/24 125023 223.227.234.0-223.227.255.254 108155 223.227.255.255 103 223.228.0.0-223.228.88.255 322866 223.228.89.0/24 20067 223.228.90.0-223.228.247.255 322866 223.228.248.0/23 20067 223.228.250.0-223.228.255.254 322866 223.228.255.255 103 223.229.0.0-223.229.255.254 322866 223.229.255.255 103 223.230.0.0-223.230.10.255 105450 223.230.11.0/24 114830 223.230.12.0-223.230.26.255 105450 223.230.27.0/24 107341 223.230.28.0-223.230.118.255 105450 223.230.119.0/24 187304 223.230.120.0-223.230.255.254 105450 223.230.255.255 103 223.231.0.0-223.231.62.255 108155 223.231.63.0/24 45899 223.231.64.0-223.231.142.255 108155 223.231.143.0/24 30619 223.231.144.0-223.231.161.255 108155 223.231.162.0/24 30619 223.231.163.0-223.231.255.254 108155 223.231.255.255 103 223.232.0.0-223.232.12.255 20067 223.232.13.0/24 32723 223.232.14.0-223.232.24.255 20067 223.232.25.0/24 114830 223.232.26.0-223.232.36.255 20067 223.232.37.0/24 114830 223.232.38.0-223.232.61.255 20067 223.232.62.0/24 114830 223.232.63.0-223.232.70.255 20067 223.232.71.0/24 114830 223.232.72.0-223.232.77.255 20067 223.232.78.0/24 202074 223.232.79.0-223.232.83.255 20067 223.232.84.0/24 114830 223.232.85.0-223.232.112.255 20067 223.232.113.0/24 114830 223.232.114.0-223.232.117.255 20067 223.232.118.0/24 62392 223.232.119.0-223.232.138.255 20067 223.232.139.0/24 32723 223.232.140.0-223.232.255.254 20067 223.232.255.255 103 223.233.0.0-223.233.75.255 105450 223.233.76.0/24 30619 223.233.77.0-223.233.255.254 105450 223.233.255.255 103 223.234.0.0-223.234.28.255 20067 223.234.29.0/24 30619 223.234.30.0-223.234.54.255 20067 223.234.55.0/24 30619 223.234.56.0-223.234.65.255 20067 223.234.66.0/24 30619 223.234.67.0-223.234.90.255 20067 223.234.91.0-223.234.92.255 30619 223.234.93.0-223.234.165.255 20067 223.234.166.0/24 30619 223.234.167.0-223.234.202.255 20067 223.234.203.0/24 109805 223.234.204.0-223.234.237.255 20067 223.234.238.0/24 30619 223.234.239.0-223.234.255.254 20067 223.234.255.255 103 223.235.0.0-223.235.55.255 108155 223.235.56.0/24 30619 223.235.57.0-223.235.126.255 108155 223.235.127.0/24 106037 223.235.128.0-223.235.189.255 108155 223.235.190.0/24 30619 223.235.191.0/24 108155 223.235.192.0/24 109350 223.235.193.0-223.235.235.255 108155 223.235.236.0/24 30619 223.235.237.0-223.235.255.254 108155 223.235.255.255 103 223.236.0.0-223.236.189.255 108155 223.236.190.0/24 30619 223.236.191.0-223.236.204.255 108155 223.236.205.0/24 30619 223.236.206.0-223.236.255.254 108155 223.236.255.255 103 223.237.0.0-223.237.255.254 20067 223.237.255.255 103 223.238.0.0-223.238.16.255 105450 223.238.17.0/24 20067 223.238.18.0-223.238.35.255 105450 223.238.36.0/24 20067 223.238.37.0-223.238.56.255 105450 223.238.57.0/24 20067 223.238.58.0-223.238.82.255 105450 223.238.83.0/24 20067 223.238.84.0-223.238.106.255 105450 223.238.107.0/24 20067 223.238.108.0-223.238.131.255 105450 223.238.132.0/24 20067 223.238.133.0-223.238.154.255 105450 223.238.155.0/24 20067 223.238.156.0-223.238.169.255 105450 223.238.170.0/24 20067 223.238.171.0-223.238.230.255 105450 223.238.231.0/24 20067 223.238.232.0/22 105450 223.238.236.0/24 20067 223.238.237.0-223.238.255.254 105450 223.238.255.255 103 223.239.0.0-223.239.159.255 20067 223.239.160.0/20 45899 223.239.176.0-223.239.194.255 20067 223.239.195.0/24 22962 223.239.196.0/24 20067 223.239.197.0-223.239.198.255 22962 223.239.199.0-223.239.255.254 20067 223.239.255.255 103 223.240.0.0/13 104129 223.248.0.0/14 14431 223.252.0.0/17 11716 223.252.128.0/19 24328 223.252.160.0/19 49 223.252.192.0/19 47667 223.252.224.0/19 14431 223.253.0.0/16 22883 223.254.0.0/16 103995 223.255.0.0/17 24328 223.255.128.0/24 35428 223.255.129.0/24 25389 223.255.130.0/24 35428 223.255.131.0/24 14416 223.255.132.0-223.255.136.255 35428 223.255.137.0/24 14416 223.255.138.0-223.255.140.255 35428 223.255.141.0/24 104037 223.255.142.0/23 35428 223.255.144.0/24 14416 223.255.145.0/24 35428 223.255.146.0/25 21240 223.255.146.128/25 14416 223.255.147.0/24 35428 223.255.148.0/24 21240 223.255.149.0-223.255.150.255 35428 223.255.151.0-223.255.152.255 14416 223.255.153.0-223.255.157.255 35428 223.255.158.0/23 14416 223.255.160.0/24 35428 223.255.161.0/24 14416 223.255.162.0-223.255.167.255 35428 223.255.168.0/23 21240 223.255.170.0/24 35428 223.255.171.0/24 14416 223.255.172.0-223.255.187.255 35428 223.255.188.0/24 14416 223.255.189.0/24 35428 223.255.190.0/25 14416 223.255.190.128/25 21240 223.255.191.0/24 35428 223.255.192.0/19 22883 223.255.224.0/27 32979 223.255.224.32-223.255.225.255 206376 223.255.226.0/24 104200 223.255.227.0-223.255.229.31 206376 223.255.229.32/27 47976 223.255.229.64/28 206376 223.255.229.80-223.255.229.255 47976 223.255.230.0/24 206376 223.255.231.0/27 105611 223.255.231.32/27 337502 223.255.231.64/26 206376 223.255.231.128/27 36834 223.255.231.160-223.255.231.255 206376 223.255.232.0/22 17 223.255.236.0/22 49 223.255.240.0/22 94 223.255.244.0/23 108612 223.255.246.0/23 103 223.255.248.0/22 17 223.255.252.0/23 49 223.255.254.0/24 191 223.255.255.0/24 17 pgloader/test/regress/expected/csv-header.out0000644000175000017500000000005513047375022021550 0ustar vagrantvagranta b c d e f foo bar baz quux foobar fizzbuzz pgloader/test/regress/expected/csv-keep-extra-blanks.out0000644000175000017500000000040513047375022023634 0ustar vagrantvagrant1 quoted empty string should be empty string 2 no value between separators \N should be null 3 quoted blanks should be blanks 4 unquoted blanks should be null 5 unquoted string no quote should be 'no quote' 6 quoted separator a,b,c should be 'a,b,c' pgloader/test/regress/expected/dbf.out0000644000175000017500000000172413047375022020266 0ustar vagrantvagrant01 97105 3 GUADELOUPE Guadeloupe 02 97209 3 MARTINIQUE Martinique 03 97302 3 GUYANE Guyane 04 97411 0 LA REUNION La Réunion 06 97608 0 MAYOTTE Mayotte 11 75056 1 ILE-DE-FRANCE Île-de-France 21 51108 0 CHAMPAGNE-ARDENNE Champagne-Ardenne 22 80021 0 PICARDIE Picardie 23 76540 0 HAUTE-NORMANDIE Haute-Normandie 24 45234 2 CENTRE Centre 25 14118 0 BASSE-NORMANDIE Basse-Normandie 26 21231 0 BOURGOGNE Bourgogne 31 59350 2 NORD-PAS-DE-CALAIS Nord-Pas-de-Calais 41 57463 0 LORRAINE Lorraine 42 67482 1 ALSACE Alsace 43 25056 0 FRANCHE-COMTE Franche-Comté 52 44109 4 PAYS DE LA LOIRE Pays de la Loire 53 35238 0 BRETAGNE Bretagne 54 86194 2 POITOU-CHARENTES Poitou-Charentes 72 33063 1 AQUITAINE Aquitaine 73 31555 0 MIDI-PYRENEES Midi-Pyrénées 74 87085 2 LIMOUSIN Limousin 82 69123 2 RHONE-ALPES Rhône-Alpes 83 63113 1 AUVERGNE Auvergne 91 34172 2 LANGUEDOC-ROUSSILLON Languedoc-Roussillon 93 13055 0 PROVENCE-ALPES-COTE D'AZUR Provence-Alpes-Côte d'Azur 94 2A004 0 CORSE Corse pgloader/test/regress/expected/csv-error.out0000644000175000017500000000017613047375022021455 0ustar vagrantvagrantBORDET Jordane BORDET Audrey LASTNAME "opening quote pgloader/test/regress/expected/csv-nulls.out0000644000175000017500000000004413047375022021453 0ustar vagrantvagrant1 \N testing nulls 2 2 another test pgloader/test/regress/expected/errors.out0000644000175000017500000000035713047375022021050 0ustar vagrantvagrant0 2006-11-11 nov. the 11th should go 1 2006-10-12 12th of oct. should go 4 2006-05-12 month should be may, ok 6 \N some null date to play with 7 \N and a ragged line 8 2014-01-23 and a line with extra columns 9 2014-01-22 and another line pgloader/test/regress/expected/udc.out0000644000175000017500000000014113047375022020276 0ustar vagrantvagrant5 constant value 1 10 constant value 2 4 constant value 3 18 constant value 4 2 constant value 5 pgloader/test/regress/expected/ixf.out0000644000175000017500000000025213047375022020314 0ustar vagrantvagrant1 77 77 foobar foobar baz baz 2 \N 88 \N abcdef \N ghijkl 3 179 179 FOOBAR FOOBAR BAZ BAZ 4 \N 179 \N FOOBAR \N BAZ pgloader/test/regress/expected/csv-parse-date.out0000644000175000017500000000016613047375022022350 0ustar vagrantvagrant1 1999-10-02 00:33:12.123456+02 00:05:02 2 2014-10-02 00:33:13.123+02 18:25:52 3 2014-10-02 00:33:14.1234+02 13:14:15 pgloader/test/regress/expected/csv-missing-col.out0000644000175000017500000000000013047375022022532 0ustar vagrantvagrantpgloader/test/regress/expected/csv-filename-pattern.out0000644000175000017500000000002213047375022023545 0ustar vagrantvagrant1 foo 2 bar 3 baz pgloader/test/regress/expected/csv-districts.out0000644000175000017500000007211013047375022022331 0ustar vagrantvagrantAL 0101 15713029743 2275875249 6066.835 878.72 (-87.797812,31.008681) AL 0102 26266710862 307026133 10141.634 118.543 (-86.076842,31.702085) AL 0103 19538510390 470857739 7543.861 181.799 (-85.700228,33.150564) AL 0104 23021812410 570326274 8888.772 220.204 (-87.21381,34.118181) AL 0105 9524193916 464832293 3677.312 179.473 (-86.711133,34.754994) AL 0106 10802277539 177285050 4170.783 68.45 (-86.713586,33.260169) AL 0107 26304252226 330354794 10156.129 127.551 (-87.640501,32.449235) AK 0200 1477953211577 245383480336 570640.95 94743.095 (-152.837068,63.346191) AZ 0401 142551925981 354331446 55039.609 136.808 (-110.725925,34.971013) AZ 0402 20300641939 138440464 7838.122 53.452 (-109.938623,31.916381) AZ 0403 40633780882 7975749 15688.791 3.079 (-112.402591,32.423815) AZ 0404 85986180794 503998731 33199.451 194.595 (-113.204528,34.590918) AZ 0405 760071785 2341831 293.465 0.904 (-111.712018,33.339408) AZ 0406 1618922007 10595597 625.069 4.091 (-111.8886,33.666924) AZ 0407 531256766 1029634 205.119 0.398 (-112.118768,33.427819) AZ 0408 1397724867 3977037 539.665 1.536 (-112.299574,33.695581) AZ 0409 426809393 3505775 164.792 1.354 (-111.949996,33.406007) AR 0501 50034129489 1236108020 19318.286 477.264 (-91.258311,35.293906) AR 0502 12893274981 304933198 4978.122 117.735 (-92.379511,35.099565) AR 0503 13988496159 370324756 5400.989 142.983 (-94.062449,36.138288) AR 0504 57855360779 1049173283 22338.081 405.088 (-93.204357,34.219575) CA 0601 72751398285 1942443053 28089.473 749.981 (-121.510516,40.731988) CA 0602 33546129203 4122734693 12952.233 1591.797 (-123.464974,40.094059) CA 0603 16015413571 456758554 6183.586 176.355 (-122.089573,39.031952) CA 0604 33245611346 860270157 12836.203 332.152 (-119.927973,37.982452) CA 0605 4482806702 319348919 1730.821 123.301 (-122.462559,38.515806) CA 0606 453343222 11310562 175.037 4.367 (-121.479768,38.594033) CA 0607 1421004009 13630114 548.653 5.263 (-121.218063,38.475807) CA 0608 85125679251 450497694 32867.21 173.938 (-116.819546,35.662557) CA 0609 3225260765 154740362 1245.28 59.746 (-121.307147,38.010873) CA 0610 4710656290 59125011 1818.795 22.828 (-121.054083,37.586366) CA 0611 1278436142 92042761 493.607 35.538 (-122.000938,37.903876) CA 0612 100944525 211635239 38.975 81.713 (-122.434,37.785514) CA 0613 250689062 127237243 96.792 49.127 (-122.239248,37.778962) CA 0614 672112621 827706961 259.504 319.579 (-122.494794,37.574673) CA 0615 1552565000 69774947 599.449 26.94 (-121.83503,37.655654) CA 0616 7354292902 118605996 2839.508 45.794 (-120.521745,37.109453) CA 0617 478762287 23128468 184.851 8.93 (-121.967348,37.44403) CA 0618 1802952932 329912139 696.124 127.38 (-122.153712,37.202132) CA 0619 2370728152 16862460 915.343 6.511 (-121.550377,37.213101) CA 0620 12624160163 1574878260 4874.216 608.064 (-121.275218,36.373286) CA 0621 17430467786 36044725 6729.942 13.917 (-119.8515,36.086714) CA 0622 3017651739 9893593 1165.122 3.82 (-119.389551,36.476861) CA 0623 25635706519 100710037 9898.002 38.884 (-118.538728,35.611137) CA 0624 17827786838 3689073827 6883.347 1424.359 (-120.112845,34.919637) CA 0625 4378380469 30999372 1690.502 11.969 (-118.280269,34.58806) CA 0626 2432309944 807128892 939.12 311.634 (-119.129955,34.167023) CA 0627 1812743095 7619828 699.904 2.942 (-117.934887,34.265083) CA 0628 565785361 2428560 218.451 0.938 (-118.291452,34.250058) CA 0629 238358439 1621937 92.031 0.626 (-118.430313,34.266695) CA 0630 352095777 5010878 135.945 1.935 (-118.546956,34.201873) CA 0631 565237169 6461923 218.239 2.495 (-117.353328,34.11001) CA 0632 321763020 5330492 124.233 2.058 (-117.913968,34.089458) CA 0633 747426395 489674589 288.583 189.064 (-118.783251,34.046991) CA 0634 123448887 784487 47.664 0.303 (-118.228269,34.074655) CA 0635 437398432 324076 168.88 0.125 (-117.588323,34.045401) CA 0636 15313666065 201989395 5912.64 77.989 (-115.742704,33.726592) CA 0637 143131680 352963 55.263 0.136 (-118.368705,34.016123) CA 0638 262778856 3823600 101.459 1.476 (-118.062629,33.940424) CA 0639 529385331 3099912 204.397 1.197 (-117.834936,33.940378) CA 0640 149407450 1743127 57.687 0.673 (-118.179207,33.969867) CA 0641 819834652 4289703 316.54 1.656 (-117.308367,33.917866) CA 0642 2424112525 44726428 935.955 17.269 (-117.229697,33.675043) CA 0643 186560131 556706 72.031 0.215 (-118.336303,33.90311) CA 0644 205539401 66883476 79.359 25.824 (-118.250983,33.81875) CA 0645 855697061 5439763 330.386 2.1 (-117.668355,33.714258) CA 0646 185747870 2426355 71.718 0.937 (-117.896363,33.790804) CA 0647 559987484 1176316015 216.212 454.178 (-118.481043,33.367642) CA 0648 376771056 283257821 145.472 109.366 (-117.905765,33.619495) CA 0649 1432472469 512443592 553.081 197.856 (-117.379519,33.314786) CA 0650 7219212004 43680830 2787.353 16.865 (-116.62259,33.113548) CA 0651 12410219319 870626200 4791.613 336.151 (-115.525428,32.996239) CA 0652 691525160 296862469 266.999 114.619 (-117.16536,32.85722) CA 0653 350755245 6841556 135.427 2.642 (-117.031482,32.718314) CO 0801 491113531 7020454 189.62 2.711 (-104.908758,39.732286) CO 0802 19516433217 236253799 7535.337 91.218 (-105.744525,40.148079) CO 0803 128804681992 383113933 49731.768 147.921 (-107.344849,38.743254) CO 0804 98685461119 435569651 38102.671 168.174 (-103.413853,39.070683) CO 0805 18818131553 61272042 7265.722 23.657 (-105.344151,38.815408) CO 0806 1229372655 21688714 474.663 8.374 (-104.765351,39.755088) CO 0807 886052359 25182665 342.107 9.723 (-105.042224,39.826149) CT 0901 1749407257 51391936 675.45 19.843 (-73.017382,41.928463) CT 0902 5148068905 298389212 1987.681 115.209 (-72.206509,41.653687) CT 0903 1218176271 68591531 470.341 26.483 (-72.877381,41.385372) CT 0904 1193274765 214553278 460.726 82.839 (-73.388514,41.196801) CT 0905 3232714229 87476227 1248.158 33.775 (-73.21,41.694322) CT 09ZZ 0 1095332714 0 422.91 (-72.842465,41.166607) DE 1000 5046703785 1399060967 1948.543 540.18 (-75.447374,38.99355) DC 1198 158114680 18884970 61.048 7.292 (-77.017094,38.904149) FL 1201 10402178447 1923043766 4016.304 742.491 (-86.662466,30.662801) FL 1202 22309078732 3786903939 8613.584 1462.132 (-84.730377,30.282709) FL 1203 18922591173 1445174513 7306.054 557.985 (-82.735829,29.834624) FL 1204 4858743971 588503435 1875.972 227.222 (-81.864272,30.426253) FL 1205 3509514123 468166484 1355.031 180.76 (-81.751207,29.385204) FL 1206 6492896200 1790090697 2506.921 691.158 (-81.351825,29.457632) FL 1207 1330172200 167486249 513.582 64.667 (-81.21962,28.725709) FL 1208 4537808160 1709286501 1752.058 659.959 (-80.698906,28.164649) FL 1209 4422372407 520360046 1707.488 200.912 (-81.201653,28.13181) FL 1210 2924927656 699821949 1129.321 270.203 (-81.741187,28.516018) FL 1211 6500565323 1038113708 2509.882 400.818 (-82.241472,28.858609) FL 1212 2288903065 477810429 883.75 184.484 (-82.491659,28.268665) FL 1213 481812230 600746135 186.029 231.949 (-82.748405,27.866185) FL 1214 687377834 666135808 265.398 257.196 (-82.512718,27.833618) FL 1215 2119941760 145692198 818.514 56.252 (-82.082016,28.041384) FL 1216 2267097987 823911676 875.331 318.114 (-82.426202,27.306261) FL 1217 16498147737 1870651518 6369.971 722.263 (-81.548295,27.317474) FL 1218 3917477078 979524311 1512.546 378.196 (-80.3795,27.138361) FL 1219 1943452045 1597292115 750.371 616.718 (-81.906739,26.431616) FL 1220 6286990870 700997654 2427.421 270.657 (-80.677096,26.508924) FL 1221 675910263 8694946 260.97 3.357 (-80.211301,26.468693) FL 1222 447752336 483662936 172.878 186.743 (-80.077788,26.403288) FL 1223 437963002 296029109 169.098 114.297 (-80.346007,26.073605) FL 1224 274750139 36938006 106.082 14.262 (-80.219126,25.907101) FL 1225 8372667635 388270701 3232.705 149.912 (-81.066902,26.094964) FL 1226 5435496605 7255313105 2098.657 2801.292 (-81.027707,25.142631) FL 1227 540892618 955546269 208.84 368.938 (-80.30606,25.572782) GA 1301 20675388766 2454073678 7982.813 947.523 (-81.942545,31.317438) GA 1302 24931828118 449814025 9626.233 173.674 (-84.418534,31.815153) GA 1303 9941062730 209988166 3838.266 81.077 (-84.728664,33.150522) GA 1304 1286193914 23051544 496.602 8.9 (-84.050563,33.6996) GA 1305 686100850 5127435 264.905 1.98 (-84.401119,33.706985) GA 1306 773785099 14270149 298.76 5.51 (-84.34568,34.013047) GA 1307 1016855087 25787778 392.61 9.957 (-84.083307,34.039896) GA 1308 22563044577 368163842 8711.641 142.149 (-83.451511,31.779807) GA 1309 13495927062 413225039 5210.807 159.547 (-83.686869,34.506204) GA 1310 18379116726 465170518 7096.217 179.603 (-83.062309,33.424206) GA 1311 2774513523 69161482 1071.246 26.703 (-84.651663,34.180774) GA 1312 21199762274 377544219 8185.274 145.771 (-82.223842,32.413331) GA 1313 1851719039 24015899 714.953 9.273 (-84.568775,33.629827) GA 1314 9383938838 51803141 3623.159 20.001 (-85.097876,34.430586) HI 1501 541889636 456255417 209.225 176.161 (-157.905954,21.32264) HI 1502 16092640339 11222239041 6213.403 4332.931 (-155.506103,19.809767) ID 1601 102092199029 1316278062 39418.02 508.218 (-116.035842,45.29675) ID 1602 111952481828 1081609742 43225.097 417.612 (-113.364275,43.443944) IL 1701 669207822 2206772 258.383 0.852 (-87.835823,41.545009) IL 1702 2798919381 25525663 1080.669 9.856 (-87.790115,41.256208) IL 1703 614291834 12618806 237.179 4.872 (-87.891975,41.678983) IL 1704 135856892 893768 52.455 0.345 (-87.710024,41.831869) IL 1705 247878648 1644611 95.706 0.635 (-87.830902,41.930366) IL 1706 981039886 27469346 378.782 10.606 (-88.219878,42.175102) IL 1707 161917640 4788468 62.517 1.849 (-87.732122,41.863332) IL 1708 532281931 10784395 205.515 4.164 (-88.096644,42.009666) IL 1709 272854529 1533501 105.35 0.592 (-87.810185,42.052684) IL 1710 776432948 31761118 299.782 12.263 (-87.939165,42.279747) IL 1711 727650482 14262813 280.947 5.507 (-88.145949,41.642798) IL 1712 12971192426 462819950 5008.206 178.696 (-89.431982,37.995165) IL 1713 15005475516 215893456 5793.647 83.357 (-89.519842,39.515635) IL 1714 4137752896 62514547 1597.595 24.137 (-88.445853,42.025547) IL 1715 38061612586 354174327 14695.671 136.747 (-88.44213,38.905179) IL 1716 20506197986 180830460 7917.488 69.819 (-88.799536,41.39129) IL 1717 17956599913 338574734 6933.082 130.724 (-90.218653,41.389467) IL 1718 27236198147 382488202 10515.955 147.68 (-90.069118,40.227184) IL 17ZZ 922 4071253143 0 1571.92 (-87.56635,41.773669) IN 1801 2996678108 624542894 1157.024 241.137 (-87.179817,41.497034) IN 1802 10252664272 132253412 3958.576 51.063 (-86.236798,41.248724) IN 1803 10827116608 134942415 4180.373 52.102 (-85.236178,41.096554) IN 1804 16453018354 67934729 6352.546 26.23 (-86.859412,40.381088) IN 1805 4985110792 41087258 1924.762 15.864 (-85.869599,40.248632) IN 1806 16075623584 106632747 6206.833 41.171 (-85.376338,39.475219) IN 1807 786951061 4925575 303.844 1.902 (-86.139006,39.746873) IN 1808 18791362705 278683891 7255.386 107.6 (-87.199347,38.733017) IN 1809 11620668174 146001270 4486.765 56.371 (-86.212801,38.782916) IA 1901 31206341466 228952740 12048.836 88.399 (-91.896123,42.52776) IA 1902 31758230355 431616385 12261.922 166.648 (-92.149188,41.208515) IA 1903 22765022994 153189312 8789.625 59.147 (-94.640381,41.209543) IA 1904 58939702042 262836568 22756.747 101.482 (-94.645098,42.628638) KS 2001 136084441189 594393752 52542.499 229.497 (-99.408037,38.731595) KS 2002 36631073122 530177718 14143.337 204.703 (-95.42464,38.482278) KS 2003 1961140628 33428752 757.201 12.907 (-94.790643,38.895004) KS 2004 37077440974 187868708 14315.681 72.537 (-97.743983,37.554465) KY 2101 31285765773 1225954220 12079.502 473.344 (-87.184938,37.084603) KY 2102 18589493191 406378127 7177.444 156.903 (-85.99049,37.544621) KY 2103 827083185 41659117 319.339 16.085 (-85.697271,38.189221) KY 2104 11349809229 282363806 4382.186 109.021 (-84.427823,38.565851) KY 2105 29098900619 310242468 11235.149 119.785 (-83.521892,37.368826) KY 2106 11118089644 119971954 4292.719 46.321 (-84.154778,38.053447) LA 2201 10438247138 14500220172 4030.23 5598.567 (-89.892754,29.666395) LA 2202 3285343135 522425050 1268.478 201.709 (-90.568499,30.046744) LA 2203 18086703449 5596018883 6983.316 2160.635 (-92.430431,29.951122) LA 2204 32206765985 1110605520 12435.102 428.807 (-93.179606,31.792047) LA 2205 37432796821 1115646195 14452.884 430.753 (-91.823524,31.766446) LA 2206 10447737924 916227446 4033.894 353.757 (-91.024897,30.297575) ME 2301 8509451103 4736333810 3285.518 1828.709 (-69.940879,43.830407) ME 2302 71373349577 7013978995 27557.406 2708.113 (-69.055935,45.484863) MD 2401 10300530308 4035490288 3977.057 1558.112 (-75.964655,38.766717) MD 2402 903582251 440572281 348.875 170.106 (-76.428419,39.339547) MD 2403 787706742 253118872 304.135 97.73 (-76.676863,39.157221) MD 2404 771314809 48322758 297.806 18.658 (-76.592616,39.05649) MD 2405 3836384243 2070203372 1481.236 799.31 (-76.711406,38.472175) MD 2406 5051143945 102104250 1950.258 39.423 (-78.884335,39.537614) MD 2407 1263983037 15278107 488.027 5.899 (-76.995743,39.288557) MD 2408 2226993046 24489657 859.847 9.456 (-77.241743,39.422281) MA 2501 6087221390 129463171 2350.289 49.986 (-72.864168,42.331036) MA 2502 4216494570 221736235 1627.998 85.613 (-72.118691,42.385042) MA 2503 1962836070 75942321 757.855 29.321 (-71.572828,42.589515) MA 2504 1730800498 86532011 668.266 33.41 (-71.227527,41.997199) MA 2505 686553938 58569977 265.08 22.614 (-71.298439,42.355353) MA 2506 1364370758 864122260 526.787 333.639 (-70.885391,42.617112) MA 2507 162316247 97575030 62.671 37.674 (-71.009442,42.316688) MA 2508 845304170 447660702 326.374 172.843 (-70.944005,42.194734) TX 4836 18455815604 1242340944 7125.831 479.671 (-94.43149,30.429193) UT 4901 50662202730 3223068206 19560.787 1244.434 (-111.329824,40.961128) UT 4902 103568306554 3008930687 39987.948 1161.755 (-112.553173,38.74535) UT 4903 51982450346 457355124 20070.537 176.586 (-110.2164,38.696762) UT 4904 6605369843 374212737 2550.348 144.484 (-111.844453,39.879317) VT 5000 23871030489 1035236182 9216.657 399.707 (-72.673354,44.060548) VA 5101 9542342795 2192604010 3684.319 846.569 (-76.906589,37.85234) VA 5102 2568428064 4676499493 991.676 1805.607 (-75.886941,37.408136) VA 5103 2452979018 548905782 947.101 211.934 (-76.951135,37.213528) VA 5104 11163735614 180448766 4310.343 69.672 (-77.3068,36.974562) VA 5105 25977046614 391709215 10029.794 151.24 (-78.740289,37.339049) VA 5106 15358682992 104937376 5930.021 40.517 (-79.199254,38.136543) VA 5107 7190825396 170998140 2776.393 66.023 (-77.74653,37.96804) VA 5108 386527846 29003489 149.239 11.198 (-77.139586,38.779517) VA 5109 23604811775 154881249 9113.869 59.8 (-81.350647,36.983357) VA 5110 3554085389 36034039 1372.24 13.913 (-77.856758,39.0758) VA 5111 479383806 21677104 185.091 8.37 (-77.294781,38.788187) WA 5301 16022887883 1096000986 6186.472 423.168 (-121.657957,48.367369) WA 5302 2628891455 2689556004 1015.021 1038.443 (-122.625916,48.372848) WA 5303 23605189465 1212430234 9114.015 468.122 (-122.262232,46.270813) WA 5304 49857847670 807704671 19250.223 311.857 (-119.707229,47.294586) WA 5305 40075210026 598889562 15473.126 231.233 (-117.867549,47.573205) WA 5306 17877991988 5090892772 6902.732 1965.605 (-123.550926,47.638847) WA 5307 373304595 340401468 144.134 131.43 (-122.391357,47.578426) WA 5308 19061530450 364912810 7359.698 140.894 (-121.039403,47.362367) WA 5309 475071785 107564403 183.426 41.531 (-122.258306,47.457524) WA 5310 2141076293 233482676 826.674 90.148 (-122.755815,47.041722) WV 5401 16253632336 176490542 6275.563 68.143 (-80.268497,39.381986) WV 5402 20764744914 127790482 8017.313 49.34 (-80.173761,38.838754) WV 5403 25240298351 192564847 9745.334 74.35 (-81.21845,37.991116) WI 5501 4475279776 2524512871 1727.915 974.72 (-88.046395,42.695215) WI 5502 11749962702 189131014 4536.686 73.024 (-89.751034,42.984722) WI 5503 28779398414 828682510 11111.788 319.956 (-90.891748,44.056297) WI 5504 332415198 2454820704 128.346 947.812 (-87.84338,42.908416) WI 5505 4897018076 165245438 1890.749 63.802 (-88.531462,43.199589) WI 5506 12738582987 7318760932 4918.395 2825.79 (-88.27442,43.779216) WI 5507 59666222544 7704559488 23037.258 2974.747 (-90.655335,45.698997) WI 5508 17629185191 8181047526 6806.667 3158.72 (-87.936811,44.831256) WY 5600 251470069067 1864445306 97093.141 719.866 (-107.541925,42.991802) PR 7298 8867536532 4923745357 3423.775 1901.069 (-66.410799,18.217648) MA 2509 3146160164 5152082129 1214.739 1989.23 (-70.485169,41.694853) MI 2601 64821578223 75785387178 25027.752 29260.903 (-86.436912,46.157305) MI 2602 8498237155 7471438194 3281.188 2884.739 (-86.318863,43.397541) MI 2603 6808394834 179824156 2628.736 69.43 (-85.237276,42.720027) MI 2604 21905598000 521806480 8457.799 201.471 (-84.750399,43.731553) MI 2605 6083111435 4835861407 2348.703 1867.137 (-83.690011,44.081876) MI 2606 9186011525 4068050944 3546.739 1570.683 (-86.156052,42.164052) MI 2607 10949773216 527071787 4227.731 203.504 (-84.304955,42.093608) MI 2608 3893207079 99631264 1503.176 38.468 (-83.945354,42.647773) MI 2609 475489377 13351839 183.587 5.155 (-83.054722,42.52966) MI 2610 10723688815 5444060009 4140.44 2101.963 (-82.882407,43.455904) MI 2611 1085880060 55385897 419.261 21.385 (-83.453996,42.530002) MI 2612 1044300868 71700685 403.207 27.684 (-83.449841,42.205152) MI 2613 478755539 5465710 184.849 2.11 (-83.312553,42.380381) MI 2614 481049094 97485386 185.734 37.639 (-82.921841,42.389224) MI 26ZZ 0 4875244904 0 1882.343 (-86.544742,42.636317) MN 2701 31012480589 541389247 11973.986 209.032 (-93.711742,43.898939) MN 2702 6314168040 243962390 2437.914 94.194 (-92.853042,44.478968) MN 2703 1365040751 144827884 527.045 55.918 (-93.52862,44.99588) MN 2704 861134180 84668049 332.486 32.691 (-92.977339,45.00271) MN 2705 351360899 16690995 135.661 6.444 (-93.2942,44.980969) MN 2706 7464903674 404347034 2882.216 156.119 (-93.852055,45.336807) MN 2707 86581508630 5045614519 33429.309 1948.123 (-95.675905,46.55302) MN 2708 72281712436 12448954519 27908.126 4806.568 (-92.963806,47.250326) MS 2801 27383428257 409454965 10572.801 158.091 (-89.003512,34.197518) MS 2802 40278226793 961197230 15551.511 371.12 (-90.350829,33.17633) MS 2803 33033947626 341748013 12754.479 131.95 (-89.746721,32.015544) MS 2804 20835113252 2194607587 8044.483 847.343 (-89.083893,30.993478) MO 2901 583674780 27140208 225.358 10.479 (-90.296228,38.728386) MO 2902 1206319386 37446186 465.763 14.458 (-90.532337,38.60297) MO 2903 17745419750 368194223 6851.545 142.161 (-91.563185,38.578171) MO 2904 37299392401 757270733 14401.377 292.384 (-93.318995,38.282425) MO 2905 6280330016 90725994 2424.849 35.03 (-93.783936,39.141446) MO 2906 47134211054 526931462 18198.621 203.449 (-93.293542,39.948014) MO 2907 16246582076 248452833 6272.841 95.928 (-93.706352,36.991061) MO 2908 51543786838 444402073 19901.168 171.585 (-90.934515,37.194128) MT 3000 376961878670 3869200368 145545.801 1493.907 (-109.634817,47.051177) NE 3101 22996561630 249218683 8879.022 96.224 (-96.828662,41.374459) NE 3102 1320212223 43520056 509.737 16.803 (-96.160905,41.228622) NE 3103 174656907608 1063481110 67435.412 410.612 (-100.215927,41.554147) NV 3201 270656933 16686 104.501 0.006 (-115.1515,36.133513) NV 3202 144598292090 1316144422 55829.715 508.166 (-117.329684,40.651151) NV 3203 7378846898 102387527 2848.989 39.532 (-115.154069,35.663338) NV 3204 132084141620 629213043 50997.974 242.941 (-116.026576,38.085574) NH 3301 6380829550 625830769 2463.652 241.635 (-71.199131,43.457846) NH 3302 16806429727 401128387 6488.999 154.877 (-71.721452,43.764181) NJ 3401 906545266 52000240 350.019 20.077 (-75.05803,39.791988) NJ 3402 5419368072 2031977051 2092.43 784.551 (-74.908673,39.392647) NJ 3403 2330203009 620085486 899.696 239.416 (-74.476374,39.898922) NJ 3404 1791965109 48886164 691.882 18.875 (-74.319244,40.165145) NJ 3405 2567455534 83871867 991.3 32.383 (-74.828136,41.18625) NJ 3406 558275021 503092209 215.551 194.245 (-74.202649,40.35492) NJ 3407 2512787275 47453474 970.193 18.322 (-74.789504,40.631748) NJ 3408 141641193 37216922 54.688 14.37 (-74.108589,40.723043) NJ 3409 246938979 19370224 95.344 7.479 (-74.073824,40.860782) NJ 3410 196626172 12882293 75.918 4.974 (-74.209045,40.708964) NJ 3411 1307859596 68783545 504.967 26.557 (-74.450462,40.902057) NJ 3412 1067676465 18410734 412.232 7.108 (-74.573851,40.374205) NM 3501 11914298787 17968586 4600.137 6.938 (-106.051091,34.771562) NM 3502 185804422638 418852573 71739.492 161.72 (-106.299459,33.38532) NM 3503 116442026815 319838514 44958.52 123.49 (-105.831875,36.009834) NY 3601 1683553908 3359820481 650.024 1297.234 (-72.549522,40.983885) NY 3602 471408004 374006681 182.012 144.405 (-73.288487,40.685329) NY 3603 660252592 301737078 254.925 116.501 (-73.505379,40.860496) NY 3604 287108344 168442511 110.853 65.036 (-73.60591,40.636948) NY 3605 134369452 184610374 51.88 71.278 (-73.822303,40.599179) NY 3606 77138776 661086 29.783 0.255 (-73.823549,40.734787) NY 3607 41855438 2721994 16.16 1.051 (-73.91057,40.690936) NY 3608 76824778 44942558 29.662 17.352 (-73.911077,40.621438) NY 3609 40247314 529234 15.54 0.204 (-73.947201,40.642184) NY 3610 36901378 22804282 14.248 8.805 (-74.00721,40.702069) NY 3611 170510828 126204118 65.835 48.728 (-74.126314,40.566974) NY 3612 38297238 7148862 14.787 2.76 (-73.951264,40.750025) NY 3613 26557497 7064778 10.254 2.728 (-73.933035,40.838764) NY 3614 73281172 39871691 28.294 15.395 (-73.83707,40.809695) NY 3615 37651207 6365889 14.537 2.458 (-73.891157,40.824067) NY 3616 202989104 76385016 78.375 29.492 (-73.791088,40.939735) NY 3617 991000680 149852099 382.628 57.858 (-73.919355,41.159532) NY 3618 3505353719 162199797 1353.425 62.626 (-74.080981,41.411657) NY 3619 20556786296 430807927 7937.02 166.336 (-74.425648,42.227814) NY 3620 3188987644 82332058 1231.275 31.789 (-73.988366,42.748882) NY 3621 39147059483 3339725691 15114.765 1289.475 (-74.609231,44.008384) NY 3622 13150538178 386994698 5077.451 149.419 (-75.662664,42.870701) NY 3623 19092487463 1602471354 7371.651 618.718 (-77.845808,42.344244) NY 3624 6186343632 3271972837 2388.561 1263.316 (-76.648094,43.210319) NY 3625 1321388119 1831763088 510.191 707.248 (-77.731219,43.330179) NY 3626 567552908 35642847 219.133 13.762 (-78.840983,42.961825) NY 3627 10290361795 3222845071 3973.131 1244.347 (-78.316882,43.00085) NC 3701 14230107017 411962964 5494.275 159.06 (-77.50398,36.100916) NC 3702 8408851918 129062269 3246.676 49.831 (-79.297762,35.446238) NC 3703 20228002531 10852474033 7810.076 4190.164 (-76.629796,35.40565) NC 3704 2707456661 56471672 1045.355 21.804 (-78.995145,35.62432) NC 3705 9251076807 64649149 3571.861 24.961 (-80.960593,36.14508) NC 3706 9517030535 147325197 3674.546 56.883 (-79.68158,36.309988) NC 3707 15958901284 1127024086 6161.766 435.146 (-78.325581,34.687139) NC 3708 11688038111 167304561 4512.777 64.597 (-79.95142,35.122362) NC 3709 2219428354 115853295 856.926 44.731 (-80.83843,35.379658) NC 3710 6669641031 101485333 2575.163 39.184 (-81.62936,35.439187) NC 3711 17710954888 191583194 6838.238 73.971 (-82.787715,35.553301) NC 3712 1423601792 19055068 549.656 7.357 (-80.442471,35.646262) NC 3713 5906700278 86935510 2280.59 33.566 (-78.213107,35.783228) ND 3800 178711239147 4396568298 69000.798 1697.525 (-100.46193,47.456954) OH 3901 1779216719 26656777 686.959 10.292 (-84.346772,39.336079) OH 3902 8343964105 77276076 3221.623 29.836 (-83.560792,39.020784) OH 3903 590529624 11237442 228.005 4.339 (-82.947495,39.966207) OH 3904 12081967479 122679831 4664.874 47.367 (-83.935703,40.387175) OH 3905 14572481738 72291719 5626.467 27.912 (-84.044789,41.155751) OH 3906 18686847696 201813993 7215.033 77.921 (-81.575039,39.771409) OH 3907 10009670581 64741008 3864.756 24.997 (-82.392918,40.481163) OH 3908 6346731105 40375074 2450.487 15.589 (-84.160814,39.899479) OH 3909 1203444252 4312245265 464.652 1664.967 (-82.548119,41.403253) OH 3910 2926070888 15306890 1129.762 5.91 (-83.958852,39.701375) OH 3911 633144520 1310816925 244.458 506.109 (-81.531037,41.61325) OH 3912 5884227383 76927301 2271.913 29.702 (-82.613677,40.239323) OH 3913 2316214576 70147310 894.295 27.084 (-80.978697,41.14963) OH 3914 5058598501 3735719693 1953.136 1442.369 (-81.018103,41.751638) OH 3915 12273779555 99723126 4738.933 38.503 (-82.756205,39.57786) OH 3916 3121817970 31053689 1205.341 11.99 (-81.740604,40.982155) OK 4001 4225995119 143510449 1631.666 55.41 (-95.789582,36.211741) OK 4002 54377700020 1952860720 20995.348 754.004 (-95.459079,35.146709) OK 4003 88361918285 813684558 34116.729 314.165 (-98.840225,36.105809) OK 4004 25323037082 408089926 9777.28 157.564 (-97.750131,34.586592) OK 4005 5371371050 59066845 2073.898 22.806 (-96.989604,35.307879) OR 4101 7788094840 770435462 3007 297.467 (-123.341271,45.721199) OR 4102 179855973028 1902810029 69442.782 734.679 (-119.59685,43.837494) OR 4103 2782833882 82928829 1074.458 32.019 (-122.228679,45.399831) OR 4104 44739550558 2227993094 17274.038 860.233 (-123.245543,43.490431) OR 4105 13441349947 1207265814 5189.734 466.128 (-123.195164,45.028365) PA 4201 201774448 31190532 77.906 12.043 (-75.214285,39.927735) PA 4202 192014914 3473867 74.137 1.341 (-75.222197,40.015162) PA 4203 9973523434 2116071750 3850.799 817.02 (-80.003557,41.407608) PA 4204 3931190441 41638534 1517.841 16.077 (-76.91089,39.923851) PA 4205 27741917011 213481014 10711.214 82.425 (-78.570677,41.387174) PA 4206 2228610486 29513828 860.471 11.395 (-75.640689,40.060302) PA 4207 2234030255 21218113 862.564 8.192 (-75.92178,39.898092) PA 4208 1830927400 49409223 706.925 19.077 (-75.151156,40.33608) PA 4209 14840864249 94904462 5730.09 36.643 (-78.673654,40.141578) PA 4210 21699077641 298358374 8378.061 115.197 (-76.523189,41.372693) PA 4211 8693230813 193137832 3356.475 74.571 (-76.45176,40.881389) PA 4212 5602221956 59324952 2163.03 22.905 (-79.4865,40.428412) PA 4213 401915431 2647082 155.18 1.022 (-75.159856,40.123926) PA 4214 542054790 26843370 209.289 10.364 (-79.905708,40.432558) PA 4215 3328220908 33974877 1285.033 13.118 (-75.962407,40.528964) PA 4216 2583987204 105166877 997.683 40.605 (-76.213198,40.020882) PA 4217 4489010475 59319459 1733.217 22.903 (-75.797088,40.885497) PA 4218 5368492458 17448585 2072.787 6.737 (-80.027517,40.170535) RI 4401 695396699 628727762 268.494 242.753 (-71.328672,41.630677) RI 4402 1982169755 694940777 765.32 268.318 (-71.615514,41.569601) SC 4501 4008949451 2197062974 1547.864 848.291 (-80.160624,32.714063) SC 4502 7827385101 226166394 3022.17 87.323 (-81.376977,33.63446) SC 4503 13644770782 518767470 5268.276 200.297 (-82.338204,34.363867) SC 4504 3365165380 44947906 1299.298 17.354 (-82.174176,34.943666) SC 4505 14259288624 265991794 5505.542 102.7 (-81.010777,34.530205) SC 4506 20882884567 863479168 8062.927 333.391 (-80.523983,33.208208) SC 4507 13868398039 959416179 5354.619 370.433 (-79.498848,34.083478) SD 4600 196349580075 3379099963 75811 1304.678 (-100.238176,44.446796) TN 4701 10727534244 207865072 4141.924 80.257 (-82.799933,36.21248) TN 4702 6010527741 281228917 2320.678 108.583 (-83.821205,36.050328) TN 4703 11837069583 372570013 4570.318 143.85 (-84.509444,35.761646) TN 4704 15500657242 241483928 5984.837 93.237 (-86.628878,35.262145) TN 4705 3233789391 72259782 1248.573 27.9 (-87.074025,36.187331) TN 4706 16768130740 325902947 6474.212 125.832 (-85.778434,36.194771) TN 4707 23725420202 416351652 9160.436 160.754 (-87.832914,35.633805) TN 4708 17742779900 382968945 6850.526 147.865 (-89.099842,35.855566) TN 4709 1251976949 54587609 483.391 21.076 (-89.977553,35.166762) TX 4801 20354342566 977025370 7858.856 377.232 (-94.552046,31.951678) TX 4802 799665920 55155962 308.753 21.296 (-95.178264,30.047399) TX 4803 1245465867 97839990 480.877 37.776 (-96.613271,33.159472) TX 4804 26218435714 1029443881 10122.995 397.471 (-95.421239,33.305202) TX 4805 13063503125 495044994 5043.847 191.138 (-95.731668,32.225795) TX 4806 5564347681 256154264 2148.407 98.902 (-96.665879,32.235054) TX 4807 419433494 3173755 161.944 1.225 (-95.500307,29.724165) TX 4808 15679168619 413854456 6053.761 159.79 (-95.543595,30.833269) TX 4809 429016708 5329822 165.644 2.058 (-95.494207,29.64547) TX 4810 13133703455 187193708 5070.951 72.276 (-96.594608,29.975184) TX 4811 72084978179 573530200 27832.167 221.441 (-100.063696,31.732293) TX 4812 3732589668 86690712 1441.161 33.471 (-97.664511,32.821179) TX 4813 99324081728 767232538 38349.244 296.23 (-100.597872,34.837689) TX 4814 6323178233 2553025292 2441.393 985.729 (-94.892695,29.433717) TX 4815 20212457269 154736415 7804.074 59.744 (-98.263411,27.750011) TX 4816 1839807888 4119389 710.354 1.591 (-106.310439,31.910828) TX 4817 19816401268 308169315 7651.156 118.985 (-96.665768,31.153602) TX 4818 609166070 4584054 235.2 1.77 (-95.253575,29.81855) TX 4819 66913876220 282509180 25835.593 109.077 (-101.209738,33.24529) TX 4820 517158384 1531315 199.676 0.591 (-98.622461,29.474317) TX 4821 15335027478 91863760 5920.887 35.469 (-98.975368,30.05789) TX 4822 2675047543 62752704 1032.842 24.229 (-95.677391,29.510739) TX 4823 150372595400 449961144 58059.186 173.731 (-102.326756,30.38921) TX 4824 680550576 23277427 262.762 8.987 (-97.012718,32.919469) TX 4825 19737519157 320670326 7620.699 123.812 (-97.815913,31.500791) TX 4826 2349508947 191870281 907.151 74.082 (-97.134174,33.184616) TX 4827 23642064923 4517883089 9128.253 1744.364 (-96.841407,28.782994) TX 4828 24290274205 300362174 9378.528 115.97 (-98.913612,27.848634) TX 4829 484503884 10479728 187.068 4.046 (-95.199807,29.688161) TX 4830 922738985 33054850 356.272 12.763 (-96.799407,32.658767) TX 4831 5580112314 136956639 2154.494 52.879 (-97.535412,30.828818) TX 4832 480864609 35470817 185.663 13.695 (-96.653636,32.920383) TX 4833 548926029 16651298 211.942 6.429 (-97.106948,32.756444) TX 4834 21212823704 3364926573 8190.317 1299.205 (-97.925366,26.773816) TX 4835 1537846564 19752948 593.766 7.627 (-97.885176,29.915524) pgloader/test/regress/expected/allcols.out0000644000175000017500000000032113047375022021154 0ustar vagrantvagrant1 2008-02-18 first entry 2 2008-02-19 second one 3 2008-02-20 another 4 2008-02-21 still running 5 2008-02-22 well, some more 6 2008-02-23 antepenultima 7 2008-02-24 next to last 8 2008-02-25 hey, it's today! pgloader/test/regress/expected/xzero.out0000644000175000017500000000032713047375022020700 0ustar vagrantvagrant1 2006-11-11 some first row text 2 2006-11-13 some second row text 3 2006-10-12 some third row text 4 2006-10-04 \\ 5 2006-05-12 some fifth row text 6 2006-07-10 some sixth row text 7 \N some null date to play with pgloader/test/regress/expected/fixed.out0000644000175000017500000000031113047375022020621 0ustar vagrantvagrant123456789 2008-05-20 11:43:12.5 firstline 123456 2008-05-21 15:18:23 left blank-padded 1234567890 2008-05-22 08:23:15.6 another line 234560987 2014-09-29 14:37:15 \N 234567890 2014-09-29 14:37:15.2 \N pgloader/test/regress/expected/csv-temp.out0000644000175000017500000000023713047375022021267 0ustar vagrantvagrant100 2015-01-01 00:00:00 -6 10 101 2015-01-02 00:00:00 -2.1 12.5 102 2015-01-03 00:00:00 3.4 5.5 103 2015-01-04 00:00:00 4.7 -2.3 104 2015-01-05 00:00:00 0.4 0 pgloader/test/regress/expected/overflow.out0000644000175000017500000000000013047375022021360 0ustar vagrantvagrantpgloader/test/regress/expected/partial.out0000644000175000017500000000016713047375022021167 0ustar vagrantvagrant1 foo bar \N hop 2 foo bar \N hop 3 foo bar \N hop 4 foo bar \N hop 5 foo bar \N hop 6 foo bar \N hop 7 foo bar \N hop pgloader/test/regress/expected/csv-json.out0000644000175000017500000000222413047375022021271 0ustar vagrantvagrant{"table-name": "fetch","read":0,"imported":0,"errors":0,"time":"0.000s"} {"table-name": "fetch meta data","read":8,"imported":8,"errors":0,"time":"0.026s"} {"table-name": "create, truncate","read":0,"imported":0,"errors":0,"time":"0.046s"} {"table-name": "long","read":0,"imported":2,"errors":0,"time":"0.069s"} {"table-name": "blobs","read":0,"imported":1,"errors":0,"time":"0.021s"} {"table-name": "unsigned","read":0,"imported":2,"errors":0,"time":"0.007s"} {"table-name": "reals","read":0,"imported":3,"errors":0,"time":"0.007s"} {"table-name": "ints","read":0,"imported":3,"errors":0,"time":"0.006s"} {"table-name": "def","read":0,"imported":2,"errors":0,"time":"0.007s"} {"table-name": "stamps","read":0,"imported":2,"errors":0,"time":"0.007s"} {"table-name": "character","read":0,"imported":4,"errors":0,"time":"0.005s"} {"table-name": "index build completion","read":0,"imported":0,"errors":0,"time":"0.000s"} {"table-name": "Create Indexes","read":0,"imported":0,"errors":0,"time":"0.000s"} {"table-name": "Reset Sequences","read":0,"imported":0,"errors":0,"time":"0.015s"} {"table-name": "Total streaming time","read":0,"imported":19,"errors":0,"time":"0.216s"} pgloader/test/regress/out/0000755000175000017500000000000013127365165016012 5ustar vagrantvagrantpgloader/test/regress/out/csv-escape-mode.out0000644000175000017500000000000013127365141021476 0ustar vagrantvagrantpgloader/test/regress/out/serial.out0000644000175000017500000000000013127365163020006 0ustar vagrantvagrantpgloader/test/regress/out/copy.out0000644000175000017500000000000013127365153017500 0ustar vagrantvagrantpgloader/test/regress/out/csv-trim-extra-blanks.out0000644000175000017500000000000013127365151022661 0ustar vagrantvagrantpgloader/test/regress/out/copy-hex.out0000644000175000017500000000000013127365153020262 0ustar vagrantvagrantpgloader/test/regress/out/csv-non-printable.out0000644000175000017500000000000013127365146022071 0ustar vagrantvagrantpgloader/test/regress/out/fields-with-periods.out0000644000175000017500000000000013127365157022414 0ustar vagrantvagrantpgloader/test/regress/out/csv.out0000644000175000017500000000000013127365152017320 0ustar vagrantvagrantpgloader/test/regress/out/csv-before-after.out0000644000175000017500000000000013127365136021661 0ustar vagrantvagrantpgloader/test/regress/out/csv-header.out0000644000175000017500000000000013127365143020546 0ustar vagrantvagrantpgloader/test/regress/out/csv-keep-extra-blanks.out0000644000175000017500000000000013127365145022635 0ustar vagrantvagrantpgloader/test/regress/out/dbf.out0000644000175000017500000000000013127365154017262 0ustar vagrantvagrantpgloader/test/regress/out/csv-error.out0000644000175000017500000000000013127365140020444 0ustar vagrantvagrantpgloader/test/regress/out/csv-nulls.out0000644000175000017500000000000013127365147020457 0ustar vagrantvagrantpgloader/test/regress/out/errors.out0000644000175000017500000000000013127365155020044 0ustar vagrantvagrantpgloader/test/regress/out/udc.out0000644000175000017500000000000013127365164017303 0ustar vagrantvagrantpgloader/test/regress/out/ixf.out0000644000175000017500000000000013127365160017312 0ustar vagrantvagrantpgloader/test/regress/out/csv-parse-date.out0000644000175000017500000000000013127365137021346 0ustar vagrantvagrantpgloader/test/regress/out/csv-missing-col.out0000644000175000017500000000000013127365145021544 0ustar vagrantvagrantpgloader/test/regress/out/csv-filename-pattern.out0000644000175000017500000000000013127365142022550 0ustar vagrantvagrantpgloader/test/regress/out/csv-districts.out0000644000175000017500000000000013127365136021330 0ustar vagrantvagrantpgloader/test/regress/out/allcols.out0000644000175000017500000000000013127365134020156 0ustar vagrantvagrantpgloader/test/regress/out/xzero.out0000644000175000017500000000000013127365165017700 0ustar vagrantvagrantpgloader/test/regress/out/fixed.out0000644000175000017500000000000013127365157017631 0ustar vagrantvagrantpgloader/test/regress/out/csv-temp.out0000644000175000017500000000000013127365150020261 0ustar vagrantvagrantpgloader/test/regress/out/overflow.out0000644000175000017500000000000013127365161020370 0ustar vagrantvagrantpgloader/test/regress/out/partial.out0000644000175000017500000000000013127365162020162 0ustar vagrantvagrantpgloader/test/regress/out/csv-json.out0000644000175000017500000000000013127365144020270 0ustar vagrantvagrantpgloader/test/csv-json.load0000644000175000017500000000267013114072663016133 0ustar vagrantvagrantLOAD CSV FROM INLINE INTO postgresql:///pgloader?json WITH truncate, fields not enclosed, fields terminated by '0x02', fields escaped by '0x02' BEFORE LOAD DO $$ drop table if exists json; $$, $$ CREATE TABLE json (json text); $$; {"table-name": "fetch","read":0,"imported":0,"errors":0,"time":"0.000s"} {"table-name": "fetch meta data","read":8,"imported":8,"errors":0,"time":"0.026s"} {"table-name": "create, truncate","read":0,"imported":0,"errors":0,"time":"0.046s"} {"table-name": "long","read":0,"imported":2,"errors":0,"time":"0.069s"} {"table-name": "blobs","read":0,"imported":1,"errors":0,"time":"0.021s"} {"table-name": "unsigned","read":0,"imported":2,"errors":0,"time":"0.007s"} {"table-name": "reals","read":0,"imported":3,"errors":0,"time":"0.007s"} {"table-name": "ints","read":0,"imported":3,"errors":0,"time":"0.006s"} {"table-name": "def","read":0,"imported":2,"errors":0,"time":"0.007s"} {"table-name": "stamps","read":0,"imported":2,"errors":0,"time":"0.007s"} {"table-name": "character","read":0,"imported":4,"errors":0,"time":"0.005s"} {"table-name": "index build completion","read":0,"imported":0,"errors":0,"time":"0.000s"} {"table-name": "Create Indexes","read":0,"imported":0,"errors":0,"time":"0.000s"} {"table-name": "Reset Sequences","read":0,"imported":0,"errors":0,"time":"0.015s"} {"table-name": "Total streaming time","read":0,"imported":19,"errors":0,"time":"0.216s"} pgloader/test/bossa.load0000644000175000017500000000135613047375022015500 0ustar vagrantvagrantLOAD ARCHIVE FROM http://bossa.pl/pub/metastock/mstock/mstall.zip -- FROM /Users/dim/dev/temp/mstall.zip INTO postgresql:///stocks LOAD CSV FROM ALL FILENAMES MATCHING ~/ALIOR/ WITH ENCODING iso-8859-2 (ticker, quote_date, open, high, low, close, volume) INTO postgresql:///stocks?intf_stocks WITH SKIP HEADER=1, FIELDS OPTIONALLY ENCLOSED BY '"', FIELDS TERMINATED BY ',' AND LOAD CSV FROM ALL FILENAMES MATCHING ~/F[A-Z]{4}1[456]|OW20/ WITH ENCODING iso-8859-2 (ticker, quote_date, open, high, low, close, volume, openint) INTO postgresql:///stocks?intf_derivatives WITH SKIP HEADER = 1, FIELDS OPTIONALLY ENCLOSED BY '"', FIELDS TERMINATED BY ',' ; pgloader/test/sakila.load0000644000175000017500000000307513124715672015642 0ustar vagrantvagrantload database from mysql://root@localhost/sakila into postgresql:///sakila -- WITH include drop, create tables, no truncate, -- create indexes, reset sequences, foreign keys -- WITH batch rows = 10000 WITH on error stop, concurrency = 2, workers = 6, prefetch rows = 25000, -- multiple readers per thread, rows per range = 50000, max parallel create index = 4-- , -- quote identifiers SET PostgreSQL PARAMETERS maintenance_work_mem to '128MB', work_mem to '12MB', search_path to 'sakila, public, "$user"' SET MySQL PARAMETERS net_read_timeout = '120', net_write_timeout = '120' CAST type date drop not null drop default using zero-dates-to-null, type datetime to timestamp drop default drop not null using zero-dates-to-null -- type tinyint to boolean using tinyint-to-boolean, -- type year to integer drop typemod -- now a default -- MATERIALIZE VIEWS film_list, staff_list MATERIALIZE ALL VIEWS ALTER TABLE NAMES MATCHING ~/_list$/, 'sales_by_store', ~/sales_by/ SET SCHEMA 'mv' ALTER TABLE NAMES MATCHING 'sales_by_store' RENAME TO 'sales_by_store_list' ALTER TABLE NAMES MATCHING 'film' RENAME TO 'films' ALTER TABLE NAMES MATCHING ~/./ SET (fillfactor='40') ALTER SCHEMA 'sakila' RENAME TO 'pagila' -- INCLUDING ONLY TABLE NAMES MATCHING ~/film/, 'actor' -- EXCLUDING TABLE NAMES MATCHING ~ BEFORE LOAD DO $$ create schema if not exists pagila; $$, $$ create schema if not exists mv; $$, $$ alter database sakila set search_path to pagila, mv, public; $$; pgloader/test/bossa-all.load0000644000175000017500000000101613047375022016237 0ustar vagrantvagrant/* * We load all the files in the archive, all of them into the same target table. */ load archive from http://bossa.pl/pub/futures/mstock/mstfut.zip load csv from all filenames matching ~/./ with encoding iso-8859-2 ( ticker , quote_date , open , high , low , close , volume , openint ) into postgresql:///stocks?intf_derivatives with skip header=1 , fields optionally enclosed by '"' , fields terminated by ',' , truncate; pgloader/test/csv-hstore.load0000644000175000017500000000125513047375022016464 0ustar vagrantvagrantLOAD CSV FROM INLINE INTO postgresql://dim@localhost/pgloader?public."HS" WITH truncate, fields terminated by '\t', fields not enclosed, fields escaped by backslash-quote, quote identifiers SET work_mem to '128MB', standard_conforming_strings to 'on', application_name to 'my app name' BEFORE LOAD DO $$ create extension if not exists hstore; $$, $$ drop table if exists "HS"; $$, $$ CREATE TABLE "HS" ( id serial primary key, kv hstore ) $$; 1 email=>foo@example.com,a=>b 2 test=>value 3 a=>b,c=>"quoted hstore value",d=>other 4 baddata pgloader/test/geolite.sql0000644000175000017500000000140613047375022015675 0ustar vagrantvagrantcreate extension if not exists ip4r; create schema if not exists geolite; create table if not exists geolite.location ( locid integer primary key, country text, region text, city text, postalcode text, location point, metrocode text, areacode text ); create table if not exists geolite.blocks ( iprange ip4r, locid integer ); create or replace function geolite.locate(ip ip4) returns geolite.location language sql as $$ select l.locid, country, region, city, postalcode, location, metrocode, areacode from geolite.location l join geolite.blocks b using(locid) where b.iprange >>= $1; $$; drop index if exists geolite.blocks_ip4r_idx; truncate table geolite.blocks, geolite.location cascade; pgloader/test/copy-hex.load0000644000175000017500000000043713047375022016124 0ustar vagrantvagrantLOAD COPY FROM inline INTO postgresql:///pgloader?copyhex WITH truncate, delimiter '\t', null "--" BEFORE LOAD DO $$ drop table if exists copyhex; $$, $$ create table copyhex(id int, text varchar(4)); $$; 1 a 2 aa 3 \x1a 4 a\x1a 5 \N 6 --pgloader/test/errors.load0000644000175000017500000000266613047375022015712 0ustar vagrantvagrant/* * This test is ported from pgloader 2.x where it was defined as: * * [errors] * table = errors * format = text * filename = errors/errors.data * field_sep = | * trailing_sep = True * columns = a:1, b:3, c:2 * * * Note that we added ragged lines, empty lines, and lines with extra * columns. The last line opens a quoted value and reaches end-of-file * without closing it, too. */ LOAD CSV FROM inline (a, c, b, trailing) INTO postgresql:///pgloader?errors (a, b, c) WITH fields optionally enclosed by '"', fields escaped by double-quote, fields terminated by '|' SET client_encoding to 'latin1', work_mem to '12MB', standard_conforming_strings to 'on', search_path to 'err' -- test GUC settings in retry path BEFORE LOAD DO $$ drop schema if exists err cascade; $$, $$ create schema err; $$, $$ drop table if exists err.errors; $$, $$ create table err.errors ( a integer primary key, b date, c text ); $$; 0|nov. the 11th should go|2006-11-11| 1|12th of oct. should go|2006-10-12| 2|expected error, month 13|2006-13-11| 3|\ |2006-16-4| 4|month should be may, ok|2006-5-12| 5|another month 13, stress retry path|2006-13-10| 6|some null date to play with|| 7|and a ragged line| 8|and a line with extra columns|2014-01-23|hello|there| 9|and another line|2014-01-22| 10|"plop pgloader/test/Makefile0000644000175000017500000000545113120307421015156 0ustar vagrantvagrantTMPDIR ?= /tmp TESTS = $(wildcard *.load) OUT = $(TESTS:.load=.out) REMOTE = archive.load bossa-all.load bossa.load census-places.load dbf-zip.load LOCAL = $(filter-out $(REMOTE:.load=.out),$(OUT)) REGRESS= allcols.load \ csv-before-after.load \ csv-districts.load \ csv-parse-date.load \ csv-error.load \ csv-escape-mode.load \ csv-filename-pattern.load \ csv-header.load \ csv-json.load \ csv-keep-extra-blanks.load \ csv-missing-col.load \ csv-non-printable.load \ csv-nulls.load \ csv-temp.load \ csv-trim-extra-blanks.load \ csv.load \ copy.load \ copy-hex.load \ dbf.load \ errors.load \ fixed.load \ fields-with-periods.load \ ixf.load \ overflow.load \ partial.load \ serial.load \ udc.load \ xzero.load PGLOADER ?= ../build/bin/pgloader EXTRA_OPTS = ifneq (,$(findstring ccl,$(CL))) EXTRA_OPTS = --batch --heap-reserve 150g endif regress: clean-out $(addprefix regress/out/, $(REGRESS:.load=.out)) ; clean-out: rm -f regress/out/* local: prepare $(LOCAL) remote: prepare $(REMOTE:.load=.out) all: prepare $(OUT) prepare: bossa.sql sakila -dropdb -U postgres pgloader -dropdb -U postgres stocks -dropdb -U postgres ip4r -createdb -U postgres -O `whoami` pgloader -createdb -U postgres -O `whoami` stocks -createdb -U postgres -O `whoami` ip4r -psql -d pgloader -c 'create schema expected' -psql -U postgres -d pgloader -c 'create extension ip4r' -psql -U postgres -d ip4r -c 'create extension ip4r' -psql -d stocks -f bossa.sql errors.out: errors.load -$(PGLOADER) $< @echo nofile.out: nofile.load -$(PGLOADER) $< @echo csv-hstore.out: csv-hstore.load @echo skipping $@ # sakila needs preparing a MySQL database too $(TMPDIR)/sakila-db/sakila-schema.sql: data/sakila-db.zip rm -rf $(TMPDIR)/sakila-db unzip $< -d $(TMPDIR) sakila: $(TMPDIR)/sakila-db/sakila-schema.sql -dropdb -U postgres sakila -createdb -U postgres -O `whoami` sakila -echo "DROP DATABASE sakila" | mysql -u root echo "SOURCE $(TMPDIR)/sakila-db/sakila-schema.sql" | mysql -u root echo "SOURCE $(TMPDIR)/sakila-db/sakila-data.sql" | mysql -u root sakila.out: sakila sakila.load -$(PGLOADER) sakila.load @echo csv-districts-stdin.out: csv-districts-stdin.load cat data/2013_Gaz_113CDs_national.txt | $(PGLOADER) $^ # General case where we do NOT expect any error %.out: %.load $(PGLOADER) $< @echo # Regression tests regress/out/%.out: %.load #./regress.sh $(PGLOADER) $< $(PGLOADER) $(EXTRA_OPTS) --regress $< touch $@ pgloader/test/fields-with-periods.load0000644000175000017500000000066513047375022020255 0ustar vagrantvagrantLOAD FIXED FROM inline ( "CHARS.LETTERS" from 0 for 3, "CHARS.NUMBERS" from 3 for 3 ) INTO postgresql:///pgloader?fixed ( "CHARS.LETTERS", "CHARS.NUMBERS" ) WITH truncate BEFORE LOAD DO $$ drop table if exists fixed; $$, $$ create table fixed ( "CHARS.LETTERS" char(3), "CHARS.NUMBERS" char(3) ); $$; abc123 def456 ghi789 pgloader/test/csv.load0000644000175000017500000000256713047375022015171 0ustar vagrantvagrant/* * This test is ported from pgloader 2.x where it was defined as: * * [csv] * table = csv * format = csv * filename = csv/csv.data * field_size_limit = 512kB * field_sep = , * quotechar = " * columns = x, y, a, b, d:6, c:5 * only_cols = 3-6 * skip_head_lines = 1 * truncate = True * */ LOAD CSV FROM inline (x, y, a, b, c, "camelCase") INTO postgresql:///pgloader?csv (a, b, "camelCase", c) WITH truncate, skip header = 1, fields optionally enclosed by '"', fields escaped by double-quote, fields terminated by ',' SET client_encoding to 'latin1', work_mem to '12MB', standard_conforming_strings to 'on' BEFORE LOAD DO $$ drop table if exists csv; $$, $$ create table csv ( a bigint, b bigint, c char(2), "camelCase" text ); $$; Stupid useless header with a © sign "2.6.190.56","2.6.190.63","33996344","33996351","GB","United Kingdom" "3.0.0.0","4.17.135.31","50331648","68257567","US","United States" "4.17.135.32","4.17.135.63","68257568","68257599","CA","Canada" "4.17.135.64","4.17.142.255","68257600","68259583","US","United States" "4.17.143.0","4.17.143.15","68259584","68259599","CA","Canada" "4.17.143.16","4.18.32.71","68259600","68296775","US","United States" pgloader/test/overflow.load0000644000175000017500000000050613047375022016230 0ustar vagrantvagrantLOAD CSV FROM INLINE with encoding 'ascii' INTO postgresql:///pgloader?overflow WITH truncate, fields terminated by ',', fields not enclosed BEFORE LOAD DO $$ drop table if exists overflow; $$, $$ CREATE TABLE overflow (id int, f1 text not null) $$; 18446744073709551596,a 12, pgloader/test/data/0000755000175000017500000000000013047375022014434 5ustar vagrantvagrantpgloader/test/data/retry.lisp0000644000175000017500000000334213047375022016474 0ustar vagrantvagrant;;; Test cases for issue https://github.com/dimitri/pgloader/issues/22 ;;; ;;; #| CREATE TABLE `retry` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `content` text, PRIMARY KEY (`id`) ); |# (defpackage #:pgloader.test.retry (:use #:cl #:pgloader.params #:pgloader.mysql) (:export #:produce-data)) (in-package #:pgloader.test.retry) (defvar *inject-null-bytes* (coerce (loop for previous = 0 then (+ previous offset) for offset in '(15769 54 7 270 8752) collect (+ previous offset)) 'vector) "Line numbers in the batch where to inject erroneous data.") (defvar *string-with-null-byte* (concatenate 'string "Hello" (list #\Nul) "World!")) (defvar *random-string* (make-string (random 42) :initial-element #\a) "A random string.") (defvar *query* "INSERT INTO `~a`(`content`) VALUES ('~a')") (defun produce-data (&key (*myconn-host* *myconn-host*) (*myconn-port* *myconn-port*) (*myconn-user* *myconn-user*) (*myconn-pass* *myconn-pass*) (dbname "retry") (table-name "retry") (rows 150000)) "Produce a data set that looks like the one in issue #22." (with-mysql-connection (dbname) (let ((next-error-pos 0)) (loop for n from 1 to rows for str = (if (and (< next-error-pos (length *inject-null-bytes*)) (= n (aref *inject-null-bytes* next-error-pos))) (progn (incf next-error-pos) *string-with-null-byte*) *random-string*) do (pgloader.mysql::mysql-query (format nil *query* table-name str)))))) pgloader/test/data/exhausted.load0000644000175000017500000000121413047375022017265 0ustar vagrantvagrantLOAD DATABASE FROM mysql://root@localhost:3306/exhausted INTO postgresql:///exhausted WITH include drop, create tables, create indexes, reset sequences, truncate CAST type datetime to timestamptz drop default drop not null using zero-dates-to-null, type date drop not null drop default using zero-dates-to-null, type timestamp to timestamptz drop not null using zero-dates-to-null, -- now the default for tinyint(1) -- column bools.a to boolean drop typemod using tinyint-to-boolean, -- override char(1) to varchar(1), just use char(1) here. type char when (= precision 1) to char keep typemod; pgloader/test/data/nsitra.test1.ixf0000644000175000017500000002070013047375022017502 0ustar vagrantvagrant000051HIXF0002DB2 02.0020140713121449000090081900000 001604T008tab1.ixf 000 CMPC I00007 000436ADB2 02.00S20140713121449000000Y001 001 0000000020001 002147483647 NN000000872C008TEST1_ID NNY01R4960000000000 001000001 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000872C006INTCOL YNYNR4960000000000 001000005 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000872C014INTCAL_NOTNULL NNYNR4960000000000 001000011 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000872C009CHARCOL15 YNYNR452008190000000015001000015 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000872C017CHARCOL15_NOTNULL YNYNR452008190000000015001000032 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000872C012VARCHARCOL16 YNYNR448008190000000016001000049 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000872C020VARCHARCOL16_NOTNULL NNYNR448008190000000016001000069 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081D001 MMfoobar foobar bazbaz000084D001 MXfoobar abcdef bazghijkl000081D001 FOOBAR FOOBAR BAZBAZ000081D001 FOOBAR FOOBAR BAZBAZ000028ADB2 02.00E20140713121449pgloader/test/data/nsitra.test3.ixf0000644000175000017500000001413613047375022017512 0ustar vagrantvagrant000051HIXF0002DB2 02.0020140713121449000070081900000 001604T008tab3.ixf 000 CMPC I00005 000872C011SMALLINTCOL YNYNR5000000000000 001000001 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000872C009BIGINTCOL YNYNR4920000000000 001000005 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000872C010DECIMALCOL YNYNR484000000000000500001000015 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000872C007REALCOL YNYNR480000000000000004001000020 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000872C009DOUBLECOL YNYNR480000000000000008001000026 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043D001 [\^BK@000043D001 [\^BK@000043D001 [\^BK@000028ADB2 02.00E20140713121449pgloader/test/data/matching-1.csv0000644000175000017500000000001013047375022017070 0ustar vagrantvagrant1,"foo" pgloader/test/data/matching-2.csv0000644000175000017500000000001013047375022017071 0ustar vagrantvagrant2,"bar" pgloader/test/data/matching-3.csv0000644000175000017500000000001013047375022017072 0ustar vagrantvagrant3,"baz" pgloader/test/data/exhausted.lisp0000644000175000017500000000442413047375022017323 0ustar vagrantvagrant;;; Test cases for issue https://github.com/dimitri/pgloader/issues/16 ;;; ;;; Table already created as: #| CREATE TABLE IF NOT EXISTS `document` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `document_template_id` int(10) unsigned NOT NULL, `brand_id` int(10) unsigned DEFAULT NULL, `logo` char(1) NOT NULL DEFAULT '0', `footer` char(1) NOT NULL DEFAULT '0', `pages` char(1) NOT NULL DEFAULT '0', `content` longtext NOT NULL, `meta` text, `status` char(1) NOT NULL DEFAULT '1', `date_created` datetime NOT NULL, `user_id` varchar(128) NOT NULL, `region` varchar(32) DEFAULT NULL, `foreign_id` int(10) unsigned NOT NULL, `date_sent` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `region` (`region`,`foreign_id`) USING BTREE, KEY `document_template_id` (`document_template_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; |# (defpackage #:pgloader.test.exhausted (:use #:cl #:pgloader.params #:pgloader.mysql) (:export #:produce-data)) (in-package #:pgloader.test.exhausted) (defvar *string* (make-string 237563 :initial-element #\a) "A long string to reproduce heap exhaustion.") (defun produce-data (&key (*myconn-host* *myconn-host*) (*myconn-port* *myconn-port*) (*myconn-user* *myconn-user*) (*myconn-pass* *myconn-pass*) (dbname "exhausted") (rows 5000)) "Insert data to reproduce the test case." (with-mysql-connection (dbname) (loop repeat rows do (pgloader.mysql::mysql-query (format nil " INSERT INTO `document` (`document_template_id`, `brand_id`, `logo`, `footer`, `pages`, `content`, `meta`, `status`, `date_created`, `user_id`, `region`, `foreign_id`, `date_sent`) VALUES (20, 21, '0', '0', '0', '~a', 'a:2:{s:7:\"comment\";s:0:\"\";s:4:\"date\";s:10:\"1372975200\";}', '1', '2013-06-21 13:04:46', 'cjumeaux', 'dossier', 104027, '2013-06-21 13:04:46');" *string*))))) pgloader/test/data/nsitra.test2.ixf0000644000175000017500000001246713047375022017516 0ustar vagrantvagrant000051HIXF0002DB2 02.0020140713121449000060081900000 001604T008tab2.ixf 000 CMPC I00004 000872C006TS_DEF YYYNR392008190000000006001000001 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017CURRENT TIMESTAMP 0000000000000000872C014TS_NOTNULL_DEF NYYNR392008190000000006001000029 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017CURRENT TIMESTAMP 0000000000000000872C010TS_NOTNULL NNYNR392008190000000006001000055 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000872C002TS YNYNR392008190000000006001000081 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000116D001 2014-07-13-12.08.59.5242472014-07-13-12.08.59.5242472014-07-13-12.08.59.5242472014-07-13-12.08.59.524247000090D001 2014-07-13-12.08.59.5242472014-07-13-12.08.59.5281752014-07-13-12.08.59.528175000028ADB2 02.00E20140713121449pgloader/test/data/retry.load0000644000175000017500000000025413047375022016443 0ustar vagrantvagrantLOAD DATABASE FROM mysql://root@localhost:3306/retry INTO postgresql:///retry WITH include drop, create tables, create indexes, reset sequences, truncate; pgloader/test/data/track.copy0000644000175000017500000133542313047375022016447 0ustar vagrantvagrant1 For Those About To Rock (We Salute You) For Those About To Rock We Salute You MPEG audio file Rock Angus Young, Malcolm Young, Brian Johnson 343719 11170334 0.99 2 Balls to the Wall Balls to the Wall Protected AAC audio file Rock \N 342562 5510424 0.99 3 Fast As a Shark Restless and Wild Protected AAC audio file Rock F. Baltes, S. Kaufman, U. Dirkscneider & W. Hoffman 230619 3990994 0.99 4 Restless and Wild Restless and Wild Protected AAC audio file Rock F. Baltes, R.A. Smith-Diesel, S. Kaufman, U. Dirkscneider & W. Hoffman 252051 4331779 0.99 5 Princess of the Dawn Restless and Wild Protected AAC audio file Rock Deaffy & R.A. Smith-Diesel 375418 6290521 0.99 6 Put The Finger On You For Those About To Rock We Salute You MPEG audio file Rock Angus Young, Malcolm Young, Brian Johnson 205662 6713451 0.99 7 Let's Get It Up For Those About To Rock We Salute You MPEG audio file Rock Angus Young, Malcolm Young, Brian Johnson 233926 7636561 0.99 8 Inject The Venom For Those About To Rock We Salute You MPEG audio file Rock Angus Young, Malcolm Young, Brian Johnson 210834 6852860 0.99 9 Snowballed For Those About To Rock We Salute You MPEG audio file Rock Angus Young, Malcolm Young, Brian Johnson 203102 6599424 0.99 10 Evil Walks For Those About To Rock We Salute You MPEG audio file Rock Angus Young, Malcolm Young, Brian Johnson 263497 8611245 0.99 11 C.O.D. For Those About To Rock We Salute You MPEG audio file Rock Angus Young, Malcolm Young, Brian Johnson 199836 6566314 0.99 12 Breaking The Rules For Those About To Rock We Salute You MPEG audio file Rock Angus Young, Malcolm Young, Brian Johnson 263288 8596840 0.99 13 Night Of The Long Knives For Those About To Rock We Salute You MPEG audio file Rock Angus Young, Malcolm Young, Brian Johnson 205688 6706347 0.99 14 Spellbound For Those About To Rock We Salute You MPEG audio file Rock Angus Young, Malcolm Young, Brian Johnson 270863 8817038 0.99 15 Go Down Let There Be Rock MPEG audio file Rock AC/DC 331180 10847611 0.99 16 Dog Eat Dog Let There Be Rock MPEG audio file Rock AC/DC 215196 7032162 0.99 17 Let There Be Rock Let There Be Rock MPEG audio file Rock AC/DC 366654 12021261 0.99 18 Bad Boy Boogie Let There Be Rock MPEG audio file Rock AC/DC 267728 8776140 0.99 19 Problem Child Let There Be Rock MPEG audio file Rock AC/DC 325041 10617116 0.99 20 Overdose Let There Be Rock MPEG audio file Rock AC/DC 369319 12066294 0.99 21 Hell Ain't A Bad Place To Be Let There Be Rock MPEG audio file Rock AC/DC 254380 8331286 0.99 22 Whole Lotta Rosie Let There Be Rock MPEG audio file Rock AC/DC 323761 10547154 0.99 23 Walk On Water Big Ones MPEG audio file Rock Steven Tyler, Joe Perry, Jack Blades, Tommy Shaw 295680 9719579 0.99 24 Love In An Elevator Big Ones MPEG audio file Rock Steven Tyler, Joe Perry 321828 10552051 0.99 25 Rag Doll Big Ones MPEG audio file Rock Steven Tyler, Joe Perry, Jim Vallance, Holly Knight 264698 8675345 0.99 26 What It Takes Big Ones MPEG audio file Rock Steven Tyler, Joe Perry, Desmond Child 310622 10144730 0.99 27 Dude (Looks Like A Lady) Big Ones MPEG audio file Rock Steven Tyler, Joe Perry, Desmond Child 264855 8679940 0.99 28 Janie's Got A Gun Big Ones MPEG audio file Rock Steven Tyler, Tom Hamilton 330736 10869391 0.99 29 Cryin' Big Ones MPEG audio file Rock Steven Tyler, Joe Perry, Taylor Rhodes 309263 10056995 0.99 30 Amazing Big Ones MPEG audio file Rock Steven Tyler, Richie Supa 356519 11616195 0.99 31 Blind Man Big Ones MPEG audio file Rock Steven Tyler, Joe Perry, Taylor Rhodes 240718 7877453 0.99 32 Deuces Are Wild Big Ones MPEG audio file Rock Steven Tyler, Jim Vallance 215875 7074167 0.99 33 The Other Side Big Ones MPEG audio file Rock Steven Tyler, Jim Vallance 244375 7983270 0.99 34 Crazy Big Ones MPEG audio file Rock Steven Tyler, Joe Perry, Desmond Child 316656 10402398 0.99 35 Eat The Rich Big Ones MPEG audio file Rock Steven Tyler, Joe Perry, Jim Vallance 251036 8262039 0.99 36 Angel Big Ones MPEG audio file Rock Steven Tyler, Desmond Child 307617 9989331 0.99 37 Livin' On The Edge Big Ones MPEG audio file Rock Steven Tyler, Joe Perry, Mark Hudson 381231 12374569 0.99 38 All I Really Want Jagged Little Pill MPEG audio file Rock Alanis Morissette & Glenn Ballard 284891 9375567 0.99 39 You Oughta Know Jagged Little Pill MPEG audio file Rock Alanis Morissette & Glenn Ballard 249234 8196916 0.99 40 Perfect Jagged Little Pill MPEG audio file Rock Alanis Morissette & Glenn Ballard 188133 6145404 0.99 41 Hand In My Pocket Jagged Little Pill MPEG audio file Rock Alanis Morissette & Glenn Ballard 221570 7224246 0.99 42 Right Through You Jagged Little Pill MPEG audio file Rock Alanis Morissette & Glenn Ballard 176117 5793082 0.99 43 Forgiven Jagged Little Pill MPEG audio file Rock Alanis Morissette & Glenn Ballard 300355 9753256 0.99 44 You Learn Jagged Little Pill MPEG audio file Rock Alanis Morissette & Glenn Ballard 239699 7824837 0.99 45 Head Over Feet Jagged Little Pill MPEG audio file Rock Alanis Morissette & Glenn Ballard 267493 8758008 0.99 46 Mary Jane Jagged Little Pill MPEG audio file Rock Alanis Morissette & Glenn Ballard 280607 9163588 0.99 47 Ironic Jagged Little Pill MPEG audio file Rock Alanis Morissette & Glenn Ballard 229825 7598866 0.99 48 Not The Doctor Jagged Little Pill MPEG audio file Rock Alanis Morissette & Glenn Ballard 227631 7604601 0.99 49 Wake Up Jagged Little Pill MPEG audio file Rock Alanis Morissette & Glenn Ballard 293485 9703359 0.99 50 You Oughta Know (Alternate) Jagged Little Pill MPEG audio file Rock Alanis Morissette & Glenn Ballard 491885 16008629 0.99 51 We Die Young Facelift MPEG audio file Rock Jerry Cantrell 152084 4925362 0.99 52 Man In The Box Facelift MPEG audio file Rock Jerry Cantrell, Layne Staley 286641 9310272 0.99 53 Sea Of Sorrow Facelift MPEG audio file Rock Jerry Cantrell 349831 11316328 0.99 54 Bleed The Freak Facelift MPEG audio file Rock Jerry Cantrell 241946 7847716 0.99 55 I Can't Remember Facelift MPEG audio file Rock Jerry Cantrell, Layne Staley 222955 7302550 0.99 56 Love, Hate, Love Facelift MPEG audio file Rock Jerry Cantrell, Layne Staley 387134 12575396 0.99 57 It Ain't Like That Facelift MPEG audio file Rock Jerry Cantrell, Michael Starr, Sean Kinney 277577 8993793 0.99 58 Sunshine Facelift MPEG audio file Rock Jerry Cantrell 284969 9216057 0.99 59 Put You Down Facelift MPEG audio file Rock Jerry Cantrell 196231 6420530 0.99 60 Confusion Facelift MPEG audio file Rock Jerry Cantrell, Michael Starr, Layne Staley 344163 11183647 0.99 61 I Know Somethin (Bout You) Facelift MPEG audio file Rock Jerry Cantrell 261955 8497788 0.99 62 Real Thing Facelift MPEG audio file Rock Jerry Cantrell, Layne Staley 243879 7937731 0.99 63 Desafinado Warner 25 Anos MPEG audio file Jazz \N 185338 5990473 0.99 64 Garota De Ipanema Warner 25 Anos MPEG audio file Jazz \N 285048 9348428 0.99 65 Samba De Uma Nota Só (One Note Samba) Warner 25 Anos MPEG audio file Jazz \N 137273 4535401 0.99 66 Por Causa De Você Warner 25 Anos MPEG audio file Jazz \N 169900 5536496 0.99 67 Ligia Warner 25 Anos MPEG audio file Jazz \N 251977 8226934 0.99 68 Fotografia Warner 25 Anos MPEG audio file Jazz \N 129227 4198774 0.99 69 Dindi (Dindi) Warner 25 Anos MPEG audio file Jazz \N 253178 8149148 0.99 70 Se Todos Fossem Iguais A Você (Instrumental) Warner 25 Anos MPEG audio file Jazz \N 134948 4393377 0.99 71 Falando De Amor Warner 25 Anos MPEG audio file Jazz \N 219663 7121735 0.99 72 Angela Warner 25 Anos MPEG audio file Jazz \N 169508 5574957 0.99 73 Corcovado (Quiet Nights Of Quiet Stars) Warner 25 Anos MPEG audio file Jazz \N 205662 6687994 0.99 74 Outra Vez Warner 25 Anos MPEG audio file Jazz \N 126511 4110053 0.99 75 O Boto (Bôto) Warner 25 Anos MPEG audio file Jazz \N 366837 12089673 0.99 76 Canta, Canta Mais Warner 25 Anos MPEG audio file Jazz \N 271856 8719426 0.99 77 Enter Sandman Plays Metallica By Four Cellos MPEG audio file Metal Apocalyptica 221701 7286305 0.99 78 Master Of Puppets Plays Metallica By Four Cellos MPEG audio file Metal Apocalyptica 436453 14375310 0.99 79 Harvester Of Sorrow Plays Metallica By Four Cellos MPEG audio file Metal Apocalyptica 374543 12372536 0.99 80 The Unforgiven Plays Metallica By Four Cellos MPEG audio file Metal Apocalyptica 322925 10422447 0.99 81 Sad But True Plays Metallica By Four Cellos MPEG audio file Metal Apocalyptica 288208 9405526 0.99 82 Creeping Death Plays Metallica By Four Cellos MPEG audio file Metal Apocalyptica 308035 10110980 0.99 83 Wherever I May Roam Plays Metallica By Four Cellos MPEG audio file Metal Apocalyptica 369345 12033110 0.99 84 Welcome Home (Sanitarium) Plays Metallica By Four Cellos MPEG audio file Metal Apocalyptica 350197 11406431 0.99 85 Cochise Audioslave MPEG audio file Rock Audioslave/Chris Cornell 222380 5339931 0.99 86 Show Me How to Live Audioslave MPEG audio file Rock Audioslave/Chris Cornell 277890 6672176 0.99 87 Gasoline Audioslave MPEG audio file Rock Audioslave/Chris Cornell 279457 6709793 0.99 88 What You Are Audioslave MPEG audio file Rock Audioslave/Chris Cornell 249391 5988186 0.99 89 Like a Stone Audioslave MPEG audio file Rock Audioslave/Chris Cornell 294034 7059624 0.99 90 Set It Off Audioslave MPEG audio file Rock Audioslave/Chris Cornell 263262 6321091 0.99 91 Shadow on the Sun Audioslave MPEG audio file Rock Audioslave/Chris Cornell 343457 8245793 0.99 92 I am the Highway Audioslave MPEG audio file Rock Audioslave/Chris Cornell 334942 8041411 0.99 93 Exploder Audioslave MPEG audio file Rock Audioslave/Chris Cornell 206053 4948095 0.99 94 Hypnotize Audioslave MPEG audio file Rock Audioslave/Chris Cornell 206628 4961887 0.99 95 Bring'em Back Alive Audioslave MPEG audio file Rock Audioslave/Chris Cornell 329534 7911634 0.99 96 Light My Way Audioslave MPEG audio file Rock Audioslave/Chris Cornell 303595 7289084 0.99 97 Getaway Car Audioslave MPEG audio file Rock Audioslave/Chris Cornell 299598 7193162 0.99 98 The Last Remaining Light Audioslave MPEG audio file Rock Audioslave/Chris Cornell 317492 7622615 0.99 99 Your Time Has Come Out Of Exile MPEG audio file Alternative & Punk Cornell, Commerford, Morello, Wilk 255529 8273592 0.99 100 Out Of Exile Out Of Exile MPEG audio file Alternative & Punk Cornell, Commerford, Morello, Wilk 291291 9506571 0.99 101 Be Yourself Out Of Exile MPEG audio file Alternative & Punk Cornell, Commerford, Morello, Wilk 279484 9106160 0.99 102 Doesn't Remind Me Out Of Exile MPEG audio file Alternative & Punk Cornell, Commerford, Morello, Wilk 255869 8357387 0.99 103 Drown Me Slowly Out Of Exile MPEG audio file Alternative & Punk Cornell, Commerford, Morello, Wilk 233691 7609178 0.99 104 Heaven's Dead Out Of Exile MPEG audio file Alternative & Punk Cornell, Commerford, Morello, Wilk 276688 9006158 0.99 105 The Worm Out Of Exile MPEG audio file Alternative & Punk Cornell, Commerford, Morello, Wilk 237714 7710800 0.99 106 Man Or Animal Out Of Exile MPEG audio file Alternative & Punk Cornell, Commerford, Morello, Wilk 233195 7542942 0.99 107 Yesterday To Tomorrow Out Of Exile MPEG audio file Alternative & Punk Cornell, Commerford, Morello, Wilk 273763 8944205 0.99 108 Dandelion Out Of Exile MPEG audio file Alternative & Punk Cornell, Commerford, Morello, Wilk 278125 9003592 0.99 109 #1 Zero Out Of Exile MPEG audio file Alternative & Punk Cornell, Commerford, Morello, Wilk 299102 9731988 0.99 110 The Curse Out Of Exile MPEG audio file Alternative & Punk Cornell, Commerford, Morello, Wilk 309786 10029406 0.99 111 Money BackBeat Soundtrack MPEG audio file Rock And Roll Berry Gordy, Jr./Janie Bradford 147591 2365897 0.99 112 Long Tall Sally BackBeat Soundtrack MPEG audio file Rock And Roll Enotris Johnson/Little Richard/Robert "Bumps" Blackwell 106396 1707084 0.99 113 Bad Boy BackBeat Soundtrack MPEG audio file Rock And Roll Larry Williams 116088 1862126 0.99 114 Twist And Shout BackBeat Soundtrack MPEG audio file Rock And Roll Bert Russell/Phil Medley 161123 2582553 0.99 115 Please Mr. Postman BackBeat Soundtrack MPEG audio file Rock And Roll Brian Holland/Freddie Gorman/Georgia Dobbins/Robert Bateman/William Garrett 137639 2206986 0.99 116 C'Mon Everybody BackBeat Soundtrack MPEG audio file Rock And Roll Eddie Cochran/Jerry Capehart 140199 2247846 0.99 117 Rock 'N' Roll Music BackBeat Soundtrack MPEG audio file Rock And Roll Chuck Berry 141923 2276788 0.99 118 Slow Down BackBeat Soundtrack MPEG audio file Rock And Roll Larry Williams 163265 2616981 0.99 119 Roadrunner BackBeat Soundtrack MPEG audio file Rock And Roll Bo Diddley 143595 2301989 0.99 120 Carol BackBeat Soundtrack MPEG audio file Rock And Roll Chuck Berry 143830 2306019 0.99 121 Good Golly Miss Molly BackBeat Soundtrack MPEG audio file Rock And Roll Little Richard 106266 1704918 0.99 122 20 Flight Rock BackBeat Soundtrack MPEG audio file Rock And Roll Ned Fairchild 107807 1299960 0.99 123 Quadrant The Best Of Billy Cobham MPEG audio file Jazz Billy Cobham 261851 8538199 0.99 124 Snoopy's search-Red baron The Best Of Billy Cobham MPEG audio file Jazz Billy Cobham 456071 15075616 0.99 125 Spanish moss-"A sound portrait"-Spanish moss The Best Of Billy Cobham MPEG audio file Jazz Billy Cobham 248084 8217867 0.99 126 Moon germs The Best Of Billy Cobham MPEG audio file Jazz Billy Cobham 294060 9714812 0.99 127 Stratus The Best Of Billy Cobham MPEG audio file Jazz Billy Cobham 582086 19115680 0.99 128 The pleasant pheasant The Best Of Billy Cobham MPEG audio file Jazz Billy Cobham 318066 10630578 0.99 129 Solo-Panhandler The Best Of Billy Cobham MPEG audio file Jazz Billy Cobham 246151 8230661 0.99 130 Do what cha wanna The Best Of Billy Cobham MPEG audio file Jazz George Duke 274155 9018565 0.99 131 Intro/ Low Down Alcohol Fueled Brewtality Live! [Disc 1] MPEG audio file Metal \N 323683 10642901 0.99 132 13 Years Of Grief Alcohol Fueled Brewtality Live! [Disc 1] MPEG audio file Metal \N 246987 8137421 0.99 133 Stronger Than Death Alcohol Fueled Brewtality Live! [Disc 1] MPEG audio file Metal \N 300747 9869647 0.99 134 All For You Alcohol Fueled Brewtality Live! [Disc 1] MPEG audio file Metal \N 235833 7726948 0.99 135 Super Terrorizer Alcohol Fueled Brewtality Live! [Disc 1] MPEG audio file Metal \N 319373 10513905 0.99 136 Phoney Smile Fake Hellos Alcohol Fueled Brewtality Live! [Disc 1] MPEG audio file Metal \N 273606 9011701 0.99 137 Lost My Better Half Alcohol Fueled Brewtality Live! [Disc 1] MPEG audio file Metal \N 284081 9355309 0.99 138 Bored To Tears Alcohol Fueled Brewtality Live! [Disc 1] MPEG audio file Metal \N 247327 8130090 0.99 139 A.N.D.R.O.T.A.Z. Alcohol Fueled Brewtality Live! [Disc 1] MPEG audio file Metal \N 266266 8574746 0.99 140 Born To Booze Alcohol Fueled Brewtality Live! [Disc 1] MPEG audio file Metal \N 282122 9257358 0.99 141 World Of Trouble Alcohol Fueled Brewtality Live! [Disc 1] MPEG audio file Metal \N 359157 11820932 0.99 142 No More Tears Alcohol Fueled Brewtality Live! [Disc 1] MPEG audio file Metal \N 555075 18041629 0.99 143 The Begining... At Last Alcohol Fueled Brewtality Live! [Disc 1] MPEG audio file Metal \N 365662 11965109 0.99 144 Heart Of Gold Alcohol Fueled Brewtality Live! [Disc 2] MPEG audio file Metal \N 194873 6417460 0.99 145 Snowblind Alcohol Fueled Brewtality Live! [Disc 2] MPEG audio file Metal \N 420022 13842549 0.99 146 Like A Bird Alcohol Fueled Brewtality Live! [Disc 2] MPEG audio file Metal \N 276532 9115657 0.99 147 Blood In The Wall Alcohol Fueled Brewtality Live! [Disc 2] MPEG audio file Metal \N 284368 9359475 0.99 148 The Beginning...At Last Alcohol Fueled Brewtality Live! [Disc 2] MPEG audio file Metal \N 271960 8975814 0.99 149 Black Sabbath Black Sabbath MPEG audio file Metal \N 382066 12440200 0.99 150 The Wizard Black Sabbath MPEG audio file Metal \N 264829 8646737 0.99 151 Behind The Wall Of Sleep Black Sabbath MPEG audio file Metal \N 217573 7169049 0.99 152 N.I.B. Black Sabbath MPEG audio file Metal \N 368770 12029390 0.99 153 Evil Woman Black Sabbath MPEG audio file Metal \N 204930 6655170 0.99 154 Sleeping Village Black Sabbath MPEG audio file Metal \N 644571 21128525 0.99 155 Warning Black Sabbath MPEG audio file Metal \N 212062 6893363 0.99 156 Wheels Of Confusion / The Straightener Black Sabbath Vol. 4 (Remaster) MPEG audio file Metal Tony Iommi, Bill Ward, Geezer Butler, Ozzy Osbourne 494524 16065830 0.99 157 Tomorrow's Dream Black Sabbath Vol. 4 (Remaster) MPEG audio file Metal Tony Iommi, Bill Ward, Geezer Butler, Ozzy Osbourne 192496 6252071 0.99 158 Changes Black Sabbath Vol. 4 (Remaster) MPEG audio file Metal Tony Iommi, Bill Ward, Geezer Butler, Ozzy Osbourne 286275 9175517 0.99 159 FX Black Sabbath Vol. 4 (Remaster) MPEG audio file Metal Tony Iommi, Bill Ward, Geezer Butler, Ozzy Osbourne 103157 3331776 0.99 160 Supernaut Black Sabbath Vol. 4 (Remaster) MPEG audio file Metal Tony Iommi, Bill Ward, Geezer Butler, Ozzy Osbourne 285779 9245971 0.99 161 Snowblind Black Sabbath Vol. 4 (Remaster) MPEG audio file Metal Tony Iommi, Bill Ward, Geezer Butler, Ozzy Osbourne 331676 10813386 0.99 162 Cornucopia Black Sabbath Vol. 4 (Remaster) MPEG audio file Metal Tony Iommi, Bill Ward, Geezer Butler, Ozzy Osbourne 234814 7653880 0.99 163 Laguna Sunrise Black Sabbath Vol. 4 (Remaster) MPEG audio file Metal Tony Iommi, Bill Ward, Geezer Butler, Ozzy Osbourne 173087 5671374 0.99 164 St. Vitus Dance Black Sabbath Vol. 4 (Remaster) MPEG audio file Metal Tony Iommi, Bill Ward, Geezer Butler, Ozzy Osbourne 149655 4884969 0.99 165 Under The Sun/Every Day Comes and Goes Black Sabbath Vol. 4 (Remaster) MPEG audio file Metal Tony Iommi, Bill Ward, Geezer Butler, Ozzy Osbourne 350458 11360486 0.99 166 Smoked Pork Body Count MPEG audio file Alternative & Punk \N 47333 1549074 0.99 167 Body Count's In The House Body Count MPEG audio file Alternative & Punk \N 204251 6715413 0.99 168 Now Sports Body Count MPEG audio file Alternative & Punk \N 4884 161266 0.99 169 Body Count Body Count MPEG audio file Alternative & Punk \N 317936 10489139 0.99 170 A Statistic Body Count MPEG audio file Alternative & Punk \N 6373 211997 0.99 171 Bowels Of The Devil Body Count MPEG audio file Alternative & Punk \N 223216 7324125 0.99 172 The Real Problem Body Count MPEG audio file Alternative & Punk \N 11650 387360 0.99 173 KKK Bitch Body Count MPEG audio file Alternative & Punk \N 173008 5709631 0.99 174 D Note Body Count MPEG audio file Alternative & Punk \N 95738 3067064 0.99 175 Voodoo Body Count MPEG audio file Alternative & Punk \N 300721 9875962 0.99 176 The Winner Loses Body Count MPEG audio file Alternative & Punk \N 392254 12843821 0.99 177 There Goes The Neighborhood Body Count MPEG audio file Alternative & Punk \N 350171 11443471 0.99 178 Oprah Body Count MPEG audio file Alternative & Punk \N 6635 224313 0.99 179 Evil Dick Body Count MPEG audio file Alternative & Punk \N 239020 7828873 0.99 180 Body Count Anthem Body Count MPEG audio file Alternative & Punk \N 166426 5463690 0.99 181 Momma's Gotta Die Tonight Body Count MPEG audio file Alternative & Punk \N 371539 12122946 0.99 182 Freedom Of Speech Body Count MPEG audio file Alternative & Punk \N 281234 9337917 0.99 183 King In Crimson Chemical Wedding MPEG audio file Metal Roy Z 283167 9218499 0.99 184 Chemical Wedding Chemical Wedding MPEG audio file Metal Roy Z 246177 8022764 0.99 185 The Tower Chemical Wedding MPEG audio file Metal Roy Z 285257 9435693 0.99 186 Killing Floor Chemical Wedding MPEG audio file Metal Adrian Smith 269557 8854240 0.99 187 Book Of Thel Chemical Wedding MPEG audio file Metal Eddie Casillas/Roy Z 494393 16034404 0.99 188 Gates Of Urizen Chemical Wedding MPEG audio file Metal Roy Z 265351 8627004 0.99 189 Jerusalem Chemical Wedding MPEG audio file Metal Roy Z 402390 13194463 0.99 190 Trupets Of Jericho Chemical Wedding MPEG audio file Metal Roy Z 359131 11820908 0.99 191 Machine Men Chemical Wedding MPEG audio file Metal Adrian Smith 341655 11138147 0.99 192 The Alchemist Chemical Wedding MPEG audio file Metal Roy Z 509413 16545657 0.99 193 Realword Chemical Wedding MPEG audio file Metal Roy Z 237531 7802095 0.99 194 First Time I Met The Blues The Best Of Buddy Guy - The Millenium Collection MPEG audio file Blues Eurreal Montgomery 140434 4604995 0.99 195 Let Me Love You Baby The Best Of Buddy Guy - The Millenium Collection MPEG audio file Blues Willie Dixon 175386 5716994 0.99 196 Stone Crazy The Best Of Buddy Guy - The Millenium Collection MPEG audio file Blues Buddy Guy 433397 14184984 0.99 197 Pretty Baby The Best Of Buddy Guy - The Millenium Collection MPEG audio file Blues Willie Dixon 237662 7848282 0.99 198 When My Left Eye Jumps The Best Of Buddy Guy - The Millenium Collection MPEG audio file Blues Al Perkins/Willie Dixon 235311 7685363 0.99 199 Leave My Girl Alone The Best Of Buddy Guy - The Millenium Collection MPEG audio file Blues Buddy Guy 204721 6859518 0.99 200 She Suits Me To A Tee The Best Of Buddy Guy - The Millenium Collection MPEG audio file Blues Buddy Guy 136803 4456321 0.99 201 Keep It To Myself (Aka Keep It To Yourself) The Best Of Buddy Guy - The Millenium Collection MPEG audio file Blues Sonny Boy Williamson [I] 166060 5487056 0.99 202 My Time After Awhile The Best Of Buddy Guy - The Millenium Collection MPEG audio file Blues Robert Geddins/Ron Badger/Sheldon Feinberg 182491 6022698 0.99 203 Too Many Ways (Alternate) The Best Of Buddy Guy - The Millenium Collection MPEG audio file Blues Willie Dixon 135053 4459946 0.99 204 Talkin' 'Bout Women Obviously The Best Of Buddy Guy - The Millenium Collection MPEG audio file Blues Amos Blakemore/Buddy Guy 589531 19161377 0.99 205 Jorge Da Capadócia Prenda Minha MPEG audio file Latin Jorge Ben 177397 5842196 0.99 206 Prenda Minha Prenda Minha MPEG audio file Latin Tradicional 99369 3225364 0.99 207 Meditação Prenda Minha MPEG audio file Latin Tom Jobim - Newton Mendoça 148793 4865597 0.99 208 Terra Prenda Minha MPEG audio file Latin Caetano Veloso 482429 15889054 0.99 209 Eclipse Oculto Prenda Minha MPEG audio file Latin Caetano Veloso 221936 7382703 0.99 210 Texto "Verdade Tropical" Prenda Minha MPEG audio file Latin Caetano Veloso 84088 2752161 0.99 211 Bem Devagar Prenda Minha MPEG audio file Latin Gilberto Gil 133172 4333651 0.99 212 Drão Prenda Minha MPEG audio file Latin Gilberto Gil 156264 5065932 0.99 213 Saudosismo Prenda Minha MPEG audio file Latin Caetano Veloso 144326 4726981 0.99 214 Carolina Prenda Minha MPEG audio file Latin Chico Buarque 181812 5924159 0.99 215 Sozinho Prenda Minha MPEG audio file Latin Peninha 190589 6253200 0.99 216 Esse Cara Prenda Minha MPEG audio file Latin Caetano Veloso 223111 7217126 0.99 217 Mel Prenda Minha MPEG audio file Latin Caetano Veloso - Waly Salomão 294765 9854062 0.99 218 Linha Do Equador Prenda Minha MPEG audio file Latin Caetano Veloso - Djavan 299337 10003747 0.99 219 Odara Prenda Minha MPEG audio file Latin Caetano Veloso 141270 4704104 0.99 220 A Luz De Tieta Prenda Minha MPEG audio file Latin Caetano Veloso 251742 8507446 0.99 221 Atrás Da Verd-E-Rosa Só Não Vai Quem Já Morreu Prenda Minha MPEG audio file Latin David Corrêa - Paulinho Carvalho - Carlos Sena - Bira do Ponto 307252 10364247 0.99 222 Vida Boa Prenda Minha MPEG audio file Latin Fausto Nilo - Armandinho 281730 9411272 0.99 223 Sozinho (Hitmakers Classic Mix) Sozinho Remix Ao Vivo MPEG audio file Latin \N 436636 14462072 0.99 224 Sozinho (Hitmakers Classic Radio Edit) Sozinho Remix Ao Vivo MPEG audio file Latin \N 195004 6455134 0.99 225 Sozinho (Caêdrum 'n' Bass) Sozinho Remix Ao Vivo MPEG audio file Latin \N 328071 10975007 0.99 226 Carolina Minha Historia MPEG audio file Latin \N 163056 5375395 0.99 227 Essa Moça Ta Diferente Minha Historia MPEG audio file Latin \N 167235 5568574 0.99 228 Vai Passar Minha Historia MPEG audio file Latin \N 369763 12359161 0.99 229 Samba De Orly Minha Historia MPEG audio file Latin \N 162429 5431854 0.99 230 Bye, Bye Brasil Minha Historia MPEG audio file Latin \N 283402 9499590 0.99 231 Atras Da Porta Minha Historia MPEG audio file Latin \N 189675 6132843 0.99 232 Tatuagem Minha Historia MPEG audio file Latin \N 172120 5645703 0.99 233 O Que Será (À Flor Da Terra) Minha Historia MPEG audio file Latin \N 167288 5574848 0.99 234 Morena De Angola Minha Historia MPEG audio file Latin \N 186801 6373932 0.99 235 Apesar De Você Minha Historia MPEG audio file Latin \N 234501 7886937 0.99 236 A Banda Minha Historia MPEG audio file Latin \N 132493 4349539 0.99 237 Minha Historia Minha Historia MPEG audio file Latin \N 182256 6029673 0.99 238 Com Açúcar E Com Afeto Minha Historia MPEG audio file Latin \N 175386 5846442 0.99 239 Brejo Da Cruz Minha Historia MPEG audio file Latin \N 214099 7270749 0.99 240 Meu Caro Amigo Minha Historia MPEG audio file Latin \N 260257 8778172 0.99 241 Geni E O Zepelim Minha Historia MPEG audio file Latin \N 317570 10342226 0.99 242 Trocando Em Miúdos Minha Historia MPEG audio file Latin \N 169717 5461468 0.99 243 Vai Trabalhar Vagabundo Minha Historia MPEG audio file Latin \N 139154 4693941 0.99 244 Gota D'água Minha Historia MPEG audio file Latin \N 153208 5074189 0.99 245 Construção / Deus Lhe Pague Minha Historia MPEG audio file Latin \N 383059 12675305 0.99 246 Mateus Enter Afrociberdelia MPEG audio file Latin Chico Science 33149 1103013 0.99 247 O Cidadão Do Mundo Afrociberdelia MPEG audio file Latin Chico Science 200933 6724966 0.99 248 Etnia Afrociberdelia MPEG audio file Latin Chico Science 152555 5061413 0.99 249 Quilombo Groove [Instrumental] Afrociberdelia MPEG audio file Latin Chico Science 151823 5042447 0.99 250 Macô Afrociberdelia MPEG audio file Latin Chico Science 249600 8253934 0.99 251 Um Passeio No Mundo Livre Afrociberdelia MPEG audio file Latin Chico Science 240091 7984291 0.99 252 Samba Do Lado Afrociberdelia MPEG audio file Latin Chico Science 227317 7541688 0.99 253 Maracatu Atômico Afrociberdelia MPEG audio file Latin Chico Science 284264 9670057 0.99 254 O Encontro De Isaac Asimov Com Santos Dumont No Céu Afrociberdelia MPEG audio file Latin Chico Science 99108 3240816 0.99 255 Corpo De Lama Afrociberdelia MPEG audio file Latin Chico Science 232672 7714954 0.99 256 Sobremesa Afrociberdelia MPEG audio file Latin Chico Science 240091 7960868 0.99 257 Manguetown Afrociberdelia MPEG audio file Latin Chico Science 194560 6475159 0.99 258 Um Satélite Na Cabeça Afrociberdelia MPEG audio file Latin Chico Science 126615 4272821 0.99 259 Baião Ambiental [Instrumental] Afrociberdelia MPEG audio file Latin Chico Science 152659 5198539 0.99 260 Sangue De Bairro Afrociberdelia MPEG audio file Latin Chico Science 132231 4415557 0.99 261 Enquanto O Mundo Explode Afrociberdelia MPEG audio file Latin Chico Science 88764 2968650 0.99 262 Interlude Zumbi Afrociberdelia MPEG audio file Latin Chico Science 71627 2408550 0.99 263 Criança De Domingo Afrociberdelia MPEG audio file Latin Chico Science 208222 6984813 0.99 264 Amor De Muito Afrociberdelia MPEG audio file Latin Chico Science 175333 5881293 0.99 265 Samidarish [Instrumental] Afrociberdelia MPEG audio file Latin Chico Science 272431 8911641 0.99 266 Maracatu Atômico [Atomic Version] Afrociberdelia MPEG audio file Latin Chico Science 273084 9019677 0.99 267 Maracatu Atômico [Ragga Mix] Afrociberdelia MPEG audio file Latin Chico Science 210155 6986421 0.99 268 Maracatu Atômico [Trip Hop] Afrociberdelia MPEG audio file Latin Chico Science 221492 7380787 0.99 269 Banditismo Por Uma Questa Da Lama Ao Caos MPEG audio file Latin \N 307095 10251097 0.99 270 Banditismo Por Uma Questa Da Lama Ao Caos MPEG audio file Latin \N 243644 8147224 0.99 271 Rios Pontes & Overdrives Da Lama Ao Caos MPEG audio file Latin \N 286720 9659152 0.99 272 Cidade Da Lama Ao Caos MPEG audio file Latin \N 216346 7241817 0.99 273 Praiera Da Lama Ao Caos MPEG audio file Latin \N 183640 6172781 0.99 274 Samba Makossa Da Lama Ao Caos MPEG audio file Latin \N 271856 9095410 0.99 275 Da Lama Ao Caos Da Lama Ao Caos MPEG audio file Latin \N 251559 8378065 0.99 276 Maracatu De Tiro Certeiro Da Lama Ao Caos MPEG audio file Latin \N 88868 2901397 0.99 277 Salustiano Song Da Lama Ao Caos MPEG audio file Latin \N 215405 7183969 0.99 278 Antene Se Da Lama Ao Caos MPEG audio file Latin \N 248372 8253618 0.99 279 Risoflora Da Lama Ao Caos MPEG audio file Latin \N 105586 3536938 0.99 280 Lixo Do Mangue Da Lama Ao Caos MPEG audio file Latin \N 193253 6534200 0.99 281 Computadores Fazem Arte Da Lama Ao Caos MPEG audio file Latin \N 404323 13702771 0.99 282 Girassol Acústico MTV [Live] MPEG audio file Reggae Bino Farias/Da Gama/Lazão/Pedro Luis/Toni Garrido 249808 8327676 0.99 283 A Sombra Da Maldade Acústico MTV [Live] MPEG audio file Reggae Da Gama/Toni Garrido 230922 7697230 0.99 284 Johnny B. Goode Acústico MTV [Live] MPEG audio file Reggae Chuck Berry 254615 8505985 0.99 285 Soldado Da Paz Acústico MTV [Live] MPEG audio file Reggae Herbert Vianna 194220 6455080 0.99 286 Firmamento Acústico MTV [Live] MPEG audio file Reggae Bino Farias/Da Gama/Henry Lawes/Lazão/Toni Garrido/Winston Foser-Vers 222145 7402658 0.99 287 Extra Acústico MTV [Live] MPEG audio file Reggae Gilberto Gil 304352 10078050 0.99 288 O Erê Acústico MTV [Live] MPEG audio file Reggae Bernardo Vilhena/Bino Farias/Da Gama/Lazão/Toni Garrido 236382 7866924 0.99 289 Podes Crer Acústico MTV [Live] MPEG audio file Reggae Bino Farias/Da Gama/Lazão/Toni Garrido 232280 7747747 0.99 290 A Estrada Acústico MTV [Live] MPEG audio file Reggae Bino Farias/Da Gama/Lazão/Toni Garrido 248842 8275673 0.99 291 Berlim Acústico MTV [Live] MPEG audio file Reggae Da Gama/Toni Garrido 207542 6920424 0.99 292 Já Foi Acústico MTV [Live] MPEG audio file Reggae Bino Farias/Da Gama/Lazão/Toni Garrido 221544 7388466 0.99 293 Onde Você Mora? Acústico MTV [Live] MPEG audio file Reggae Marisa Monte/Nando Reis 256026 8502588 0.99 294 Pensamento Acústico MTV [Live] MPEG audio file Reggae Bino Farias/Da Gamma/Lazão/Rás Bernard 173008 5748424 0.99 295 Conciliação Acústico MTV [Live] MPEG audio file Reggae Da Gama/Lazão/Rás Bernardo 257619 8552474 0.99 296 Realidade Virtual Acústico MTV [Live] MPEG audio file Reggae Bino Farias/Da Gama/Lazão/Toni Garrido 195239 6503533 0.99 297 Mensagem Acústico MTV [Live] MPEG audio file Reggae Bino Farias/Da Gama/Lazão/Rás Bernardo 225332 7488852 0.99 298 A Cor Do Sol Acústico MTV [Live] MPEG audio file Reggae Bernardo Vilhena/Da Gama/Lazão 231392 7663348 0.99 299 Onde Você Mora? Cidade Negra - Hits MPEG audio file Reggae Marisa Monte/Nando Reis 298396 10056970 0.99 300 O Erê Cidade Negra - Hits MPEG audio file Reggae Bernardo Vilhena/Bino/Da Gama/Lazao/Toni Garrido 206942 6950332 0.99 301 A Sombra Da Maldade Cidade Negra - Hits MPEG audio file Reggae Da Gama/Toni Garrido 285231 9544383 0.99 302 A Estrada Cidade Negra - Hits MPEG audio file Reggae Da Gama/Lazao/Toni Garrido 282174 9344477 0.99 303 Falar A Verdade Cidade Negra - Hits MPEG audio file Reggae Bino/Da Gama/Ras Bernardo 244950 8189093 0.99 304 Firmamento Cidade Negra - Hits MPEG audio file Reggae Harry Lawes/Winston Foster-Vers 225488 7507866 0.99 305 Pensamento Cidade Negra - Hits MPEG audio file Reggae Bino/Da Gama/Ras Bernardo 192391 6399761 0.99 306 Realidade Virtual Cidade Negra - Hits MPEG audio file Reggae Bino/Da Gamma/Lazao/Toni Garrido 240300 8069934 0.99 307 Doutor Cidade Negra - Hits MPEG audio file Reggae Bino/Da Gama/Toni Garrido 178155 5950952 0.99 308 Na Frente Da TV Cidade Negra - Hits MPEG audio file Reggae Bino/Da Gama/Lazao/Ras Bernardo 289750 9633659 0.99 309 Downtown Cidade Negra - Hits MPEG audio file Reggae Cidade Negra 239725 8024386 0.99 310 Sábado A Noite Cidade Negra - Hits MPEG audio file Reggae Lulu Santos 267363 8895073 0.99 311 A Cor Do Sol Cidade Negra - Hits MPEG audio file Reggae Bernardo Vilhena/Da Gama/Lazao 273031 9142937 0.99 312 Eu Também Quero Beijar Cidade Negra - Hits MPEG audio file Reggae Fausto Nilo/Moraes Moreira/Pepeu Gomes 211147 7029400 0.99 313 Noite Do Prazer Na Pista MPEG audio file Latin \N 311353 10309980 0.99 314 À Francesa Na Pista MPEG audio file Latin \N 244532 8150846 0.99 315 Cada Um Cada Um (A Namoradeira) Na Pista MPEG audio file Latin \N 253492 8441034 0.99 316 Linha Do Equador Na Pista MPEG audio file Latin \N 244715 8123466 0.99 317 Amor Demais Na Pista MPEG audio file Latin \N 254040 8420093 0.99 318 Férias Na Pista MPEG audio file Latin \N 264202 8731945 0.99 319 Gostava Tanto De Você Na Pista MPEG audio file Latin \N 230452 7685326 0.99 320 Flor Do Futuro Na Pista MPEG audio file Latin \N 275748 9205941 0.99 321 Felicidade Urgente Na Pista MPEG audio file Latin \N 266605 8873358 0.99 322 Livre Pra Viver Na Pista MPEG audio file Latin \N 214595 7111596 0.99 323 Dig-Dig, Lambe-Lambe (Ao Vivo) Axé Bahia 2001 MPEG audio file Pop Cassiano Costa/Cintia Maviane/J.F./Lucas Costa 205479 6892516 0.99 324 Pererê Axé Bahia 2001 MPEG audio file Pop Augusto Conceição/Chiclete Com Banana 198661 6643207 0.99 325 TriboTchan Axé Bahia 2001 MPEG audio file Pop Cal Adan/Paulo Levi 194194 6507950 0.99 326 Tapa Aqui, Descobre Ali Axé Bahia 2001 MPEG audio file Pop Paulo Levi/W. Rangel 188630 6327391 0.99 327 Daniela Axé Bahia 2001 MPEG audio file Pop Jorge Cardoso/Pierre Onasis 230791 7748006 0.99 328 Bate Lata Axé Bahia 2001 MPEG audio file Pop Fábio Nolasco/Gal Sales/Ivan Brasil 206733 7034985 0.99 329 Garotas do Brasil Axé Bahia 2001 MPEG audio file Pop Garay, Ricardo Engels/Luca Predabom/Ludwig, Carlos Henrique/Maurício Vieira 210155 6973625 0.99 330 Levada do Amor (Ailoviu) Axé Bahia 2001 MPEG audio file Pop Luiz Wanderley/Paulo Levi 190093 6457752 0.99 331 Lavadeira Axé Bahia 2001 MPEG audio file Pop Do Vale, Valverde/Gal Oliveira/Luciano Pinto 214256 7254147 0.99 332 Reboladeira Axé Bahia 2001 MPEG audio file Pop Cal Adan/Ferrugem/Julinho Carioca/Tríona Ní Dhomhnaill 210599 7027525 0.99 333 É que Nessa Encarnação Eu Nasci Manga Axé Bahia 2001 MPEG audio file Pop Lucina/Luli 196519 6568081 0.99 334 Reggae Tchan Axé Bahia 2001 MPEG audio file Pop Cal Adan/Del Rey, Tension/Edu Casanova 206654 6931328 0.99 335 My Love Axé Bahia 2001 MPEG audio file Pop Jauperi/Zeu Góes 203493 6772813 0.99 336 Latinha de Cerveja Axé Bahia 2001 MPEG audio file Pop Adriano Bernandes/Edmar Neves 166687 5532564 0.99 337 You Shook Me BBC Sessions [Disc 1] [Live] MPEG audio file Rock J B Lenoir/Willie Dixon 315951 10249958 0.99 338 I Can't Quit You Baby BBC Sessions [Disc 1] [Live] MPEG audio file Rock Willie Dixon 263836 8581414 0.99 339 Communication Breakdown BBC Sessions [Disc 1] [Live] MPEG audio file Rock Jimmy Page/John Bonham/John Paul Jones 192653 6287257 0.99 340 Dazed and Confused BBC Sessions [Disc 1] [Live] MPEG audio file Rock Jimmy Page 401920 13035765 0.99 341 The Girl I Love She Got Long Black Wavy Hair BBC Sessions [Disc 1] [Live] MPEG audio file Rock Jimmy Page/John Bonham/John Estes/John Paul Jones/Robert Plant 183327 5995686 0.99 342 What is and Should Never Be BBC Sessions [Disc 1] [Live] MPEG audio file Rock Jimmy Page/Robert Plant 260675 8497116 0.99 343 Communication Breakdown(2) BBC Sessions [Disc 1] [Live] MPEG audio file Rock Jimmy Page/John Bonham/John Paul Jones 161149 5261022 0.99 344 Travelling Riverside Blues BBC Sessions [Disc 1] [Live] MPEG audio file Rock Jimmy Page/Robert Johnson/Robert Plant 312032 10232581 0.99 345 Whole Lotta Love BBC Sessions [Disc 1] [Live] MPEG audio file Rock Jimmy Page/John Bonham/John Paul Jones/Robert Plant/Willie Dixon 373394 12258175 0.99 346 Somethin' Else BBC Sessions [Disc 1] [Live] MPEG audio file Rock Bob Cochran/Sharon Sheeley 127869 4165650 0.99 347 Communication Breakdown(3) BBC Sessions [Disc 1] [Live] MPEG audio file Rock Jimmy Page/John Bonham/John Paul Jones 185260 6041133 0.99 348 I Can't Quit You Baby(2) BBC Sessions [Disc 1] [Live] MPEG audio file Rock Willie Dixon 380551 12377615 0.99 349 You Shook Me(2) BBC Sessions [Disc 1] [Live] MPEG audio file Rock J B Lenoir/Willie Dixon 619467 20138673 0.99 350 How Many More Times BBC Sessions [Disc 1] [Live] MPEG audio file Rock Chester Burnett/Jimmy Page/John Bonham/John Paul Jones/Robert Plant 711836 23092953 0.99 351 Debra Kadabra Bongo Fury MPEG audio file Rock Frank Zappa 234553 7649679 0.99 352 Carolina Hard-Core Ecstasy Bongo Fury MPEG audio file Rock Frank Zappa 359680 11731061 0.99 353 Sam With The Showing Scalp Flat Top Bongo Fury MPEG audio file Rock Don Van Vliet 171284 5572993 0.99 354 Poofter's Froth Wyoming Plans Ahead Bongo Fury MPEG audio file Rock Frank Zappa 183902 6007019 0.99 355 200 Years Old Bongo Fury MPEG audio file Rock Frank Zappa 272561 8912465 0.99 356 Cucamonga Bongo Fury MPEG audio file Rock Frank Zappa 144483 4728586 0.99 357 Advance Romance Bongo Fury MPEG audio file Rock Frank Zappa 677694 22080051 0.99 358 Man With The Woman Head Bongo Fury MPEG audio file Rock Don Van Vliet 88894 2922044 0.99 359 Muffin Man Bongo Fury MPEG audio file Rock Frank Zappa 332878 10891682 0.99 360 Vai-Vai 2001 Carnaval 2001 MPEG audio file Soundtrack \N 276349 9402241 0.99 361 X-9 2001 Carnaval 2001 MPEG audio file Soundtrack \N 273920 9310370 0.99 362 Gavioes 2001 Carnaval 2001 MPEG audio file Soundtrack \N 282723 9616640 0.99 363 Nene 2001 Carnaval 2001 MPEG audio file Soundtrack \N 284969 9694508 0.99 364 Rosas De Ouro 2001 Carnaval 2001 MPEG audio file Soundtrack \N 284342 9721084 0.99 365 Mocidade Alegre 2001 Carnaval 2001 MPEG audio file Soundtrack \N 282488 9599937 0.99 366 Camisa Verde 2001 Carnaval 2001 MPEG audio file Soundtrack \N 283454 9633755 0.99 367 Leandro De Itaquera 2001 Carnaval 2001 MPEG audio file Soundtrack \N 274808 9451845 0.99 368 Tucuruvi 2001 Carnaval 2001 MPEG audio file Soundtrack \N 287921 9883335 0.99 369 Aguia De Ouro 2001 Carnaval 2001 MPEG audio file Soundtrack \N 284160 9698729 0.99 370 Ipiranga 2001 Carnaval 2001 MPEG audio file Soundtrack \N 248293 8522591 0.99 371 Morro Da Casa Verde 2001 Carnaval 2001 MPEG audio file Soundtrack \N 284708 9718778 0.99 372 Perola Negra 2001 Carnaval 2001 MPEG audio file Soundtrack \N 281626 9619196 0.99 373 Sao Lucas 2001 Carnaval 2001 MPEG audio file Soundtrack \N 296254 10020122 0.99 374 Guanabara Chill: Brazil (Disc 1) MPEG audio file Latin Marcos Valle 247614 8499591 0.99 375 Mas Que Nada Chill: Brazil (Disc 1) MPEG audio file Latin Jorge Ben 248398 8255254 0.99 376 Vôo Sobre o Horizonte Chill: Brazil (Disc 1) MPEG audio file Latin J.r.Bertami/Parana 225097 7528825 0.99 377 A Paz Chill: Brazil (Disc 1) MPEG audio file Latin Donato/Gilberto Gil 263183 8619173 0.99 378 Wave (Vou te Contar) Chill: Brazil (Disc 1) MPEG audio file Latin Antonio Carlos Jobim 271647 9057557 0.99 379 Água de Beber Chill: Brazil (Disc 1) MPEG audio file Latin Antonio Carlos Jobim/Vinicius de Moraes 146677 4866476 0.99 380 Samba da Bençaco Chill: Brazil (Disc 1) MPEG audio file Latin Baden Powell/Vinicius de Moraes 282200 9440676 0.99 381 Pode Parar Chill: Brazil (Disc 1) MPEG audio file Latin Jorge Vercilo/Jota Maranhao 179408 6046678 0.99 382 Menino do Rio Chill: Brazil (Disc 1) MPEG audio file Latin Caetano Veloso 262713 8737489 0.99 383 Ando Meio Desligado Chill: Brazil (Disc 1) MPEG audio file Latin Caetano Veloso 195813 6547648 0.99 384 Mistério da Raça Chill: Brazil (Disc 1) MPEG audio file Latin Luiz Melodia/Ricardo Augusto 184320 6191752 0.99 385 All Star Chill: Brazil (Disc 1) MPEG audio file Latin Nando Reis 176326 5891697 0.99 386 Menina Bonita Chill: Brazil (Disc 1) MPEG audio file Latin Alexandre Brazil/Pedro Luis/Rodrigo Cabelo 237087 7938246 0.99 387 Pescador de Ilusões Chill: Brazil (Disc 1) MPEG audio file Latin Macelo Yuka/O Rappa 245524 8267067 0.99 388 À Vontade (Live Mix) Chill: Brazil (Disc 1) MPEG audio file Latin Bombom/Ed Motta 180636 5972430 0.99 389 Maria Fumaça Chill: Brazil (Disc 1) MPEG audio file Latin Luiz Carlos/Oberdan 141008 4743149 0.99 390 Sambassim (dj patife remix) Chill: Brazil (Disc 1) MPEG audio file Latin Alba Carvalho/Fernando Porto 213655 7243166 0.99 391 Garota De Ipanema Chill: Brazil (Disc 2) MPEG audio file Latin Vários 279536 9141343 0.99 392 Tim Tim Por Tim Tim Chill: Brazil (Disc 2) MPEG audio file Latin Vários 213237 7143328 0.99 393 Tarde Em Itapoã Chill: Brazil (Disc 2) MPEG audio file Latin Vários 313704 10344491 0.99 394 Tanto Tempo Chill: Brazil (Disc 2) MPEG audio file Latin Vários 170292 5572240 0.99 395 Eu Vim Da Bahia - Live Chill: Brazil (Disc 2) MPEG audio file Latin Vários 157988 5115428 0.99 396 Alô Alô Marciano Chill: Brazil (Disc 2) MPEG audio file Latin Vários 238106 8013065 0.99 397 Linha Do Horizonte Chill: Brazil (Disc 2) MPEG audio file Latin Vários 279484 9275929 0.99 398 Only A Dream In Rio Chill: Brazil (Disc 2) MPEG audio file Latin Vários 371356 12192989 0.99 399 Abrir A Porta Chill: Brazil (Disc 2) MPEG audio file Latin Vários 271960 8991141 0.99 400 Alice Chill: Brazil (Disc 2) MPEG audio file Latin Vários 165982 5594341 0.99 401 Momentos Que Marcam Chill: Brazil (Disc 2) MPEG audio file Latin Vários 280137 9313740 0.99 402 Um Jantar Pra Dois Chill: Brazil (Disc 2) MPEG audio file Latin Vários 237714 7819755 0.99 403 Bumbo Da Mangueira Chill: Brazil (Disc 2) MPEG audio file Latin Vários 270158 9073350 0.99 404 Mr Funk Samba Chill: Brazil (Disc 2) MPEG audio file Latin Vários 213890 7102545 0.99 405 Santo Antonio Chill: Brazil (Disc 2) MPEG audio file Latin Vários 162716 5492069 0.99 406 Por Você Chill: Brazil (Disc 2) MPEG audio file Latin Vários 205557 6792493 0.99 407 Só Tinha De Ser Com Você Chill: Brazil (Disc 2) MPEG audio file Latin Vários 389642 13085596 0.99 408 Free Speech For The Dumb Garage Inc. (Disc 1) MPEG audio file Metal Molaney/Morris/Roberts/Wainwright 155428 5076048 0.99 409 It's Electric Garage Inc. (Disc 1) MPEG audio file Metal Harris/Tatler 213995 6978601 0.99 410 Sabbra Cadabra Garage Inc. (Disc 1) MPEG audio file Metal Black Sabbath 380342 12418147 0.99 411 Turn The Page Garage Inc. (Disc 1) MPEG audio file Metal Seger 366524 11946327 0.99 412 Die Die My Darling Garage Inc. (Disc 1) MPEG audio file Metal Danzig 149315 4867667 0.99 413 Loverman Garage Inc. (Disc 1) MPEG audio file Metal Cave 472764 15446975 0.99 414 Mercyful Fate Garage Inc. (Disc 1) MPEG audio file Metal Diamond/Shermann 671712 21942829 0.99 415 Astronomy Garage Inc. (Disc 1) MPEG audio file Metal A.Bouchard/J.Bouchard/S.Pearlman 397531 13065612 0.99 416 Whiskey In The Jar Garage Inc. (Disc 1) MPEG audio file Metal Traditional 305005 9943129 0.99 417 Tuesday's Gone Garage Inc. (Disc 1) MPEG audio file Metal Collins/Van Zandt 545750 17900787 0.99 418 The More I See Garage Inc. (Disc 1) MPEG audio file Metal Molaney/Morris/Roberts/Wainwright 287973 9378873 0.99 419 A Kind Of Magic Greatest Hits II MPEG audio file Rock Roger Taylor 262608 8689618 0.99 420 Under Pressure Greatest Hits II MPEG audio file Rock Queen & David Bowie 236617 7739042 0.99 421 Radio GA GA Greatest Hits II MPEG audio file Rock Roger Taylor 343745 11358573 0.99 422 I Want It All Greatest Hits II MPEG audio file Rock Queen 241684 7876564 0.99 423 I Want To Break Free Greatest Hits II MPEG audio file Rock John Deacon 259108 8552861 0.99 424 Innuendo Greatest Hits II MPEG audio file Rock Queen 387761 12664591 0.99 425 It's A Hard Life Greatest Hits II MPEG audio file Rock Freddie Mercury 249417 8112242 0.99 426 Breakthru Greatest Hits II MPEG audio file Rock Queen 249234 8150479 0.99 427 Who Wants To Live Forever Greatest Hits II MPEG audio file Rock Brian May 297691 9577577 0.99 428 Headlong Greatest Hits II MPEG audio file Rock Queen 273057 8921404 0.99 429 The Miracle Greatest Hits II MPEG audio file Rock Queen 294974 9671923 0.99 430 I'm Going Slightly Mad Greatest Hits II MPEG audio file Rock Queen 248032 8192339 0.99 431 The Invisible Man Greatest Hits II MPEG audio file Rock Queen 238994 7920353 0.99 432 Hammer To Fall Greatest Hits II MPEG audio file Rock Brian May 220316 7255404 0.99 433 Friends Will Be Friends Greatest Hits II MPEG audio file Rock Freddie Mercury & John Deacon 248920 8114582 0.99 434 The Show Must Go On Greatest Hits II MPEG audio file Rock Queen 263784 8526760 0.99 435 One Vision Greatest Hits II MPEG audio file Rock Queen 242599 7936928 0.99 436 Detroit Rock City Greatest Kiss MPEG audio file Rock Paul Stanley, B. Ezrin 218880 7146372 0.99 437 Black Diamond Greatest Kiss MPEG audio file Rock Paul Stanley 314148 10266007 0.99 438 Hard Luck Woman Greatest Kiss MPEG audio file Rock Paul Stanley 216032 7109267 0.99 439 Sure Know Something Greatest Kiss MPEG audio file Rock Paul Stanley, Vincent Poncia 242468 7939886 0.99 440 Love Gun Greatest Kiss MPEG audio file Rock Paul Stanley 196257 6424915 0.99 441 Deuce Greatest Kiss MPEG audio file Rock Gene Simmons 185077 6097210 0.99 442 Goin' Blind Greatest Kiss MPEG audio file Rock Gene Simmons, S. Coronel 216215 7045314 0.99 443 Shock Me Greatest Kiss MPEG audio file Rock Ace Frehley 227291 7529336 0.99 444 Do You Love Me Greatest Kiss MPEG audio file Rock Paul Stanley, B. Ezrin, K. Fowley 214987 6976194 0.99 445 She Greatest Kiss MPEG audio file Rock Gene Simmons, S. Coronel 248346 8229734 0.99 446 I Was Made For Loving You Greatest Kiss MPEG audio file Rock Paul Stanley, Vincent Poncia, Desmond Child 271360 9018078 0.99 447 Shout It Out Loud Greatest Kiss MPEG audio file Rock Paul Stanley, Gene Simmons, B. Ezrin 219742 7194424 0.99 448 God Of Thunder Greatest Kiss MPEG audio file Rock Paul Stanley 255791 8309077 0.99 449 Calling Dr. Love Greatest Kiss MPEG audio file Rock Gene Simmons 225332 7395034 0.99 450 Beth Greatest Kiss MPEG audio file Rock S. Penridge, Bob Ezrin, Peter Criss 166974 5360574 0.99 451 Strutter Greatest Kiss MPEG audio file Rock Paul Stanley, Gene Simmons 192496 6317021 0.99 452 Rock And Roll All Nite Greatest Kiss MPEG audio file Rock Paul Stanley, Gene Simmons 173609 5735902 0.99 453 Cold Gin Greatest Kiss MPEG audio file Rock Ace Frehley 262243 8609783 0.99 454 Plaster Caster Greatest Kiss MPEG audio file Rock Gene Simmons 207333 6801116 0.99 455 God Gave Rock 'n' Roll To You Greatest Kiss MPEG audio file Rock Paul Stanley, Gene Simmons, Rus Ballard, Bob Ezrin 320444 10441590 0.99 456 Heart of the Night Heart of the Night MPEG audio file Jazz \N 273737 9098263 0.99 457 De La Luz Heart of the Night MPEG audio file Jazz \N 315219 10518284 0.99 458 Westwood Moon Heart of the Night MPEG audio file Jazz \N 295627 9765802 0.99 459 Midnight Heart of the Night MPEG audio file Jazz \N 266866 8851060 0.99 460 Playtime Heart of the Night MPEG audio file Jazz \N 273580 9070880 0.99 461 Surrender Heart of the Night MPEG audio file Jazz \N 287634 9422926 0.99 462 Valentino's Heart of the Night MPEG audio file Jazz \N 296124 9848545 0.99 463 Believe Heart of the Night MPEG audio file Jazz \N 310778 10317185 0.99 464 As We Sleep Heart of the Night MPEG audio file Jazz \N 316865 10429398 0.99 465 When Evening Falls Heart of the Night MPEG audio file Jazz \N 298135 9863942 0.99 466 J Squared Heart of the Night MPEG audio file Jazz \N 288757 9480777 0.99 467 Best Thing Heart of the Night MPEG audio file Jazz \N 274259 9069394 0.99 468 Maria International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 167262 5484747 0.99 469 Poprocks And Coke International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 158354 5243078 0.99 470 Longview International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 234083 7714939 0.99 471 Welcome To Paradise International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 224208 7406008 0.99 472 Basket Case International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 181629 5951736 0.99 473 When I Come Around International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 178364 5839426 0.99 474 She International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 134164 4425128 0.99 475 J.A.R. (Jason Andrew Relva) International Superhits MPEG audio file Alternative & Punk Mike Dirnt -Words Green Day -Music 170997 5645755 0.99 476 Geek Stink Breath International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 135888 4408983 0.99 477 Brain Stew International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 193149 6305550 0.99 478 Jaded International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 90331 2950224 0.99 479 Walking Contradiction International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 151170 4932366 0.99 480 Stuck With Me International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 135523 4431357 0.99 481 Hitchin' A Ride International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 171546 5616891 0.99 482 Good Riddance (Time Of Your Life) International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 153600 5075241 0.99 483 Redundant International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 198164 6481753 0.99 484 Nice Guys Finish Last International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 170187 5604618 0.99 485 Minority International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 168803 5535061 0.99 486 Warning International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 221910 7343176 0.99 487 Waiting International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 192757 6316430 0.99 488 Macy's Day Parade International Superhits MPEG audio file Alternative & Punk Billie Joe Armstrong -Words Green Day -Music 213420 7075573 0.99 489 Into The Light Into The Light MPEG audio file Rock David Coverdale 76303 2452653 0.99 490 River Song Into The Light MPEG audio file Rock David Coverdale 439510 14359478 0.99 491 She Give Me ... Into The Light MPEG audio file Rock David Coverdale 252551 8385478 0.99 492 Don't You Cry Into The Light MPEG audio file Rock David Coverdale 347036 11269612 0.99 493 Love Is Blind Into The Light MPEG audio file Rock David Coverdale/Earl Slick 344999 11409720 0.99 494 Slave Into The Light MPEG audio file Rock David Coverdale/Earl Slick 291892 9425200 0.99 495 Cry For Love Into The Light MPEG audio file Rock Bossi/David Coverdale/Earl Slick 293015 9567075 0.99 496 Living On Love Into The Light MPEG audio file Rock Bossi/David Coverdale/Earl Slick 391549 12785876 0.99 497 Midnight Blue Into The Light MPEG audio file Rock David Coverdale/Earl Slick 298631 9750990 0.99 498 Too Many Tears Into The Light MPEG audio file Rock Adrian Vanderberg/David Coverdale 359497 11810238 0.99 499 Don't Lie To Me Into The Light MPEG audio file Rock David Coverdale/Earl Slick 283585 9288007 0.99 500 Wherever You May Go Into The Light MPEG audio file Rock David Coverdale 239699 7803074 0.99 501 Grito De Alerta Meus Momentos MPEG audio file Latin Gonzaga Jr. 202213 6539422 0.99 502 Não Dá Mais Pra Segurar (Explode Coração) Meus Momentos MPEG audio file Latin \N 219768 7083012 0.99 503 Começaria Tudo Outra Vez Meus Momentos MPEG audio file Latin \N 196545 6473395 0.99 504 O Que É O Que É ? Meus Momentos MPEG audio file Latin \N 259291 8650647 0.99 505 Sangrando Meus Momentos MPEG audio file Latin Gonzaga Jr/Gonzaguinha 169717 5494406 0.99 506 Diga Lá, Coração Meus Momentos MPEG audio file Latin \N 255921 8280636 0.99 507 Lindo Lago Do Amor Meus Momentos MPEG audio file Latin Gonzaga Jr. 249678 8353191 0.99 508 Eu Apenas Queria Que Voçê Soubesse Meus Momentos MPEG audio file Latin \N 155637 5130056 0.99 509 Com A Perna No Mundo Meus Momentos MPEG audio file Latin Gonzaga Jr. 227448 7747108 0.99 510 E Vamos À Luta Meus Momentos MPEG audio file Latin \N 222406 7585112 0.99 511 Um Homem Também Chora (Guerreiro Menino) Meus Momentos MPEG audio file Latin \N 207229 6854219 0.99 512 Comportamento Geral Meus Momentos MPEG audio file Latin Gonzaga Jr 181577 5997444 0.99 513 Ponto De Interrogação Meus Momentos MPEG audio file Latin \N 180950 5946265 0.99 514 Espere Por Mim, Morena Meus Momentos MPEG audio file Latin Gonzaguinha 207072 6796523 0.99 515 Meia-Lua Inteira Minha Historia MPEG audio file Latin \N 222093 7466288 0.99 516 Voce e Linda Minha Historia MPEG audio file Latin \N 242938 8050268 0.99 517 Um Indio Minha Historia MPEG audio file Latin \N 195944 6453213 0.99 518 Podres Poderes Minha Historia MPEG audio file Latin \N 259761 8622495 0.99 519 Voce Nao Entende Nada - Cotidiano Minha Historia MPEG audio file Latin \N 421982 13885612 0.99 520 O Estrangeiro Minha Historia MPEG audio file Latin \N 374700 12472890 0.99 521 Menino Do Rio Minha Historia MPEG audio file Latin \N 147670 4862277 0.99 522 Qualquer Coisa Minha Historia MPEG audio file Latin \N 193410 6372433 0.99 523 Sampa Minha Historia MPEG audio file Latin \N 185051 6151831 0.99 524 Queixa Minha Historia MPEG audio file Latin \N 299676 9953962 0.99 525 O Leaozinho Minha Historia MPEG audio file Latin \N 184398 6098150 0.99 526 Fora Da Ordem Minha Historia MPEG audio file Latin \N 354011 11746781 0.99 527 Terra Minha Historia MPEG audio file Latin \N 401319 13224055 0.99 528 Alegria, Alegria Minha Historia MPEG audio file Latin \N 169221 5497025 0.99 529 Balada Do Louco Minha História MPEG audio file Alternative & Punk Arnaldo Baptista - Rita Lee 241057 7852328 0.99 530 Ando Meio Desligado Minha História MPEG audio file Alternative & Punk Arnaldo Baptista - Rita Lee - Sérgio Dias 287817 9484504 0.99 531 Top Top Minha História MPEG audio file Alternative & Punk Os Mutantes - Arnolpho Lima Filho 146938 4875374 0.99 532 Baby Minha História MPEG audio file Alternative & Punk Caetano Veloso 177188 5798202 0.99 533 A E O Z Minha História MPEG audio file Alternative & Punk Mutantes 518556 16873005 0.99 534 Panis Et Circenses Minha História MPEG audio file Alternative & Punk Caetano Veloso - Gilberto Gil 125152 4069688 0.99 535 Chão De Estrelas Minha História MPEG audio file Alternative & Punk Orestes Barbosa-Sílvio Caldas 284813 9433620 0.99 536 Vida De Cachorro Minha História MPEG audio file Alternative & Punk Rita Lee - Arnaldo Baptista - Sérgio Baptista 195186 6411149 0.99 537 Bat Macumba Minha História MPEG audio file Alternative & Punk Gilberto Gil - Caetano Veloso 187794 6295223 0.99 538 Desculpe Babe Minha História MPEG audio file Alternative & Punk Arnaldo Baptista - Rita Lee 170422 5637959 0.99 539 Rita Lee Minha História MPEG audio file Alternative & Punk Arnaldo Baptista/Rita Lee/Sérgio Dias 189257 6270503 0.99 540 Posso Perder Minha Mulher, Minha Mãe, Desde Que Eu Tenha O Rock And Roll Minha História MPEG audio file Alternative & Punk Arnaldo Baptista - Rita Lee - Arnolpho Lima Filho 222955 7346254 0.99 541 Banho De Lua Minha História MPEG audio file Alternative & Punk B. de Filippi - F. Migliaci - Versão: Fred Jorge 221831 7232123 0.99 542 Meu Refrigerador Não Funciona Minha História MPEG audio file Alternative & Punk Arnaldo Baptista - Rita Lee - Sérgio Dias 382981 12495906 0.99 543 Burn MK III The Final Concerts [Disc 1] MPEG audio file Rock Coverdale/Lord/Paice 453955 14775708 0.99 544 Stormbringer MK III The Final Concerts [Disc 1] MPEG audio file Rock Coverdale 277133 9050022 0.99 545 Gypsy MK III The Final Concerts [Disc 1] MPEG audio file Rock Coverdale/Hughes/Lord/Paice 339173 11046952 0.99 546 Lady Double Dealer MK III The Final Concerts [Disc 1] MPEG audio file Rock Coverdale 233586 7608759 0.99 547 Mistreated MK III The Final Concerts [Disc 1] MPEG audio file Rock Coverdale 758648 24596235 0.99 548 Smoke On The Water MK III The Final Concerts [Disc 1] MPEG audio file Rock Gillan/Glover/Lord/Paice 618031 20103125 0.99 549 You Fool No One MK III The Final Concerts [Disc 1] MPEG audio file Rock Coverdale/Lord/Paice 804101 26369966 0.99 550 Custard Pie Physical Graffiti [Disc 1] MPEG audio file Rock Jimmy Page/Robert Plant 253962 8348257 0.99 551 The Rover Physical Graffiti [Disc 1] MPEG audio file Rock Jimmy Page/Robert Plant 337084 11011286 0.99 552 In My Time Of Dying Physical Graffiti [Disc 1] MPEG audio file Rock John Bonham/John Paul Jones 666017 21676727 0.99 553 Houses Of The Holy Physical Graffiti [Disc 1] MPEG audio file Rock Jimmy Page/Robert Plant 242494 7972503 0.99 554 Trampled Under Foot Physical Graffiti [Disc 1] MPEG audio file Rock John Paul Jones 336692 11154468 0.99 555 Kashmir Physical Graffiti [Disc 1] MPEG audio file Rock John Bonham 508604 16686580 0.99 556 Imperatriz Sambas De Enredo 2001 MPEG audio file Latin Guga/Marquinho Lessa/Tuninho Professor 339173 11348710 0.99 557 Beija-Flor Sambas De Enredo 2001 MPEG audio file Latin Caruso/Cleber/Deo/Osmar 327000 10991159 0.99 558 Viradouro Sambas De Enredo 2001 MPEG audio file Latin Dadinho/Gilbreto Gomes/Gustavo/P.C. Portugal/R. Mocoto 344320 11484362 0.99 559 Mocidade Sambas De Enredo 2001 MPEG audio file Latin Domenil/J. Brito/Joaozinho/Rap, Marcelo Do 261720 8817757 0.99 560 Unidos Da Tijuca Sambas De Enredo 2001 MPEG audio file Latin Douglas/Neves, Vicente Das/Silva, Gilmar L./Toninho Gentil/Wantuir 338834 11440689 0.99 561 Salgueiro Sambas De Enredo 2001 MPEG audio file Latin Augusto/Craig Negoescu/Rocco Filho/Saara, Ze Carlos Da 305920 10294741 0.99 562 Mangueira Sambas De Enredo 2001 MPEG audio file Latin Bizuca/Clóvis Pê/Gilson Bernini/Marelo D'Aguia 298318 9999506 0.99 563 União Da Ilha Sambas De Enredo 2001 MPEG audio file Latin Dito/Djalma Falcao/Ilha, Almir Da/Márcio André 330945 11100945 0.99 564 Grande Rio Sambas De Enredo 2001 MPEG audio file Latin Carlos Santos/Ciro/Claudio Russo/Zé Luiz 307252 10251428 0.99 565 Portela Sambas De Enredo 2001 MPEG audio file Latin Flavio Bororo/Paulo Apparicio/Wagner Alves/Zeca Sereno 319608 10712216 0.99 566 Caprichosos Sambas De Enredo 2001 MPEG audio file Latin Gule/Jorge 101/Lequinho/Luiz Piao 351320 11870956 0.99 567 Tradição Sambas De Enredo 2001 MPEG audio file Latin Adalto Magalha/Lourenco 269165 9114880 0.99 568 Império Serrano Sambas De Enredo 2001 MPEG audio file Latin Arlindo Cruz/Carlos Sena/Elmo Caetano/Mauricao 334942 11161196 0.99 569 Tuiuti Sambas De Enredo 2001 MPEG audio file Latin Claudio Martins/David Lima/Kleber Rodrigues/Livre, Cesare Som 259657 8749492 0.99 570 (Da Le) Yaleo Supernatural MPEG audio file Rock Santana 353488 11769507 0.99 571 Love Of My Life Supernatural MPEG audio file Rock Carlos Santana & Dave Matthews 347820 11634337 0.99 572 Put Your Lights On Supernatural MPEG audio file Rock E. Shrody 285178 9394769 0.99 573 Africa Bamba Supernatural MPEG audio file Rock I. Toure, S. Tidiane Toure, Carlos Santana & K. Perazzo 282827 9492487 0.99 574 Smooth Supernatural MPEG audio file Rock M. Itaal Shur & Rob Thomas 298161 9867455 0.99 575 Do You Like The Way Supernatural MPEG audio file Rock L. Hill 354899 11741062 0.99 576 Maria Maria Supernatural MPEG audio file Rock W. Jean, J. Duplessis, Carlos Santana, K. Perazzo & R. Rekow 262635 8664601 0.99 577 Migra Supernatural MPEG audio file Rock R. Taha, Carlos Santana & T. Lindsay 329064 10963305 0.99 578 Corazon Espinado Supernatural MPEG audio file Rock F. Olivera 276114 9206802 0.99 579 Wishing It Was Supernatural MPEG audio file Rock Eale-Eye Cherry, M. Simpson, J. King & M. Nishita 292832 9771348 0.99 580 El Farol Supernatural MPEG audio file Rock Carlos Santana & KC Porter 291160 9599353 0.99 581 Primavera Supernatural MPEG audio file Rock KC Porter & JB Eckl 378618 12504234 0.99 582 The Calling Supernatural MPEG audio file Rock Carlos Santana & C. Thompson 747755 24703884 0.99 583 Solução The Best of Ed Motta MPEG audio file Latin \N 247431 8100449 0.99 584 Manuel The Best of Ed Motta MPEG audio file Latin \N 230269 7677671 0.99 585 Entre E Ouça The Best of Ed Motta MPEG audio file Latin \N 286302 9391004 0.99 586 Um Contrato Com Deus The Best of Ed Motta MPEG audio file Latin \N 202501 6636465 0.99 587 Um Jantar Pra Dois The Best of Ed Motta MPEG audio file Latin \N 244009 8021589 0.99 588 Vamos Dançar The Best of Ed Motta MPEG audio file Latin \N 226194 7617432 0.99 589 Um Love The Best of Ed Motta MPEG audio file Latin \N 181603 6095524 0.99 590 Seis Da Tarde The Best of Ed Motta MPEG audio file Latin \N 238445 7935898 0.99 591 Baixo Rio The Best of Ed Motta MPEG audio file Latin \N 198008 6521676 0.99 592 Sombras Do Meu Destino The Best of Ed Motta MPEG audio file Latin \N 280685 9161539 0.99 593 Do You Have Other Loves? The Best of Ed Motta MPEG audio file Latin \N 295235 9604273 0.99 594 Agora Que O Dia Acordou The Best of Ed Motta MPEG audio file Latin \N 323213 10572752 0.99 595 Já!!! The Best of Ed Motta MPEG audio file Latin \N 217782 7103608 0.99 596 A Rua The Best of Ed Motta MPEG audio file Latin \N 238027 7930264 0.99 597 Now's The Time The Essential Miles Davis [Disc 1] MPEG audio file Jazz Miles Davis 197459 6358868 0.99 598 Jeru The Essential Miles Davis [Disc 1] MPEG audio file Jazz Miles Davis 193410 6222536 0.99 599 Compulsion The Essential Miles Davis [Disc 1] MPEG audio file Jazz Miles Davis 345025 11254474 0.99 600 Tempus Fugit The Essential Miles Davis [Disc 1] MPEG audio file Jazz Miles Davis 231784 7548434 0.99 601 Walkin' The Essential Miles Davis [Disc 1] MPEG audio file Jazz Miles Davis 807392 26411634 0.99 602 'Round Midnight The Essential Miles Davis [Disc 1] MPEG audio file Jazz Miles Davis 357459 11590284 0.99 603 Bye Bye Blackbird The Essential Miles Davis [Disc 1] MPEG audio file Jazz Miles Davis 476003 15549224 0.99 604 New Rhumba The Essential Miles Davis [Disc 1] MPEG audio file Jazz Miles Davis 277968 9018024 0.99 605 Generique The Essential Miles Davis [Disc 1] MPEG audio file Jazz Miles Davis 168777 5437017 0.99 606 Summertime The Essential Miles Davis [Disc 1] MPEG audio file Jazz Miles Davis 200437 6461370 0.99 607 So What The Essential Miles Davis [Disc 1] MPEG audio file Jazz Miles Davis 564009 18360449 0.99 608 The Pan Piper The Essential Miles Davis [Disc 1] MPEG audio file Jazz Miles Davis 233769 7593713 0.99 609 Someday My Prince Will Come The Essential Miles Davis [Disc 1] MPEG audio file Jazz Miles Davis 544078 17890773 0.99 610 My Funny Valentine (Live) The Essential Miles Davis [Disc 2] MPEG audio file Jazz Miles Davis 907520 29416781 0.99 611 E.S.P. The Essential Miles Davis [Disc 2] MPEG audio file Jazz Miles Davis 330684 11079866 0.99 612 Nefertiti The Essential Miles Davis [Disc 2] MPEG audio file Jazz Miles Davis 473495 15478450 0.99 613 Petits Machins (Little Stuff) The Essential Miles Davis [Disc 2] MPEG audio file Jazz Miles Davis 487392 16131272 0.99 614 Miles Runs The Voodoo Down The Essential Miles Davis [Disc 2] MPEG audio file Jazz Miles Davis 843964 27967919 0.99 615 Little Church (Live) The Essential Miles Davis [Disc 2] MPEG audio file Jazz Miles Davis 196101 6273225 0.99 616 Black Satin The Essential Miles Davis [Disc 2] MPEG audio file Jazz Miles Davis 316682 10529483 0.99 617 Jean Pierre (Live) The Essential Miles Davis [Disc 2] MPEG audio file Jazz Miles Davis 243461 7955114 0.99 618 Time After Time The Essential Miles Davis [Disc 2] MPEG audio file Jazz Miles Davis 220734 7292197 0.99 619 Portia The Essential Miles Davis [Disc 2] MPEG audio file Jazz Miles Davis 378775 12520126 0.99 620 Space Truckin' The Final Concerts (Disc 2) MPEG audio file Rock Blackmore/Gillan/Glover/Lord/Paice 1196094 39267613 0.99 621 Going Down / Highway Star The Final Concerts (Disc 2) MPEG audio file Rock Gillan/Glover/Lord/Nix - Blackmore/Paice 913658 29846063 0.99 622 Mistreated (Alternate Version) The Final Concerts (Disc 2) MPEG audio file Rock Blackmore/Coverdale 854700 27775442 0.99 623 You Fool No One (Alternate Version) The Final Concerts (Disc 2) MPEG audio file Rock Blackmore/Coverdale/Lord/Paice 763924 24887209 0.99 624 Jeepers Creepers Up An' Atom MPEG audio file Jazz \N 185965 5991903 0.99 625 Blue Rythm Fantasy Up An' Atom MPEG audio file Jazz \N 348212 11204006 0.99 626 Drum Boogie Up An' Atom MPEG audio file Jazz \N 191555 6185636 0.99 627 Let Me Off Uptown Up An' Atom MPEG audio file Jazz \N 187637 6034685 0.99 628 Leave Us Leap Up An' Atom MPEG audio file Jazz \N 182726 5898810 0.99 629 Opus No.1 Up An' Atom MPEG audio file Jazz \N 179800 5846041 0.99 630 Boogie Blues Up An' Atom MPEG audio file Jazz \N 204199 6603153 0.99 631 How High The Moon Up An' Atom MPEG audio file Jazz \N 201430 6529487 0.99 632 Disc Jockey Jump Up An' Atom MPEG audio file Jazz \N 193149 6260820 0.99 633 Up An' Atom Up An' Atom MPEG audio file Jazz \N 179565 5822645 0.99 634 Bop Boogie Up An' Atom MPEG audio file Jazz \N 189596 6093124 0.99 635 Lemon Drop Up An' Atom MPEG audio file Jazz \N 194089 6287531 0.99 636 Coronation Drop Up An' Atom MPEG audio file Jazz \N 176222 5899898 0.99 637 Overtime Up An' Atom MPEG audio file Jazz \N 163030 5432236 0.99 638 Imagination Up An' Atom MPEG audio file Jazz \N 289306 9444385 0.99 639 Don't Take Your Love From Me Up An' Atom MPEG audio file Jazz \N 282331 9244238 0.99 640 Midget Up An' Atom MPEG audio file Jazz \N 217025 7257663 0.99 641 I'm Coming Virginia Up An' Atom MPEG audio file Jazz \N 280163 9209827 0.99 642 Payin' Them Dues Blues Up An' Atom MPEG audio file Jazz \N 198556 6536918 0.99 643 Jungle Drums Up An' Atom MPEG audio file Jazz \N 199627 6546063 0.99 644 Showcase Up An' Atom MPEG audio file Jazz \N 201560 6697510 0.99 645 Swedish Schnapps Up An' Atom MPEG audio file Jazz \N 191268 6359750 0.99 646 Samba Da Bênção Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 409965 13490008 0.99 647 Pot-Pourri N.º 4 Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 392437 13125975 0.99 648 Onde Anda Você Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 168437 5550356 0.99 649 Samba Da Volta Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 170631 5676090 0.99 650 Canto De Ossanha Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 204956 6771624 0.99 651 Pot-Pourri N.º 5 Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 219898 7117769 0.99 652 Formosa Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 137482 4560873 0.99 653 Como É Duro Trabalhar Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 226168 7541177 0.99 654 Minha Namorada Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 244297 7927967 0.99 655 Por Que Será Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 162142 5371483 0.99 656 Berimbau Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 190667 6335548 0.99 657 Deixa Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 179826 5932799 0.99 658 Pot-Pourri N.º 2 Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 211748 6878359 0.99 659 Samba Em Prelúdio Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 212636 6923473 0.99 660 Carta Ao Tom 74 Vinícius De Moraes - Sem Limite MPEG audio file Bossa Nova \N 162560 5382354 0.99 661 Linha de Passe (João Bosco) Vozes do MPB MPEG audio file Latin \N 230948 7902328 0.99 662 Pela Luz dos Olhos Teus (Miúcha e Tom Jobim) Vozes do MPB MPEG audio file Latin \N 163970 5399626 0.99 663 Chão de Giz (Elba Ramalho) Vozes do MPB MPEG audio file Latin \N 274834 9016916 0.99 664 Marina (Dorival Caymmi) Vozes do MPB MPEG audio file Latin \N 172643 5523628 0.99 665 Aquarela (Toquinho) Vozes do MPB MPEG audio file Latin \N 259944 8480140 0.99 666 Coração do Agreste (Fafá de Belém) Vozes do MPB MPEG audio file Latin \N 258194 8380320 0.99 667 Dona (Roupa Nova) Vozes do MPB MPEG audio file Latin \N 243356 7991295 0.99 668 Começaria Tudo Outra Vez (Maria Creuza) Vozes do MPB MPEG audio file Latin \N 206994 6851151 0.99 669 Caçador de Mim (Sá & Guarabyra) Vozes do MPB MPEG audio file Latin \N 238341 7751360 0.99 670 Romaria (Renato Teixeira) Vozes do MPB MPEG audio file Latin \N 244793 8033885 0.99 671 As Rosas Não Falam (Beth Carvalho) Vozes do MPB MPEG audio file Latin \N 116767 3836641 0.99 672 Wave (Os Cariocas) Vozes do MPB MPEG audio file Latin \N 130063 4298006 0.99 673 Garota de Ipanema (Dick Farney) Vozes do MPB MPEG audio file Latin \N 174367 5767474 0.99 674 Preciso Apender a Viver Só (Maysa) Vozes do MPB MPEG audio file Latin \N 143464 4642359 0.99 675 Susie Q Chronicle, Vol. 1 MPEG audio file Rock Hawkins-Lewis-Broadwater 275565 9043825 0.99 676 I Put A Spell On You Chronicle, Vol. 1 MPEG audio file Rock Jay Hawkins 272091 8943000 0.99 677 Proud Mary Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 189022 6229590 0.99 678 Bad Moon Rising Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 140146 4609835 0.99 679 Lodi Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 191451 6260214 0.99 680 Green River Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 154279 5105874 0.99 681 Commotion Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 162899 5354252 0.99 682 Down On The Corner Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 164858 5521804 0.99 683 Fortunate Son Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 140329 4617559 0.99 684 Travelin' Band Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 129358 4270414 0.99 685 Who'll Stop The Rain Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 149394 4899579 0.99 686 Up Around The Bend Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 162429 5368701 0.99 687 Run Through The Jungle Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 186044 6156567 0.99 688 Lookin' Out My Back Door Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 152946 5034670 0.99 689 Long As I Can See The Light Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 213237 6924024 0.99 690 I Heard It Through The Grapevine Chronicle, Vol. 1 MPEG audio file Rock Whitfield-Strong 664894 21947845 0.99 691 Have You Ever Seen The Rain? Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 160052 5263675 0.99 692 Hey Tonight Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 162847 5343807 0.99 693 Sweet Hitch-Hiker Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 175490 5716603 0.99 694 Someday Never Comes Chronicle, Vol. 1 MPEG audio file Rock J. C. Fogerty 239360 7945235 0.99 695 Walking On The Water Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 281286 9302129 0.99 696 Suzie-Q, Pt. 2 Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 244114 7986637 0.99 697 Born On The Bayou Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 316630 10361866 0.99 698 Good Golly Miss Molly Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 163604 5348175 0.99 699 Tombstone Shadow Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 218880 7209080 0.99 700 Wrote A Song For Everyone Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 296385 9675875 0.99 701 Night Time Is The Right Time Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 190119 6211173 0.99 702 Cotton Fields Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 178181 5919224 0.99 703 It Came Out Of The Sky Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 176718 5807474 0.99 704 Don't Look Now Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 131918 4366455 0.99 705 The Midnight Special Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 253596 8297482 0.99 706 Before You Accuse Me Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 207804 6815126 0.99 707 My Baby Left Me Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 140460 4633440 0.99 708 Pagan Baby Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 385619 12713813 0.99 709 (Wish I Could) Hideaway Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 228466 7432978 0.99 710 It's Just A Thought Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 237374 7778319 0.99 711 Molina Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 163239 5390811 0.99 712 Born To Move Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 342804 11260814 0.99 713 Lookin' For A Reason Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 209789 6933135 0.99 714 Hello Mary Lou Chronicle, Vol. 2 MPEG audio file Rock J.C. Fogerty 132832 4476563 0.99 715 Gatas Extraordinárias Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 212506 7095702 0.99 716 Brasil Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 243696 7911683 0.99 717 Eu Sou Neguinha (Ao Vivo) Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 251768 8376000 0.99 718 Geração Coca-Cola (Ao Vivo) Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 228153 7573301 0.99 719 Lanterna Dos Afogados Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 204538 6714582 0.99 720 Coroné Antonio Bento Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 200437 6713066 0.99 721 Você Passa, Eu Acho Graça (Ao Vivo) Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 206733 6943576 0.99 722 Meu Mundo Fica Completo (Com Você) Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 247771 8322240 0.99 723 1° De Julho Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 270262 9017535 0.99 724 Música Urbana 2 Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 194899 6383472 0.99 725 Vida Bandida (Ao Vivo) Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 192626 6360785 0.99 726 Palavras Ao Vento Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 212453 7048676 0.99 727 Não Sei O Que Eu Quero Da Vida Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 151849 5024963 0.99 728 Woman Is The Nigger Of The World (Ao Vivo) Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 298919 9724145 0.99 729 Juventude Transviada (Ao Vivo) Cássia Eller - Coleção Sem Limite [Disc 2] MPEG audio file Latin \N 278622 9183808 0.99 730 Malandragem Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 247588 8165048 0.99 731 O Segundo Sol Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 252133 8335629 0.99 732 Smells Like Teen Spirit (Ao Vivo) Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 316865 10384506 0.99 733 E.C.T. Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 227500 7571834 0.99 734 Todo Amor Que Houver Nesta Vida Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 227160 7420347 0.99 735 Metrô. Linha 743 Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 174654 5837495 0.99 736 Nós (Ao Vivo) Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 193828 6498661 0.99 737 Na Cadência Do Samba Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 196075 6483952 0.99 738 Admirável Gado Novo Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 274390 9144031 0.99 739 Eleanor Rigby Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 189466 6303205 0.99 740 Socorro Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 258586 8549393 0.99 741 Blues Da Piedade Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 257123 8472964 0.99 742 Rubens Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 211853 7026317 0.99 743 Não Deixe O Samba Morrer - Cassia Eller e Alcione Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 268173 8936345 0.99 744 Mis Penas Lloraba Yo (Ao Vivo) Soy Gitano (Tangos) Cássia Eller - Sem Limite [Disc 1] MPEG audio file Latin \N 188473 6195854 0.99 745 Comin' Home Come Taste The Band MPEG audio file Rock Bolin/Coverdale/Paice 235781 7644604 0.99 746 Lady Luck Come Taste The Band MPEG audio file Rock Cook/Coverdale 168202 5501379 0.99 747 Gettin' Tighter Come Taste The Band MPEG audio file Rock Bolin/Hughes 218044 7176909 0.99 748 Dealer Come Taste The Band MPEG audio file Rock Bolin/Coverdale 230922 7591066 0.99 749 I Need Love Come Taste The Band MPEG audio file Rock Bolin/Coverdale 263836 8701064 0.99 750 Drifter Come Taste The Band MPEG audio file Rock Bolin/Coverdale 242834 8001505 0.99 751 Love Child Come Taste The Band MPEG audio file Rock Bolin/Coverdale 188160 6173806 0.99 752 This Time Around / Owed to 'G' [Instrumental] Come Taste The Band MPEG audio file Rock Bolin/Hughes/Lord 370102 11995679 0.99 753 You Keep On Moving Come Taste The Band MPEG audio file Rock Coverdale/Hughes 319111 10447868 0.99 754 Speed King Deep Purple In Rock MPEG audio file Rock Blackmore, Gillan, Glover, Lord, Paice 264385 8587578 0.99 755 Bloodsucker Deep Purple In Rock MPEG audio file Rock Blackmore, Gillan, Glover, Lord, Paice 256261 8344405 0.99 756 Child In Time Deep Purple In Rock MPEG audio file Rock Blackmore, Gillan, Glover, Lord, Paice 620460 20230089 0.99 757 Flight Of The Rat Deep Purple In Rock MPEG audio file Rock Blackmore, Gillan, Glover, Lord, Paice 478302 15563967 0.99 758 Into The Fire Deep Purple In Rock MPEG audio file Rock Blackmore, Gillan, Glover, Lord, Paice 210259 6849310 0.99 759 Living Wreck Deep Purple In Rock MPEG audio file Rock Blackmore, Gillan, Glover, Lord, Paice 274886 8993056 0.99 760 Hard Lovin' Man Deep Purple In Rock MPEG audio file Rock Blackmore, Gillan, Glover, Lord, Paice 431203 13931179 0.99 761 Fireball Fireball MPEG audio file Rock Ritchie Blackmore, Ian Gillan, Roger Glover, Jon Lord, Ian Paice 204721 6714807 0.99 762 No No No Fireball MPEG audio file Rock Ritchie Blackmore, Ian Gillan, Roger Glover, Jon Lord, Ian Paice 414902 13646606 0.99 763 Strange Kind Of Woman Fireball MPEG audio file Rock Ritchie Blackmore, Ian Gillan, Roger Glover, Jon Lord, Ian Paice 247092 8072036 0.99 764 Anyone's Daughter Fireball MPEG audio file Rock Ritchie Blackmore, Ian Gillan, Roger Glover, Jon Lord, Ian Paice 284682 9354480 0.99 765 The Mule Fireball MPEG audio file Rock Ritchie Blackmore, Ian Gillan, Roger Glover, Jon Lord, Ian Paice 322063 10638390 0.99 766 Fools Fireball MPEG audio file Rock Ritchie Blackmore, Ian Gillan, Roger Glover, Jon Lord, Ian Paice 500427 16279366 0.99 767 No One Came Fireball MPEG audio file Rock Ritchie Blackmore, Ian Gillan, Roger Glover, Jon Lord, Ian Paice 385880 12643813 0.99 768 Knocking At Your Back Door Knocking at Your Back Door: The Best Of Deep Purple in the 80's MPEG audio file Rock Richie Blackmore, Ian Gillian, Roger Glover 424829 13779332 0.99 769 Bad Attitude Knocking at Your Back Door: The Best Of Deep Purple in the 80's MPEG audio file Rock Richie Blackmore, Ian Gillian, Roger Glover, Jon Lord 307905 10035180 0.99 770 Child In Time (Son Of Aleric - Instrumental) Knocking at Your Back Door: The Best Of Deep Purple in the 80's MPEG audio file Rock Richie Blackmore, Ian Gillian, Roger Glover, Jon Lord, Ian Paice 602880 19712753 0.99 771 Nobody's Home Knocking at Your Back Door: The Best Of Deep Purple in the 80's MPEG audio file Rock Richie Blackmore, Ian Gillian, Roger Glover, Jon Lord, Ian Paice 243017 7929493 0.99 772 Black Night Knocking at Your Back Door: The Best Of Deep Purple in the 80's MPEG audio file Rock Richie Blackmore, Ian Gillian, Roger Glover, Jon Lord, Ian Paice 368770 12058906 0.99 773 Perfect Strangers Knocking at Your Back Door: The Best Of Deep Purple in the 80's MPEG audio file Rock Richie Blackmore, Ian Gillian, Roger Glover 321149 10445353 0.99 774 The Unwritten Law Knocking at Your Back Door: The Best Of Deep Purple in the 80's MPEG audio file Rock Richie Blackmore, Ian Gillian, Roger Glover, Ian Paice 295053 9740361 0.99 775 Call Of The Wild Knocking at Your Back Door: The Best Of Deep Purple in the 80's MPEG audio file Rock Richie Blackmore, Ian Gillian, Roger Glover, Jon Lord 293851 9575295 0.99 776 Hush Knocking at Your Back Door: The Best Of Deep Purple in the 80's MPEG audio file Rock South 213054 6944928 0.99 777 Smoke On The Water Knocking at Your Back Door: The Best Of Deep Purple in the 80's MPEG audio file Rock Richie Blackmore, Ian Gillian, Roger Glover, Jon Lord, Ian Paice 464378 15180849 0.99 778 Space Trucking Knocking at Your Back Door: The Best Of Deep Purple in the 80's MPEG audio file Rock Richie Blackmore, Ian Gillian, Roger Glover, Jon Lord, Ian Paice 341185 11122183 0.99 779 Highway Star Machine Head MPEG audio file Rock Ian Gillan/Ian Paice/Jon Lord/Ritchie Blckmore/Roger Glover 368770 12012452 0.99 780 Maybe I'm A Leo Machine Head MPEG audio file Rock Ian Gillan/Ian Paice/Jon Lord/Ritchie Blckmore/Roger Glover 290455 9502646 0.99 781 Pictures Of Home Machine Head MPEG audio file Rock Ian Gillan/Ian Paice/Jon Lord/Ritchie Blckmore/Roger Glover 303777 9903835 0.99 782 Never Before Machine Head MPEG audio file Rock Ian Gillan/Ian Paice/Jon Lord/Ritchie Blckmore/Roger Glover 239830 7832790 0.99 783 Smoke On The Water Machine Head MPEG audio file Rock Ian Gillan/Ian Paice/Jon Lord/Ritchie Blckmore/Roger Glover 340871 11246496 0.99 784 Lazy Machine Head MPEG audio file Rock Ian Gillan/Ian Paice/Jon Lord/Ritchie Blckmore/Roger Glover 442096 14397671 0.99 785 Space Truckin' Machine Head MPEG audio file Rock Ian Gillan/Ian Paice/Jon Lord/Ritchie Blckmore/Roger Glover 272796 8981030 0.99 786 Vavoom : Ted The Mechanic Purpendicular MPEG audio file Rock Ian Gillan, Roger Glover, Jon Lord, Steve Morse, Ian Paice 257384 8510755 0.99 787 Loosen My Strings Purpendicular MPEG audio file Rock Ian Gillan, Roger Glover, Jon Lord, Steve Morse, Ian Paice 359680 11702232 0.99 788 Soon Forgotten Purpendicular MPEG audio file Rock Ian Gillan, Roger Glover, Jon Lord, Steve Morse, Ian Paice 287791 9401383 0.99 789 Sometimes I Feel Like Screaming Purpendicular MPEG audio file Rock Ian Gillan, Roger Glover, Jon Lord, Steve Morse, Ian Paice 451840 14789410 0.99 790 Cascades : I'm Not Your Lover Purpendicular MPEG audio file Rock Ian Gillan, Roger Glover, Jon Lord, Steve Morse, Ian Paice 283689 9209693 0.99 791 The Aviator Purpendicular MPEG audio file Rock Ian Gillan, Roger Glover, Jon Lord, Steve Morse, Ian Paice 320992 10532053 0.99 792 Rosa's Cantina Purpendicular MPEG audio file Rock Ian Gillan, Roger Glover, Jon Lord, Steve Morse, Ian Paice 312372 10323804 0.99 793 A Castle Full Of Rascals Purpendicular MPEG audio file Rock Ian Gillan, Roger Glover, Jon Lord, Steve Morse, Ian Paice 311693 10159566 0.99 794 A Touch Away Purpendicular MPEG audio file Rock Ian Gillan, Roger Glover, Jon Lord, Steve Morse, Ian Paice 276323 9098561 0.99 795 Hey Cisco Purpendicular MPEG audio file Rock Ian Gillan, Roger Glover, Jon Lord, Steve Morse, Ian Paice 354089 11600029 0.99 796 Somebody Stole My Guitar Purpendicular MPEG audio file Rock Ian Gillan, Roger Glover, Jon Lord, Steve Morse, Ian Paice 249443 8180421 0.99 797 The Purpendicular Waltz Purpendicular MPEG audio file Rock Ian Gillan, Roger Glover, Jon Lord, Steve Morse, Ian Paice 283924 9299131 0.99 798 King Of Dreams Slaves And Masters MPEG audio file Rock Blackmore, Glover, Turner 328385 10733847 0.99 799 The Cut Runs Deep Slaves And Masters MPEG audio file Rock Blackmore, Glover, Turner, Lord, Paice 342752 11191650 0.99 800 Fire In The Basement Slaves And Masters MPEG audio file Rock Blackmore, Glover, Turner, Lord, Paice 283977 9267550 0.99 801 Truth Hurts Slaves And Masters MPEG audio file Rock Blackmore, Glover, Turner 314827 10224612 0.99 802 Breakfast In Bed Slaves And Masters MPEG audio file Rock Blackmore, Glover, Turner 317126 10323804 0.99 803 Love Conquers All Slaves And Masters MPEG audio file Rock Blackmore, Glover, Turner 227186 7328516 0.99 804 Fortuneteller Slaves And Masters MPEG audio file Rock Blackmore, Glover, Turner, Lord, Paice 349335 11369671 0.99 805 Too Much Is Not Enough Slaves And Masters MPEG audio file Rock Turner, Held, Greenwood 257724 8382800 0.99 806 Wicked Ways Slaves And Masters MPEG audio file Rock Blackmore, Glover, Turner, Lord, Paice 393691 12826582 0.99 807 Stormbringer Stormbringer MPEG audio file Rock D.Coverdale/R.Blackmore/Ritchie Blackmore 246413 8044864 0.99 808 Love Don't Mean a Thing Stormbringer MPEG audio file Rock D.Coverdale/G.Hughes/Glenn Hughes/I.Paice/Ian Paice/J.Lord/John Lord/R.Blackmore/Ritchie Blackmore 263862 8675026 0.99 809 Holy Man Stormbringer MPEG audio file Rock D.Coverdale/G.Hughes/Glenn Hughes/J.Lord/John Lord 270236 8818093 0.99 810 Hold On Stormbringer MPEG audio file Rock D.Coverdal/G.Hughes/Glenn Hughes/I.Paice/Ian Paice/J.Lord/John Lord 306860 10022428 0.99 811 Lady Double Dealer Stormbringer MPEG audio file Rock D.Coverdale/R.Blackmore/Ritchie Blackmore 201482 6554330 0.99 812 You Can't Do it Right (With the One You Love) Stormbringer MPEG audio file Rock D.Coverdale/G.Hughes/Glenn Hughes/R.Blackmore/Ritchie Blackmore 203755 6709579 0.99 813 High Ball Shooter Stormbringer MPEG audio file Rock D.Coverdale/G.Hughes/Glenn Hughes/I.Paice/Ian Paice/J.Lord/John Lord/R.Blackmore/Ritchie Blackmore 267833 8772471 0.99 814 The Gypsy Stormbringer MPEG audio file Rock D.Coverdale/G.Hughes/Glenn Hughes/I.Paice/Ian Paice/J.Lord/John Lord/R.Blackmore/Ritchie Blackmore 242886 7946614 0.99 815 Soldier Of Fortune Stormbringer MPEG audio file Rock D.Coverdale/R.Blackmore/Ritchie Blackmore 193750 6315321 0.99 816 The Battle Rages On The Battle Rages On MPEG audio file Rock ian paice/jon lord 356963 11626228 0.99 817 Lick It Up The Battle Rages On MPEG audio file Rock roger glover 240274 7792604 0.99 818 Anya The Battle Rages On MPEG audio file Rock jon lord/roger glover 392437 12754921 0.99 819 Talk About Love The Battle Rages On MPEG audio file Rock roger glover 247823 8072171 0.99 820 Time To Kill The Battle Rages On MPEG audio file Rock roger glover 351033 11354742 0.99 821 Ramshackle Man The Battle Rages On MPEG audio file Rock roger glover 334445 10874679 0.99 822 A Twist In The Tail The Battle Rages On MPEG audio file Rock roger glover 257462 8413103 0.99 823 Nasty Piece Of Work The Battle Rages On MPEG audio file Rock jon lord/roger glover 276662 9076997 0.99 824 Solitaire The Battle Rages On MPEG audio file Rock roger glover 282226 9157021 0.99 825 One Man's Meat The Battle Rages On MPEG audio file Rock roger glover 278804 9068960 0.99 826 Pour Some Sugar On Me Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 292519 9518842 0.99 827 Photograph Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 248633 8108507 0.99 828 Love Bites Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 346853 11305791 0.99 829 Let's Get Rocked Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 296019 9724150 0.99 830 Two Steps Behind [Acoustic Version] Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 259787 8523388 0.99 831 Animal Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 244741 7985133 0.99 832 Heaven Is Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 214021 6988128 0.99 833 Rocket Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 247248 8092463 0.99 834 When Love & Hate Collide Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 257280 8364633 0.99 835 Action Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 220604 7130830 0.99 836 Make Love Like A Man Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 255660 8309725 0.99 837 Armageddon It Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 322455 10522352 0.99 838 Have You Ever Needed Someone So Bad Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 319320 10400020 0.99 839 Rock Of Ages Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 248424 8150318 0.99 840 Hysteria Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 355056 11622738 0.99 841 Bringin' On The Heartbreak Vault: Def Leppard's Greatest Hits MPEG audio file Rock \N 272457 8853324 0.99 842 Roll Call Outbreak MPEG audio file Jazz Jim Beard 321358 10653494 0.99 843 Otay Outbreak MPEG audio file Jazz John Scofield, Robert Aries, Milton Chambers and Gary Grainger 423653 14176083 0.99 844 Groovus Interruptus Outbreak MPEG audio file Jazz Jim Beard 319373 10602166 0.99 845 Paris On Mine Outbreak MPEG audio file Jazz Jon Herington 368875 12059507 0.99 846 In Time Outbreak MPEG audio file Jazz Sylvester Stewart 368953 12287103 0.99 847 Plan B Outbreak MPEG audio file Jazz Dean Brown, Dennis Chambers & Jim Beard 272039 9032315 0.99 848 Outbreak Outbreak MPEG audio file Jazz Jim Beard & Jon Herington 659226 21685807 0.99 849 Baltimore, DC Outbreak MPEG audio file Jazz John Scofield 346932 11394473 0.99 850 Talkin Loud and Saying Nothin Outbreak MPEG audio file Jazz James Brown & Bobby Byrd 360411 11994859 0.99 851 Pétala Djavan Ao Vivo - Vol. 02 MPEG audio file Latin \N 270080 8856165 0.99 852 Meu Bem-Querer Djavan Ao Vivo - Vol. 02 MPEG audio file Latin \N 255608 8330047 0.99 853 Cigano Djavan Ao Vivo - Vol. 02 MPEG audio file Latin \N 304692 10037362 0.99 854 Boa Noite Djavan Ao Vivo - Vol. 02 MPEG audio file Latin \N 338755 11283582 0.99 855 Fato Consumado Djavan Ao Vivo - Vol. 02 MPEG audio file Latin \N 211565 7018586 0.99 856 Faltando Um Pedaço Djavan Ao Vivo - Vol. 02 MPEG audio file Latin \N 267728 8788760 0.99 857 Álibi Djavan Ao Vivo - Vol. 02 MPEG audio file Latin \N 213237 6928434 0.99 858 Esquinas Djavan Ao Vivo - Vol. 02 MPEG audio file Latin \N 280999 9096726 0.99 859 Se... Djavan Ao Vivo - Vol. 02 MPEG audio file Latin \N 286432 9413777 0.99 860 Eu Te Devoro Djavan Ao Vivo - Vol. 02 MPEG audio file Latin \N 311614 10312775 0.99 861 Lilás Djavan Ao Vivo - Vol. 02 MPEG audio file Latin \N 274181 9049542 0.99 862 Acelerou Djavan Ao Vivo - Vol. 02 MPEG audio file Latin \N 284081 9396942 0.99 863 Um Amor Puro Djavan Ao Vivo - Vol. 02 MPEG audio file Latin \N 327784 10687311 0.99 864 Samurai Djavan Ao Vivo - Vol. 1 MPEG audio file Latin Djavan 330997 10872787 0.99 865 Nem Um Dia Djavan Ao Vivo - Vol. 1 MPEG audio file Latin Djavan 337423 11181446 0.99 866 Oceano Djavan Ao Vivo - Vol. 1 MPEG audio file Latin Djavan 217338 7026441 0.99 867 Açai Djavan Ao Vivo - Vol. 1 MPEG audio file Latin Djavan 270968 8893682 0.99 868 Serrado Djavan Ao Vivo - Vol. 1 MPEG audio file Latin Djavan 295314 9842240 0.99 869 Flor De Lis Djavan Ao Vivo - Vol. 1 MPEG audio file Latin Djavan 236355 7801108 0.99 870 Amar É Tudo Djavan Ao Vivo - Vol. 1 MPEG audio file Latin Djavan 211617 7073899 0.99 871 Azul Djavan Ao Vivo - Vol. 1 MPEG audio file Latin Djavan 253962 8381029 0.99 872 Seduzir Djavan Ao Vivo - Vol. 1 MPEG audio file Latin Djavan 277524 9163253 0.99 873 A Carta Djavan Ao Vivo - Vol. 1 MPEG audio file Latin Djavan - Gabriel, O Pensador 347297 11493463 0.99 874 Sina Djavan Ao Vivo - Vol. 1 MPEG audio file Latin Djavan 268173 8906539 0.99 875 Acelerou Djavan Ao Vivo - Vol. 1 MPEG audio file Latin Djavan 284133 9391439 0.99 876 Um Amor Puro Djavan Ao Vivo - Vol. 1 MPEG audio file Latin Djavan 327105 10664698 0.99 877 O Bêbado e a Equilibrista Elis Regina-Minha História MPEG audio file Latin \N 223059 7306143 0.99 878 O Mestre-Sala dos Mares Elis Regina-Minha História MPEG audio file Latin \N 186226 6180414 0.99 879 Atrás da Porta Elis Regina-Minha História MPEG audio file Latin \N 166608 5432518 0.99 880 Dois Pra Lá, Dois Pra Cá Elis Regina-Minha História MPEG audio file Latin \N 263026 8684639 0.99 881 Casa no Campo Elis Regina-Minha História MPEG audio file Latin \N 170788 5531841 0.99 882 Romaria Elis Regina-Minha História MPEG audio file Latin \N 242834 7968525 0.99 883 Alô, Alô, Marciano Elis Regina-Minha História MPEG audio file Latin \N 241397 8137254 0.99 884 Me Deixas Louca Elis Regina-Minha História MPEG audio file Latin \N 214831 6888030 0.99 885 Fascinação Elis Regina-Minha História MPEG audio file Latin \N 180793 5793959 0.99 886 Saudosa Maloca Elis Regina-Minha História MPEG audio file Latin \N 278125 9059416 0.99 887 As Aparências Enganam Elis Regina-Minha História MPEG audio file Latin \N 247379 8014346 0.99 888 Madalena Elis Regina-Minha História MPEG audio file Latin \N 157387 5243721 0.99 889 Maria Rosa Elis Regina-Minha História MPEG audio file Latin \N 232803 7592504 0.99 890 Aprendendo A Jogar Elis Regina-Minha História MPEG audio file Latin \N 290664 9391041 0.99 891 Layla The Cream Of Clapton MPEG audio file Blues Clapton/Gordon 430733 14115792 0.99 892 Badge The Cream Of Clapton MPEG audio file Blues Clapton/Harrison 163552 5322942 0.99 893 I Feel Free The Cream Of Clapton MPEG audio file Blues Bruce/Clapton 174576 5725684 0.99 894 Sunshine Of Your Love The Cream Of Clapton MPEG audio file Blues Bruce/Clapton 252891 8225889 0.99 895 Crossroads The Cream Of Clapton MPEG audio file Blues Clapton/Robert Johnson Arr: Eric Clapton 253335 8273540 0.99 896 Strange Brew The Cream Of Clapton MPEG audio file Blues Clapton/Collins/Pappalardi 167810 5489787 0.99 897 White Room The Cream Of Clapton MPEG audio file Blues Bruce/Clapton 301583 9872606 0.99 898 Bell Bottom Blues The Cream Of Clapton MPEG audio file Blues Clapton 304744 9946681 0.99 899 Cocaine The Cream Of Clapton MPEG audio file Blues Cale/Clapton 215928 7138399 0.99 900 I Shot The Sheriff The Cream Of Clapton MPEG audio file Blues Marley 263862 8738973 0.99 901 After Midnight The Cream Of Clapton MPEG audio file Blues Clapton/J. J. Cale 191320 6460941 0.99 902 Swing Low Sweet Chariot The Cream Of Clapton MPEG audio file Blues Clapton/Trad. Arr. Clapton 208143 6896288 0.99 903 Lay Down Sally The Cream Of Clapton MPEG audio file Blues Clapton/Levy 231732 7774207 0.99 904 Knockin On Heavens Door The Cream Of Clapton MPEG audio file Blues Clapton/Dylan 264411 8758819 0.99 905 Wonderful Tonight The Cream Of Clapton MPEG audio file Blues Clapton 221387 7326923 0.99 906 Let It Grow The Cream Of Clapton MPEG audio file Blues Clapton 297064 9742568 0.99 907 Promises The Cream Of Clapton MPEG audio file Blues Clapton/F.eldman/Linn 180401 6006154 0.99 908 I Can't Stand It The Cream Of Clapton MPEG audio file Blues Clapton 249730 8271980 0.99 909 Signe Unplugged MPEG audio file Blues Eric Clapton 193515 6475042 0.99 910 Before You Accuse Me Unplugged MPEG audio file Blues Eugene McDaniel 224339 7456807 0.99 911 Hey Hey Unplugged MPEG audio file Blues Big Bill Broonzy 196466 6543487 0.99 912 Tears In Heaven Unplugged MPEG audio file Blues Eric Clapton, Will Jennings 274729 9032835 0.99 913 Lonely Stranger Unplugged MPEG audio file Blues Eric Clapton 328724 10894406 0.99 914 Nobody Knows You When You're Down & Out Unplugged MPEG audio file Blues Jimmy Cox 231836 7669922 0.99 915 Layla Unplugged MPEG audio file Blues Eric Clapton, Jim Gordon 285387 9490542 0.99 916 Running On Faith Unplugged MPEG audio file Blues Jerry Lynn Williams 378984 12536275 0.99 917 Walkin' Blues Unplugged MPEG audio file Blues Robert Johnson 226429 7435192 0.99 918 Alberta Unplugged MPEG audio file Blues Traditional 222406 7412975 0.99 919 San Francisco Bay Blues Unplugged MPEG audio file Blues Jesse Fuller 203363 6724021 0.99 920 Malted Milk Unplugged MPEG audio file Blues Robert Johnson 216528 7096781 0.99 921 Old Love Unplugged MPEG audio file Blues Eric Clapton, Robert Cray 472920 15780747 0.99 922 Rollin' And Tumblin' Unplugged MPEG audio file Blues McKinley Morgenfield (Muddy Waters) 251768 8407355 0.99 923 Collision Album Of The Year MPEG audio file Alternative & Punk Jon Hudson/Mike Patton 204303 6656596 0.99 924 Stripsearch Album Of The Year MPEG audio file Alternative & Punk Jon Hudson/Mike Bordin/Mike Patton 270106 8861119 0.99 925 Last Cup Of Sorrow Album Of The Year MPEG audio file Alternative & Punk Bill Gould/Mike Patton 251663 8221247 0.99 926 Naked In Front Of The Computer Album Of The Year MPEG audio file Alternative & Punk Mike Patton 128757 4225077 0.99 927 Helpless Album Of The Year MPEG audio file Alternative & Punk Bill Gould/Mike Bordin/Mike Patton 326217 10753135 0.99 928 Mouth To Mouth Album Of The Year MPEG audio file Alternative & Punk Bill Gould/Jon Hudson/Mike Bordin/Mike Patton 228493 7505887 0.99 929 Ashes To Ashes Album Of The Year MPEG audio file Alternative & Punk Bill Gould/Jon Hudson/Mike Bordin/Mike Patton/Roddy Bottum 217391 7093746 0.99 930 She Loves Me Not Album Of The Year MPEG audio file Alternative & Punk Bill Gould/Mike Bordin/Mike Patton 209867 6887544 0.99 931 Got That Feeling Album Of The Year MPEG audio file Alternative & Punk Mike Patton 140852 4643227 0.99 932 Paths Of Glory Album Of The Year MPEG audio file Alternative & Punk Bill Gould/Jon Hudson/Mike Bordin/Mike Patton/Roddy Bottum 257253 8436300 0.99 933 Home Sick Home Album Of The Year MPEG audio file Alternative & Punk Mike Patton 119040 3898976 0.99 934 Pristina Album Of The Year MPEG audio file Alternative & Punk Bill Gould/Mike Patton 232698 7497361 0.99 935 Land Of Sunshine Angel Dust MPEG audio file Alternative & Punk \N 223921 7353567 0.99 936 Caffeine Angel Dust MPEG audio file Alternative & Punk \N 267937 8747367 0.99 937 Midlife Crisis Angel Dust MPEG audio file Alternative & Punk \N 263235 8628841 0.99 938 RV Angel Dust MPEG audio file Alternative & Punk \N 223242 7288162 0.99 939 Smaller And Smaller Angel Dust MPEG audio file Alternative & Punk \N 310831 10180103 0.99 940 Everything's Ruined Angel Dust MPEG audio file Alternative & Punk \N 273658 9010917 0.99 941 Malpractice Angel Dust MPEG audio file Alternative & Punk \N 241371 7900683 0.99 942 Kindergarten Angel Dust MPEG audio file Alternative & Punk \N 270680 8853647 0.99 943 Be Aggressive Angel Dust MPEG audio file Alternative & Punk \N 222432 7298027 0.99 944 A Small Victory Angel Dust MPEG audio file Alternative & Punk \N 297168 9733572 0.99 945 Crack Hitler Angel Dust MPEG audio file Alternative & Punk \N 279144 9162435 0.99 946 Jizzlobber Angel Dust MPEG audio file Alternative & Punk \N 398341 12926140 0.99 947 Midnight Cowboy Angel Dust MPEG audio file Alternative & Punk \N 251924 8242626 0.99 948 Easy Angel Dust MPEG audio file Alternative & Punk \N 185835 6073008 0.99 949 Get Out King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton 137482 4524972 0.99 950 Ricochet King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton 269400 8808812 0.99 951 Evidence King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton, Trey Spruance 293590 9626136 0.99 952 The Gentle Art Of Making Enemies King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton 209319 6908609 0.99 953 Star A.D. King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton 203807 6747658 0.99 954 Cuckoo For Caca King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton, Trey Spruance 222902 7388369 0.99 955 Caralho Voador King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton, Trey Spruance 242102 8029054 0.99 956 Ugly In The Morning King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton 186435 6224997 0.99 957 Digging The Grave King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton 185129 6109259 0.99 958 Take This Bottle King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton, Trey Spruance 298997 9779971 0.99 959 King For A Day King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton, Trey Spruance 395859 13163733 0.99 960 What A Day King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton 158275 5203430 0.99 961 The Last To Know King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton 267833 8736776 0.99 962 Just A Man King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton 336666 11031254 0.99 963 Absolute Zero King For A Day Fool For A Lifetime MPEG audio file Rock Mike Bordin, Billy Gould, Mike Patton 181995 5929427 0.99 964 From Out Of Nowhere The Real Thing MPEG audio file Alternative & Punk Faith No More 202527 6587802 0.99 965 Epic The Real Thing MPEG audio file Alternative & Punk Faith No More 294008 9631296 0.99 966 Falling To Pieces The Real Thing MPEG audio file Alternative & Punk Faith No More 316055 10333123 0.99 967 Surprise! You're Dead! The Real Thing MPEG audio file Alternative & Punk Faith No More 147226 4823036 0.99 968 Zombie Eaters The Real Thing MPEG audio file Alternative & Punk Faith No More 360881 11835367 0.99 969 The Real Thing The Real Thing MPEG audio file Alternative & Punk Faith No More 493635 16233080 0.99 970 Underwater Love The Real Thing MPEG audio file Alternative & Punk Faith No More 231993 7634387 0.99 971 The Morning After The Real Thing MPEG audio file Alternative & Punk Faith No More 223764 7355898 0.99 972 Woodpecker From Mars The Real Thing MPEG audio file Alternative & Punk Faith No More 340532 11174250 0.99 973 War Pigs The Real Thing MPEG audio file Alternative & Punk Tony Iommi, Bill Ward, Geezer Butler, Ozzy Osbourne 464770 15267802 0.99 974 Edge Of The World The Real Thing MPEG audio file Alternative & Punk Faith No More 250357 8235607 0.99 975 Deixa Entrar Deixa Entrar MPEG audio file Latin \N 33619 1095012 0.99 976 Falamansa Song Deixa Entrar MPEG audio file Latin \N 237165 7921313 0.99 977 Xote Dos Milagres Deixa Entrar MPEG audio file Latin \N 269557 8897778 0.99 978 Rindo À Toa Deixa Entrar MPEG audio file Latin \N 222066 7365321 0.99 979 Confidência Deixa Entrar MPEG audio file Latin \N 222197 7460829 0.99 980 Forró De Tóquio Deixa Entrar MPEG audio file Latin \N 169273 5588756 0.99 981 Zeca Violeiro Deixa Entrar MPEG audio file Latin \N 143673 4781949 0.99 982 Avisa Deixa Entrar MPEG audio file Latin \N 355030 11844320 0.99 983 Principiando/Decolagem Deixa Entrar MPEG audio file Latin \N 116767 3923789 0.99 984 Asas Deixa Entrar MPEG audio file Latin \N 231915 7711669 0.99 985 Medo De Escuro Deixa Entrar MPEG audio file Latin \N 213760 7056323 0.99 986 Oração Deixa Entrar MPEG audio file Latin \N 271072 9003882 0.99 987 Minha Gata Deixa Entrar MPEG audio file Latin \N 181838 6039502 0.99 988 Desaforo Deixa Entrar MPEG audio file Latin \N 174524 5853561 0.99 989 In Your Honor In Your Honor [Disc 1] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett 230191 7468463 0.99 990 No Way Back In Your Honor [Disc 1] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett 196675 6421400 0.99 991 Best Of You In Your Honor [Disc 1] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett 255712 8363467 0.99 992 DOA In Your Honor [Disc 1] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett 252186 8232342 0.99 993 Hell In Your Honor [Disc 1] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett 117080 3819255 0.99 994 The Last Song In Your Honor [Disc 1] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett 199523 6496742 0.99 995 Free Me In Your Honor [Disc 1] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett 278700 9109340 0.99 996 Resolve In Your Honor [Disc 1] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett 288731 9416186 0.99 997 The Deepest Blues Are Black In Your Honor [Disc 1] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett 238419 7735473 0.99 998 End Over End In Your Honor [Disc 1] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett 352078 11395296 0.99 999 Still In Your Honor [Disc 2] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett/FOO FIGHTERS 313182 10323157 0.99 1000 What If I Do? In Your Honor [Disc 2] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett/FOO FIGHTERS 302994 9929799 0.99 1001 Miracle In Your Honor [Disc 2] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett/FOO FIGHTERS 209684 6877994 0.99 1002 Another Round In Your Honor [Disc 2] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett/FOO FIGHTERS 265848 8752670 0.99 1003 Friend Of A Friend In Your Honor [Disc 2] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett/FOO FIGHTERS 193280 6355088 0.99 1004 Over And Out In Your Honor [Disc 2] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett/FOO FIGHTERS 316264 10428382 0.99 1005 On The Mend In Your Honor [Disc 2] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett/FOO FIGHTERS 271908 9071997 0.99 1006 Virginia Moon In Your Honor [Disc 2] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett/FOO FIGHTERS 229198 7494639 0.99 1007 Cold Day In The Sun In Your Honor [Disc 2] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett/FOO FIGHTERS 200724 6596617 0.99 1008 Razor In Your Honor [Disc 2] MPEG audio file Rock Dave Grohl, Taylor Hawkins, Nate Mendel, Chris Shiflett/FOO FIGHTERS 293276 9721373 0.99 1009 All My Life One By One MPEG audio file Alternative & Punk Foo Fighters 263653 8665545 0.99 1010 Low One By One MPEG audio file Alternative & Punk Foo Fighters 268120 8847196 0.99 1011 Have It All One By One MPEG audio file Alternative & Punk Foo Fighters 298057 9729292 0.99 1012 Times Like These One By One MPEG audio file Alternative & Punk Foo Fighters 266370 8624691 0.99 1013 Disenchanted Lullaby One By One MPEG audio file Alternative & Punk Foo Fighters 273528 8919111 0.99 1014 Tired Of You One By One MPEG audio file Alternative & Punk Foo Fighters 311353 10094743 0.99 1015 Halo One By One MPEG audio file Alternative & Punk Foo Fighters 306442 10026371 0.99 1016 Lonely As You One By One MPEG audio file Alternative & Punk Foo Fighters 277185 9022628 0.99 1017 Overdrive One By One MPEG audio file Alternative & Punk Foo Fighters 270550 8793187 0.99 1018 Burn Away One By One MPEG audio file Alternative & Punk Foo Fighters 298396 9678073 0.99 1019 Come Back One By One MPEG audio file Alternative & Punk Foo Fighters 469968 15371980 0.99 1020 Doll The Colour And The Shape MPEG audio file Rock Dave, Taylor, Nate, Chris 83487 2702572 0.99 1021 Monkey Wrench The Colour And The Shape MPEG audio file Rock Dave, Taylor, Nate, Chris 231523 7527531 0.99 1022 Hey, Johnny Park! The Colour And The Shape MPEG audio file Rock Dave, Taylor, Nate, Chris 248528 8079480 0.99 1023 My Poor Brain The Colour And The Shape MPEG audio file Rock Dave, Taylor, Nate, Chris 213446 6973746 0.99 1024 Wind Up The Colour And The Shape MPEG audio file Rock Dave, Taylor, Nate, Chris 152163 4950667 0.99 1025 Up In Arms The Colour And The Shape MPEG audio file Rock Dave, Taylor, Nate, Chris 135732 4406227 0.99 1026 My Hero The Colour And The Shape MPEG audio file Rock Dave, Taylor, Nate, Chris 260101 8472365 0.99 1027 See You The Colour And The Shape MPEG audio file Rock Dave, Taylor, Nate, Chris 146782 4888173 0.99 1028 Enough Space The Colour And The Shape MPEG audio file Rock Dave Grohl 157387 5169280 0.99 1029 February Stars The Colour And The Shape MPEG audio file Rock Dave, Taylor, Nate, Chris 289306 9344875 0.99 1030 Everlong The Colour And The Shape MPEG audio file Rock Dave Grohl 250749 8270816 0.99 1031 Walking After You The Colour And The Shape MPEG audio file Rock Dave Grohl 303856 9898992 0.99 1032 New Way Home The Colour And The Shape MPEG audio file Rock Dave, Taylor, Nate, Chris 342230 11205664 0.99 1033 My Way My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening claude françois/gilles thibault/jacques revaux/paul anka 275879 8928684 0.99 1034 Strangers In The Night My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening berthold kaempfert/charles singleton/eddie snyder 155794 5055295 0.99 1035 New York, New York My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening fred ebb/john kander 206001 6707993 0.99 1036 I Get A Kick Out Of You My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening cole porter 194429 6332441 0.99 1037 Something Stupid My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening carson c. parks 158615 5210643 0.99 1038 Moon River My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening henry mancini/johnny mercer 198922 6395808 0.99 1039 What Now My Love My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening carl sigman/gilbert becaud/pierre leroyer 149995 4913383 0.99 1040 Summer Love My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening hans bradtke/heinz meier/johnny mercer 174994 5693242 0.99 1041 For Once In My Life My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening orlando murden/ronald miller 171154 5557537 0.99 1042 Love And Marriage My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening jimmy van heusen/sammy cahn 89730 2930596 0.99 1043 They Can't Take That Away From Me My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening george gershwin/ira gershwin 161227 5240043 0.99 1044 My Kind Of Town My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening jimmy van heusen/sammy cahn 188499 6119915 0.99 1045 Fly Me To The Moon My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening bart howard 149263 4856954 0.99 1046 I've Got You Under My Skin My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening cole porter 210808 6883787 0.99 1047 The Best Is Yet To Come My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening carolyn leigh/cy coleman 173583 5633730 0.99 1048 It Was A Very Good Year My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening ervin drake 266605 8554066 0.99 1049 Come Fly With Me My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening jimmy van heusen/sammy cahn 190458 6231029 0.99 1050 That's Life My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening dean kay thompson/kelly gordon 187010 6095727 0.99 1051 The Girl From Ipanema My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening antonio carlos jobim/norman gimbel/vinicius de moraes 193750 6410674 0.99 1052 The Lady Is A Tramp My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening lorenz hart/richard rodgers 184111 5987372 0.99 1053 Bad, Bad Leroy Brown My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening jim croce 169900 5548581 0.99 1054 Mack The Knife My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening bert brecht/kurt weill/marc blitzstein 292075 9541052 0.99 1055 Loves Been Good To Me My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening rod mckuen 203964 6645365 0.99 1056 L.A. Is My Lady My Way: The Best Of Frank Sinatra [Disc 1] MPEG audio file Easy Listening alan bergman/marilyn bergman/peggy lipton jones/quincy jones 193175 6378511 0.99 1057 Entrando Na Sua (Intro) Roda De Funk MPEG audio file Latin \N 179252 5840027 0.99 1058 Nervosa Roda De Funk MPEG audio file Latin \N 229537 7680421 0.99 1059 Funk De Bamba (Com Fernanda Abreu) Roda De Funk MPEG audio file Latin \N 237191 7866165 0.99 1060 Call Me At Cleo´s Roda De Funk MPEG audio file Latin \N 236617 7920510 0.99 1061 Olhos Coloridos (Com Sandra De Sá) Roda De Funk MPEG audio file Latin \N 321332 10567404 0.99 1062 Zambação Roda De Funk MPEG audio file Latin \N 301113 10030604 0.99 1063 Funk Hum Roda De Funk MPEG audio file Latin \N 244453 8084475 0.99 1064 Forty Days (Com DJ Hum) Roda De Funk MPEG audio file Latin \N 221727 7347172 0.99 1065 Balada Da Paula Roda De Funk MPEG audio file Latin Emerson Villani 322821 10603717 0.99 1066 Dujji Roda De Funk MPEG audio file Latin \N 324597 10833935 0.99 1067 Meu Guarda-Chuva Roda De Funk MPEG audio file Latin \N 248528 8216625 0.99 1068 Motéis Roda De Funk MPEG audio file Latin \N 213498 7041077 0.99 1069 Whistle Stop Roda De Funk MPEG audio file Latin \N 526132 17533664 0.99 1070 16 Toneladas Roda De Funk MPEG audio file Latin \N 191634 6390885 0.99 1071 Divirta-Se (Saindo Da Sua) Roda De Funk MPEG audio file Latin \N 74919 2439206 0.99 1072 Forty Days Instrumental Roda De Funk MPEG audio file Latin \N 292493 9584317 0.99 1073 Óia Eu Aqui De Novo As Canções de Eu Tu Eles MPEG audio file Soundtrack \N 219454 7469735 0.99 1074 Baião Da Penha As Canções de Eu Tu Eles MPEG audio file Soundtrack \N 247928 8393047 0.99 1075 Esperando Na Janela As Canções de Eu Tu Eles MPEG audio file Soundtrack Manuca/Raimundinho DoAcordion/Targino Godim 261041 8660617 0.99 1076 Juazeiro As Canções de Eu Tu Eles MPEG audio file Soundtrack Humberto Teixeira/Luiz Gonzaga 222275 7349779 0.99 1077 Último Pau-De-Arara As Canções de Eu Tu Eles MPEG audio file Soundtrack Corumbá/José Gumarães/Venancio 200437 6638563 0.99 1078 Asa Branca As Canções de Eu Tu Eles MPEG audio file Soundtrack Humberto Teixeira/Luiz Gonzaga 217051 7387183 0.99 1079 Qui Nem Jiló As Canções de Eu Tu Eles MPEG audio file Soundtrack Humberto Teixeira/Luiz Gonzaga 204695 6937472 0.99 1080 Assum Preto As Canções de Eu Tu Eles MPEG audio file Soundtrack Humberto Teixeira/Luiz Gonzaga 199653 6625000 0.99 1081 Pau-De-Arara As Canções de Eu Tu Eles MPEG audio file Soundtrack Guio De Morais E Seus "Parentes"/Luiz Gonzaga 191660 6340649 0.99 1082 A Volta Da Asa Branca As Canções de Eu Tu Eles MPEG audio file Soundtrack Luiz Gonzaga/Zé Dantas 271020 9098093 0.99 1083 O Amor Daqui De Casa As Canções de Eu Tu Eles MPEG audio file Soundtrack Gilberto Gil 148636 4888292 0.99 1084 As Pegadas Do Amor As Canções de Eu Tu Eles MPEG audio file Soundtrack Gilberto Gil 209136 6899062 0.99 1085 Lamento Sertanejo As Canções de Eu Tu Eles MPEG audio file Soundtrack Dominguinhos/Gilberto Gil 260963 8518290 0.99 1086 Casinha Feliz As Canções de Eu Tu Eles MPEG audio file Soundtrack Gilberto Gil 32287 1039615 0.99 1087 Introdução (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 154096 5227579 0.99 1088 Palco (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 238315 8026622 0.99 1089 Is This Love (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 295262 9819759 0.99 1090 Stir It Up (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 282409 9594738 0.99 1091 Refavela (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 236695 7985305 0.99 1092 Vendedor De Caranguejo (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 248842 8358128 0.99 1093 Quanta (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 357485 11774865 0.99 1094 Estrela (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 285309 9436411 0.99 1095 Pela Internet (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 263471 8804401 0.99 1096 Cérebro Eletrônico (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 231627 7805352 0.99 1097 Opachorô (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 259526 8596384 0.99 1098 Copacabana (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 289671 9673672 0.99 1099 A Novidade (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 316969 10508000 0.99 1100 Ghandi (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 222458 7481950 0.99 1101 De Ouro E Marfim (Live) Quanta Gente Veio Ver (Live) MPEG audio file Latin \N 234971 7838453 0.99 1102 Doce De Carnaval (Candy All) Quanta Gente Veio ver--Bônus De Carnaval MPEG audio file Jazz \N 356101 11998470 0.99 1103 Lamento De Carnaval Quanta Gente Veio ver--Bônus De Carnaval MPEG audio file Jazz \N 294530 9819276 0.99 1104 Pretinha Quanta Gente Veio ver--Bônus De Carnaval MPEG audio file Jazz \N 265273 8914579 0.99 1105 A Novidade Unplugged MPEG audio file Latin Gilberto Gil 324780 10765600 0.99 1106 Tenho Sede Unplugged MPEG audio file Latin Gilberto Gil 261616 8708114 0.99 1107 Refazenda Unplugged MPEG audio file Latin Gilberto Gil 218305 7237784 0.99 1108 Realce Unplugged MPEG audio file Latin Gilberto Gil 264489 8847612 0.99 1109 Esotérico Unplugged MPEG audio file Latin Gilberto Gil 317779 10530533 0.99 1110 Drão Unplugged MPEG audio file Latin Gilberto Gil 301453 9931950 0.99 1111 A Paz Unplugged MPEG audio file Latin Gilberto Gil 293093 9593064 0.99 1112 Beira Mar Unplugged MPEG audio file Latin Gilberto Gil 295444 9597994 0.99 1113 Sampa Unplugged MPEG audio file Latin Gilberto Gil 225697 7469905 0.99 1114 Parabolicamará Unplugged MPEG audio file Latin Gilberto Gil 284943 9543435 0.99 1115 Tempo Rei Unplugged MPEG audio file Latin Gilberto Gil 302733 10019269 0.99 1116 Expresso 2222 Unplugged MPEG audio file Latin Gilberto Gil 284760 9690577 0.99 1117 Aquele Abraço Unplugged MPEG audio file Latin Gilberto Gil 263993 8805003 0.99 1118 Palco Unplugged MPEG audio file Latin Gilberto Gil 270550 9049901 0.99 1119 Toda Menina Baiana Unplugged MPEG audio file Latin Gilberto Gil 278177 9351000 0.99 1120 Sítio Do Pica-Pau Amarelo Unplugged MPEG audio file Latin Gilberto Gil 218070 7217955 0.99 1121 Straight Out Of Line Faceless MPEG audio file Metal Sully Erna 259213 8511877 0.99 1122 Faceless Faceless MPEG audio file Metal Sully Erna 216006 6992417 0.99 1123 Changes Faceless MPEG audio file Metal Sully Erna; Tony Rombola 260022 8455835 0.99 1124 Make Me Believe Faceless MPEG audio file Metal Sully Erna 248607 8075050 0.99 1125 I Stand Alone Faceless MPEG audio file Metal Sully Erna 246125 8017041 0.99 1126 Re-Align Faceless MPEG audio file Metal Sully Erna 260884 8513891 0.99 1127 I Fucking Hate You Faceless MPEG audio file Metal Sully Erna 247170 8059642 0.99 1128 Releasing The Demons Faceless MPEG audio file Metal Sully Erna 252760 8276372 0.99 1129 Dead And Broken Faceless MPEG audio file Metal Sully Erna 251454 8206611 0.99 1130 I Am Faceless MPEG audio file Metal Sully Erna 239516 7803270 0.99 1131 The Awakening Faceless MPEG audio file Metal Sully Erna 89547 3035251 0.99 1132 Serenity Faceless MPEG audio file Metal Sully Erna; Tony Rombola 274834 9172976 0.99 1133 American Idiot American Idiot MPEG audio file Alternative & Punk Billie Joe Armstrong, Mike Dirnt, Tré Cool 174419 5705793 0.99 1134 Jesus Of Suburbia / City Of The Damned / I Don't Care / Dearly Beloved / Tales Of Another Broken Home American Idiot MPEG audio file Alternative & Punk Billie Joe Armstrong/Green Day 548336 17875209 0.99 1135 Holiday American Idiot MPEG audio file Alternative & Punk Billie Joe Armstrong, Mike Dirnt, Tré Cool 232724 7599602 0.99 1136 Boulevard Of Broken Dreams American Idiot MPEG audio file Alternative & Punk Mike Dint, Billie Joe, Tré Cool 260858 8485122 0.99 1137 Are We The Waiting American Idiot MPEG audio file Alternative & Punk Green Day 163004 5328329 0.99 1138 St. Jimmy American Idiot MPEG audio file Alternative & Punk Green Day 175307 5716589 0.99 1139 Give Me Novacaine American Idiot MPEG audio file Alternative & Punk Green Day 205871 6752485 0.99 1140 She's A Rebel American Idiot MPEG audio file Alternative & Punk Green Day 120528 3901226 0.99 1141 Extraordinary Girl American Idiot MPEG audio file Alternative & Punk Green Day 214021 6975177 0.99 1142 Letterbomb American Idiot MPEG audio file Alternative & Punk Green Day 246151 7980902 0.99 1143 Wake Me Up When September Ends American Idiot MPEG audio file Alternative & Punk Mike Dint, Billie Joe, Tré Cool 285753 9325597 0.99 1144 Homecoming / The Death Of St. Jimmy / East 12th St. / Nobody Likes You / Rock And Roll Girlfriend / We're Coming Home Again American Idiot MPEG audio file Alternative & Punk Mike Dirnt/Tré Cool 558602 18139840 0.99 1145 Whatsername American Idiot MPEG audio file Alternative & Punk Green Day 252316 8244843 0.99 1146 Welcome to the Jungle Appetite for Destruction Protected AAC audio file Rock \N 273552 4538451 0.99 1147 It's So Easy Appetite for Destruction Protected AAC audio file Rock \N 202824 3394019 0.99 1148 Nightrain Appetite for Destruction Protected AAC audio file Rock \N 268537 4457283 0.99 1149 Out Ta Get Me Appetite for Destruction Protected AAC audio file Rock \N 263893 4382147 0.99 1150 Mr. Brownstone Appetite for Destruction Protected AAC audio file Rock \N 228924 3816323 0.99 1151 Paradise City Appetite for Destruction Protected AAC audio file Rock \N 406347 6687123 0.99 1152 My Michelle Appetite for Destruction Protected AAC audio file Rock \N 219961 3671299 0.99 1153 Think About You Appetite for Destruction Protected AAC audio file Rock \N 231640 3860275 0.99 1154 Sweet Child O' Mine Appetite for Destruction Protected AAC audio file Rock \N 356424 5879347 0.99 1155 You're Crazy Appetite for Destruction Protected AAC audio file Rock \N 197135 3301971 0.99 1156 Anything Goes Appetite for Destruction Protected AAC audio file Rock \N 206400 3451891 0.99 1157 Rocket Queen Appetite for Destruction Protected AAC audio file Rock \N 375349 6185539 0.99 1158 Right Next Door to Hell Use Your Illusion I Protected AAC audio file Rock \N 182321 3175950 0.99 1159 Dust N' Bones Use Your Illusion I Protected AAC audio file Rock \N 298374 5053742 0.99 1160 Live and Let Die Use Your Illusion I Protected AAC audio file Rock \N 184016 3203390 0.99 1161 Don't Cry (Original) Use Your Illusion I Protected AAC audio file Rock \N 284744 4833259 0.99 1162 Perfect Crime Use Your Illusion I Protected AAC audio file Rock \N 143637 2550030 0.99 1163 You Ain't the First Use Your Illusion I Protected AAC audio file Rock \N 156268 2754414 0.99 1164 Bad Obsession Use Your Illusion I Protected AAC audio file Rock \N 328282 5537678 0.99 1165 Back off Bitch Use Your Illusion I Protected AAC audio file Rock \N 303436 5135662 0.99 1166 Double Talkin' Jive Use Your Illusion I Protected AAC audio file Rock \N 203637 3520862 0.99 1167 November Rain Use Your Illusion I Protected AAC audio file Rock \N 537540 8923566 0.99 1168 The Garden Use Your Illusion I Protected AAC audio file Rock \N 322175 5438862 0.99 1169 Garden of Eden Use Your Illusion I Protected AAC audio file Rock \N 161539 2839694 0.99 1170 Don't Damn Me Use Your Illusion I Protected AAC audio file Rock \N 318901 5385886 0.99 1171 Bad Apples Use Your Illusion I Protected AAC audio file Rock \N 268351 4567966 0.99 1172 Dead Horse Use Your Illusion I Protected AAC audio file Rock \N 257600 4394014 0.99 1173 Coma Use Your Illusion I Protected AAC audio file Rock \N 616511 10201342 0.99 1174 Civil War Use Your Illusion II MPEG audio file Metal Duff McKagan/Slash/W. Axl Rose 461165 15046579 0.99 1175 14 Years Use Your Illusion II MPEG audio file Metal Izzy Stradlin'/W. Axl Rose 261355 8543664 0.99 1176 Yesterdays Use Your Illusion II MPEG audio file Metal Billy/Del James/W. Axl Rose/West Arkeen 196205 6398489 0.99 1177 Knockin' On Heaven's Door Use Your Illusion II MPEG audio file Metal Bob Dylan 336457 10986716 0.99 1178 Get In The Ring Use Your Illusion II MPEG audio file Metal Duff McKagan/Slash/W. Axl Rose 341054 11134105 0.99 1179 Shotgun Blues Use Your Illusion II MPEG audio file Metal W. Axl Rose 203206 6623916 0.99 1180 Breakdown Use Your Illusion II MPEG audio file Metal W. Axl Rose 424960 13978284 0.99 1181 Pretty Tied Up Use Your Illusion II MPEG audio file Metal Izzy Stradlin' 287477 9408754 0.99 1182 Locomotive Use Your Illusion II MPEG audio file Metal Slash/W. Axl Rose 522396 17236842 0.99 1183 So Fine Use Your Illusion II MPEG audio file Metal Duff McKagan 246491 8039484 0.99 1184 Estranged Use Your Illusion II MPEG audio file Metal W. Axl Rose 563800 18343787 0.99 1185 You Could Be Mine Use Your Illusion II MPEG audio file Metal Izzy Stradlin'/W. Axl Rose 343875 11207355 0.99 1186 Don't Cry Use Your Illusion II MPEG audio file Metal Izzy Stradlin'/W. Axl Rose 284238 9222458 0.99 1187 My World Use Your Illusion II MPEG audio file Metal W. Axl Rose 84532 2764045 0.99 1188 Colibri Blue Moods MPEG audio file Jazz Richard Bull 361012 12055329 0.99 1189 Love Is The Colour Blue Moods MPEG audio file Jazz R. Carless 251585 8419165 0.99 1190 Magnetic Ocean Blue Moods MPEG audio file Jazz Patrick Claher/Richard Bull 321123 10720741 0.99 1191 Deep Waters Blue Moods MPEG audio file Jazz Richard Bull 396460 13075359 0.99 1192 L'Arc En Ciel De Miles Blue Moods MPEG audio file Jazz Kevin Robinson/Richard Bull 242390 8053997 0.99 1193 Gypsy Blue Moods MPEG audio file Jazz Kevin Robinson 330997 11083374 0.99 1194 Journey Into Sunlight Blue Moods MPEG audio file Jazz Jean Paul Maunick 249756 8241177 0.99 1195 Sunchild Blue Moods MPEG audio file Jazz Graham Harvey 259970 8593143 0.99 1196 Millenium Blue Moods MPEG audio file Jazz Maxton Gig Beesley Jnr. 379167 12511939 0.99 1197 Thinking 'Bout Tomorrow Blue Moods MPEG audio file Jazz Fayyaz Virgi/Richard Bull 355395 11865384 0.99 1198 Jacob's Ladder Blue Moods MPEG audio file Jazz Julian Crampton 367647 12201595 0.99 1199 She Wears Black Blue Moods MPEG audio file Jazz G Harvey/R Hope-Taylor 528666 17617944 0.99 1200 Dark Side Of The Cog Blue Moods MPEG audio file Jazz Jean Paul Maunick 377155 12491122 0.99 1201 Different World A Matter of Life and Death Protected AAC audio file Rock \N 258692 4383764 0.99 1202 These Colours Don't Run A Matter of Life and Death Protected AAC audio file Rock \N 412152 6883500 0.99 1203 Brighter Than a Thousand Suns A Matter of Life and Death Protected AAC audio file Rock \N 526255 8721490 0.99 1204 The Pilgrim A Matter of Life and Death Protected AAC audio file Rock \N 307593 5172144 0.99 1205 The Longest Day A Matter of Life and Death Protected AAC audio file Rock \N 467810 7785748 0.99 1206 Out of the Shadows A Matter of Life and Death Protected AAC audio file Rock \N 336896 5647303 0.99 1207 The Reincarnation of Benjamin Breeg A Matter of Life and Death Protected AAC audio file Rock \N 442106 7367736 0.99 1208 For the Greater Good of God A Matter of Life and Death Protected AAC audio file Rock \N 564893 9367328 0.99 1209 Lord of Light A Matter of Life and Death Protected AAC audio file Rock \N 444614 7393698 0.99 1210 The Legacy A Matter of Life and Death Protected AAC audio file Rock \N 562966 9314287 0.99 1211 Hallowed Be Thy Name (Live) [Non Album Bonus Track] A Matter of Life and Death Protected AAC audio file Rock \N 431262 7205816 0.99 1212 The Number Of The Beast A Real Dead One MPEG audio file Metal Steve Harris 294635 4718897 0.99 1213 The Trooper A Real Dead One MPEG audio file Metal Steve Harris 235311 3766272 0.99 1214 Prowler A Real Dead One MPEG audio file Metal Steve Harris 255634 4091904 0.99 1215 Transylvania A Real Dead One MPEG audio file Metal Steve Harris 265874 4255744 0.99 1216 Remember Tomorrow A Real Dead One MPEG audio file Metal Paul Di'Anno/Steve Harris 352731 5648438 0.99 1217 Where Eagles Dare A Real Dead One MPEG audio file Metal Steve Harris 289358 4630528 0.99 1218 Sanctuary A Real Dead One MPEG audio file Metal David Murray/Paul Di'Anno/Steve Harris 293250 4694016 0.99 1219 Running Free A Real Dead One MPEG audio file Metal Paul Di'Anno/Steve Harris 228937 3663872 0.99 1220 Run To The Hilss A Real Dead One MPEG audio file Metal Steve Harris 237557 3803136 0.99 1221 2 Minutes To Midnight A Real Dead One MPEG audio file Metal Adrian Smith/Bruce Dickinson 337423 5400576 0.99 1222 Iron Maiden A Real Dead One MPEG audio file Metal Steve Harris 324623 5195776 0.99 1223 Hallowed Be Thy Name A Real Dead One MPEG audio file Metal Steve Harris 471849 7550976 0.99 1224 Be Quick Or Be Dead A Real Live One MPEG audio file Metal Bruce Dickinson/Janick Gers 196911 3151872 0.99 1225 From Here To Eternity A Real Live One MPEG audio file Metal Steve Harris 259866 4159488 0.99 1226 Can I Play With Madness A Real Live One MPEG audio file Metal Adrian Smith/Bruce Dickinson/Steve Harris 282488 4521984 0.99 1227 Wasting Love A Real Live One MPEG audio file Metal Bruce Dickinson/Janick Gers 347846 5566464 0.99 1228 Tailgunner A Real Live One MPEG audio file Metal Bruce Dickinson/Steve Harris 249469 3993600 0.99 1229 The Evil That Men Do A Real Live One MPEG audio file Metal Adrian Smith/Bruce Dickinson/Steve Harris 325929 5216256 0.99 1230 Afraid To Shoot Strangers A Real Live One MPEG audio file Metal Steve Harris 407980 6529024 0.99 1231 Bring Your Daughter... To The Slaughter A Real Live One MPEG audio file Metal Bruce Dickinson 317727 5085184 0.99 1232 Heaven Can Wait A Real Live One MPEG audio file Metal Steve Harris 448574 7178240 0.99 1233 The Clairvoyant A Real Live One MPEG audio file Metal Steve Harris 269871 4319232 0.99 1234 Fear Of The Dark A Real Live One MPEG audio file Metal Steve Harris 431333 6906078 0.99 1235 The Wicker Man Brave New World MPEG audio file Rock Adrian Smith/Bruce Dickinson/Steve Harris 275539 11022464 0.99 1236 Ghost Of The Navigator Brave New World MPEG audio file Rock Bruce Dickinson/Janick Gers/Steve Harris 410070 16404608 0.99 1237 Brave New World Brave New World MPEG audio file Rock Bruce Dickinson/David Murray/Steve Harris 378984 15161472 0.99 1238 Blood Brothers Brave New World MPEG audio file Rock Steve Harris 434442 17379456 0.99 1239 The Mercenary Brave New World MPEG audio file Rock Janick Gers/Steve Harris 282488 11300992 0.99 1240 Dream Of Mirrors Brave New World MPEG audio file Rock Janick Gers/Steve Harris 561162 22448256 0.99 1241 The Fallen Angel Brave New World MPEG audio file Rock Adrian Smith/Steve Harris 240718 9629824 0.99 1242 The Nomad Brave New World MPEG audio file Rock David Murray/Steve Harris 546115 21846144 0.99 1243 Out Of The Silent Planet Brave New World MPEG audio file Rock Bruce Dickinson/Janick Gers/Steve Harris 385541 15423616 0.99 1244 The Thin Line Between Love & Hate Brave New World MPEG audio file Rock David Murray/Steve Harris 506801 20273280 0.99 1245 Wildest Dreams Dance Of Death MPEG audio file Heavy Metal Adrian Smith/Steve Harris 232777 9312384 0.99 1246 Rainmaker Dance Of Death MPEG audio file Heavy Metal Bruce Dickinson/David Murray/Steve Harris 228623 9146496 0.99 1247 No More Lies Dance Of Death MPEG audio file Heavy Metal Steve Harris 441782 17672320 0.99 1248 Montsegur Dance Of Death MPEG audio file Heavy Metal Bruce Dickinson/Janick Gers/Steve Harris 350484 14020736 0.99 1249 Dance Of Death Dance Of Death MPEG audio file Heavy Metal Janick Gers/Steve Harris 516649 20670727 0.99 1250 Gates Of Tomorrow Dance Of Death MPEG audio file Heavy Metal Bruce Dickinson/Janick Gers/Steve Harris 312032 12482688 0.99 1251 New Frontier Dance Of Death MPEG audio file Heavy Metal Adrian Smith/Bruce Dickinson/Nicko McBrain 304509 12181632 0.99 1252 Paschendale Dance Of Death MPEG audio file Heavy Metal Adrian Smith/Steve Harris 508107 20326528 0.99 1253 Face In The Sand Dance Of Death MPEG audio file Heavy Metal Adrian Smith/Bruce Dickinson/Steve Harris 391105 15648948 0.99 1254 Age Of Innocence Dance Of Death MPEG audio file Heavy Metal David Murray/Steve Harris 370468 14823478 0.99 1255 Journeyman Dance Of Death MPEG audio file Heavy Metal Bruce Dickinson/David Murray/Steve Harris 427023 17082496 0.99 1256 Be Quick Or Be Dead Fear Of The Dark MPEG audio file Rock Bruce Dickinson/Janick Gers 204512 8181888 0.99 1257 From Here To Eternity Fear Of The Dark MPEG audio file Rock Steve Harris 218357 8739038 0.99 1258 Afraid To Shoot Strangers Fear Of The Dark MPEG audio file Rock Steve Harris 416496 16664589 0.99 1259 Fear Is The Key Fear Of The Dark MPEG audio file Rock Bruce Dickinson/Janick Gers 335307 13414528 0.99 1260 Childhood's End Fear Of The Dark MPEG audio file Rock Steve Harris 280607 11225216 0.99 1261 Wasting Love Fear Of The Dark MPEG audio file Rock Bruce Dickinson/Janick Gers 350981 14041216 0.99 1262 The Fugitive Fear Of The Dark MPEG audio file Rock Steve Harris 294112 11765888 0.99 1263 Chains Of Misery Fear Of The Dark MPEG audio file Rock Bruce Dickinson/David Murray 217443 8700032 0.99 1264 The Apparition Fear Of The Dark MPEG audio file Rock Janick Gers/Steve Harris 234605 9386112 0.99 1265 Judas Be My Guide Fear Of The Dark MPEG audio file Rock Bruce Dickinson/David Murray 188786 7553152 0.99 1266 Weekend Warrior Fear Of The Dark MPEG audio file Rock Janick Gers/Steve Harris 339748 13594678 0.99 1267 Fear Of The Dark Fear Of The Dark MPEG audio file Rock Steve Harris 436976 17483789 0.99 1268 01 - Prowler Iron Maiden MPEG audio file Blues Steve Harris 236173 5668992 0.99 1269 02 - Sanctuary Iron Maiden MPEG audio file Blues David Murray/Paul Di'Anno/Steve Harris 196284 4712576 0.99 1270 03 - Remember Tomorrow Iron Maiden MPEG audio file Blues Harris/Paul Di´Anno 328620 7889024 0.99 1271 04 - Running Free Iron Maiden MPEG audio file Blues Harris/Paul Di´Anno 197276 4739122 0.99 1272 05 - Phantom of the Opera Iron Maiden MPEG audio file Blues Steve Harris 428016 10276872 0.99 1273 06 - Transylvania Iron Maiden MPEG audio file Blues Steve Harris 259343 6226048 0.99 1274 07 - Strange World Iron Maiden MPEG audio file Blues Steve Harris 332460 7981184 0.99 1275 08 - Charlotte the Harlot Iron Maiden MPEG audio file Blues Murray Dave 252708 6066304 0.99 1276 09 - Iron Maiden Iron Maiden MPEG audio file Blues Steve Harris 216058 5189891 0.99 1277 The Ides Of March Killers MPEG audio file Heavy Metal Steve Harris 105926 2543744 0.99 1278 Wrathchild Killers MPEG audio file Heavy Metal Steve Harris 174471 4188288 0.99 1279 Murders In The Rue Morgue Killers MPEG audio file Heavy Metal Steve Harris 258377 6205786 0.99 1280 Another Life Killers MPEG audio file Heavy Metal Steve Harris 203049 4874368 0.99 1281 Genghis Khan Killers MPEG audio file Heavy Metal Steve Harris 187141 4493440 0.99 1282 Innocent Exile Killers MPEG audio file Heavy Metal Di´Anno/Harris 232515 5584861 0.99 1283 Killers Killers MPEG audio file Heavy Metal Steve Harris 300956 7227440 0.99 1284 Prodigal Son Killers MPEG audio file Heavy Metal Steve Harris 372349 8937600 0.99 1285 Purgatory Killers MPEG audio file Heavy Metal Steve Harris 200150 4804736 0.99 1286 Drifter Killers MPEG audio file Heavy Metal Steve Harris 288757 6934660 0.99 1287 Intro- Churchill S Speech Live After Death MPEG audio file Heavy Metal \N 48013 1154488 0.99 1288 Aces High Live After Death MPEG audio file Heavy Metal \N 276375 6635187 0.99 1289 2 Minutes To Midnight Live After Death MPEG audio file Metal Smith/Dickinson 366550 8799380 0.99 1290 The Trooper Live After Death MPEG audio file Metal Harris 268878 6455255 0.99 1291 Revelations Live After Death MPEG audio file Metal Dickinson 371826 8926021 0.99 1292 Flight Of Icarus Live After Death MPEG audio file Metal Smith/Dickinson 229982 5521744 0.99 1293 Rime Of The Ancient Mariner Live After Death MPEG audio file Metal \N 789472 18949518 0.99 1294 Powerslave Live After Death MPEG audio file Metal \N 454974 10921567 0.99 1295 The Number Of The Beast Live After Death MPEG audio file Metal Harris 275121 6605094 0.99 1296 Hallowed Be Thy Name Live After Death MPEG audio file Metal Harris 451422 10836304 0.99 1297 Iron Maiden Live After Death MPEG audio file Metal Harris 261955 6289117 0.99 1298 Run To The Hills Live After Death MPEG audio file Metal Harris 231627 5561241 0.99 1299 Running Free Live After Death MPEG audio file Metal Harris/Di Anno 204617 4912986 0.99 1300 Wrathchild Live After Death MPEG audio file Heavy Metal Steve Harris 183666 4410181 0.99 1301 Acacia Avenue Live After Death MPEG audio file Heavy Metal \N 379872 9119118 0.99 1302 Children Of The Damned Live After Death MPEG audio file Heavy Metal Steve Harris 278177 6678446 0.99 1303 Die With Your Boots On Live After Death MPEG audio file Heavy Metal Adrian Smith/Bruce Dickinson/Steve Harris 314174 7542367 0.99 1304 Phantom Of The Opera Live After Death MPEG audio file Heavy Metal Steve Harris 441155 10589917 0.99 1305 Be Quick Or Be Dead Live At Donington 1992 (Disc 1) MPEG audio file Rock \N 233142 5599853 0.99 1306 The Number Of The Beast Live At Donington 1992 (Disc 1) MPEG audio file Rock \N 294008 7060625 0.99 1307 Wrathchild Live At Donington 1992 (Disc 1) MPEG audio file Rock \N 174106 4182963 0.99 1308 From Here To Eternity Live At Donington 1992 (Disc 1) MPEG audio file Rock \N 284447 6831163 0.99 1309 Can I Play With Madness Live At Donington 1992 (Disc 1) MPEG audio file Rock \N 213106 5118995 0.99 1310 Wasting Love Live At Donington 1992 (Disc 1) MPEG audio file Rock \N 336953 8091301 0.99 1311 Tailgunner Live At Donington 1992 (Disc 1) MPEG audio file Rock \N 247640 5947795 0.99 1312 The Evil That Men Do Live At Donington 1992 (Disc 1) MPEG audio file Rock \N 478145 11479913 0.99 1313 Afraid To Shoot Strangers Live At Donington 1992 (Disc 1) MPEG audio file Rock \N 412525 9905048 0.99 1314 Fear Of The Dark Live At Donington 1992 (Disc 1) MPEG audio file Rock \N 431542 10361452 0.99 1315 Bring Your Daughter... To The Slaughter... Live At Donington 1992 (Disc 2) MPEG audio file Rock \N 376711 9045532 0.99 1316 The Clairvoyant Live At Donington 1992 (Disc 2) MPEG audio file Rock \N 262426 6302648 0.99 1317 Heaven Can Wait Live At Donington 1992 (Disc 2) MPEG audio file Rock \N 440555 10577743 0.99 1318 Run To The Hills Live At Donington 1992 (Disc 2) MPEG audio file Rock \N 235859 5665052 0.99 1319 2 Minutes To Midnight Live At Donington 1992 (Disc 2) MPEG audio file Rock Adrian Smith/Bruce Dickinson 338233 8122030 0.99 1320 Iron Maiden Live At Donington 1992 (Disc 2) MPEG audio file Rock \N 494602 11874875 0.99 1321 Hallowed Be Thy Name Live At Donington 1992 (Disc 2) MPEG audio file Rock \N 447791 10751410 0.99 1322 The Trooper Live At Donington 1992 (Disc 2) MPEG audio file Rock \N 232672 5588560 0.99 1323 Sanctuary Live At Donington 1992 (Disc 2) MPEG audio file Rock \N 318511 7648679 0.99 1324 Running Free Live At Donington 1992 (Disc 2) MPEG audio file Rock \N 474017 11380851 0.99 1325 Tailgunner No Prayer For The Dying MPEG audio file Metal Bruce Dickinson/Steve Harris 255582 4089856 0.99 1326 Holy Smoke No Prayer For The Dying MPEG audio file Metal Bruce Dickinson/Steve Harris 229459 3672064 0.99 1327 No Prayer For The Dying No Prayer For The Dying MPEG audio file Metal Steve Harris 263941 4225024 0.99 1328 Public Enema Number One No Prayer For The Dying MPEG audio file Metal Bruce Dickinson/David Murray 254197 4071587 0.99 1329 Fates Warning No Prayer For The Dying MPEG audio file Metal David Murray/Steve Harris 250853 4018088 0.99 1330 The Assassin No Prayer For The Dying MPEG audio file Metal Steve Harris 258768 4141056 0.99 1331 Run Silent Run Deep No Prayer For The Dying MPEG audio file Metal Bruce Dickinson/Steve Harris 275408 4407296 0.99 1332 Hooks In You No Prayer For The Dying MPEG audio file Metal Adrian Smith/Bruce Dickinson 247510 3960832 0.99 1333 Bring Your Daughter... ...To The Slaughter No Prayer For The Dying MPEG audio file Metal Bruce Dickinson 284238 4548608 0.99 1334 Mother Russia No Prayer For The Dying MPEG audio file Metal Steve Harris 332617 5322752 0.99 1335 Where Eagles Dare Piece Of Mind MPEG audio file Metal Steve Harris 369554 5914624 0.99 1336 Revelations Piece Of Mind MPEG audio file Metal Bruce Dickinson 408607 6539264 0.99 1337 Flight Of The Icarus Piece Of Mind MPEG audio file Metal Adrian Smith/Bruce Dickinson 230269 3686400 0.99 1338 Die With Your Boots On Piece Of Mind MPEG audio file Metal Adrian Smith/Bruce Dickinson/Steve Harris 325694 5212160 0.99 1339 The Trooper Piece Of Mind MPEG audio file Metal Steve Harris 251454 4024320 0.99 1340 Still Life Piece Of Mind MPEG audio file Metal David Murray/Steve Harris 294347 4710400 0.99 1341 Quest For Fire Piece Of Mind MPEG audio file Metal Steve Harris 221309 3543040 0.99 1342 Sun And Steel Piece Of Mind MPEG audio file Metal Adrian Smith/Bruce Dickinson 206367 3306324 0.99 1343 To Tame A Land Piece Of Mind MPEG audio file Metal Steve Harris 445283 7129264 0.99 1344 Aces High Powerslave MPEG audio file Metal Harris 269531 6472088 0.99 1345 2 Minutes To Midnight Powerslave MPEG audio file Metal Smith/Dickinson 359810 8638809 0.99 1346 Losfer Words Powerslave MPEG audio file Metal Steve Harris 252891 6074756 0.99 1347 Flash of The Blade Powerslave MPEG audio file Metal Dickinson 242729 5828861 0.99 1348 Duelists Powerslave MPEG audio file Metal Steve Harris 366471 8800686 0.99 1349 Back in the Village Powerslave MPEG audio file Metal Dickinson/Smith 320548 7696518 0.99 1350 Powerslave Powerslave MPEG audio file Metal Dickinson 407823 9791106 0.99 1351 Rime of the Ancient Mariner Powerslave MPEG audio file Metal Harris 816509 19599577 0.99 1352 Intro Rock In Rio [CD1] MPEG audio file Metal \N 115931 4638848 0.99 1353 The Wicker Man Rock In Rio [CD1] MPEG audio file Metal Adrian Smith/Bruce Dickinson/Steve Harris 281782 11272320 0.99 1354 Ghost Of The Navigator Rock In Rio [CD1] MPEG audio file Metal Bruce Dickinson/Janick Gers/Steve Harris 408607 16345216 0.99 1355 Brave New World Rock In Rio [CD1] MPEG audio file Metal Bruce Dickinson/David Murray/Steve Harris 366785 14676148 0.99 1356 Wrathchild Rock In Rio [CD1] MPEG audio file Metal Steve Harris 185808 7434368 0.99 1357 2 Minutes To Midnight Rock In Rio [CD1] MPEG audio file Metal Adrian Smith/Bruce Dickinson 386821 15474816 0.99 1358 Blood Brothers Rock In Rio [CD1] MPEG audio file Metal Steve Harris 435513 17422464 0.99 1359 Sign Of The Cross Rock In Rio [CD1] MPEG audio file Metal Steve Harris 649116 25966720 0.99 1360 The Mercenary Rock In Rio [CD1] MPEG audio file Metal Janick Gers/Steve Harris 282697 11309184 0.99 1361 The Trooper Rock In Rio [CD1] MPEG audio file Metal Steve Harris 273528 10942592 0.99 1362 Dream Of Mirrors Rock In Rio [CD2] MPEG audio file Rock Janick Gers/Steve Harris 578324 23134336 0.99 1363 The Clansman Rock In Rio [CD2] MPEG audio file Rock Steve Harris 559203 22370432 0.99 1364 The Evil That Men Do Rock In Rio [CD2] MPEG audio file Metal Adrian Smith/Bruce Dickinson/Steve Harris 280737 11231360 0.99 1365 Fear Of The Dark Rock In Rio [CD2] MPEG audio file Rock Steve Harris 460695 18430080 0.99 1366 Iron Maiden Rock In Rio [CD2] MPEG audio file Rock Steve Harris 351869 14076032 0.99 1367 The Number Of The Beast Rock In Rio [CD2] MPEG audio file Rock Steve Harris 300434 12022107 0.99 1368 Hallowed Be Thy Name Rock In Rio [CD2] MPEG audio file Rock Steve Harris 443977 17760384 0.99 1369 Sanctuary Rock In Rio [CD2] MPEG audio file Rock David Murray/Paul Di'Anno/Steve Harris 317335 12695680 0.99 1370 Run To The Hills Rock In Rio [CD2] MPEG audio file Rock Steve Harris 292179 11688064 0.99 1371 Moonchild Seventh Son of a Seventh Son MPEG audio file Metal Adrian Smith; Bruce Dickinson 340767 8179151 0.99 1372 Infinite Dreams Seventh Son of a Seventh Son MPEG audio file Metal Steve Harris 369005 8858669 0.99 1373 Can I Play With Madness Seventh Son of a Seventh Son MPEG audio file Metal Adrian Smith; Bruce Dickinson; Steve Harris 211043 5067867 0.99 1374 The Evil That Men Do Seventh Son of a Seventh Son MPEG audio file Metal Adrian Smith; Bruce Dickinson; Steve Harris 273998 6578930 0.99 1375 Seventh Son of a Seventh Son Seventh Son of a Seventh Son MPEG audio file Metal Steve Harris 593580 14249000 0.99 1376 The Prophecy Seventh Son of a Seventh Son MPEG audio file Metal Dave Murray; Steve Harris 305475 7334450 0.99 1377 The Clairvoyant Seventh Son of a Seventh Son MPEG audio file Metal Adrian Smith; Bruce Dickinson; Steve Harris 267023 6411510 0.99 1378 Only the Good Die Young Seventh Son of a Seventh Son MPEG audio file Metal Bruce Dickinson; Harris 280894 6744431 0.99 1379 Caught Somewhere in Time Somewhere in Time MPEG audio file Metal Steve Harris 445779 10701149 0.99 1380 Wasted Years Somewhere in Time MPEG audio file Metal Adrian Smith 307565 7384358 0.99 1381 Sea of Madness Somewhere in Time MPEG audio file Metal Adrian Smith 341995 8210695 0.99 1382 Heaven Can Wait Somewhere in Time MPEG audio file Metal Steve Harris 441417 10596431 0.99 1383 Stranger in a Strange Land Somewhere in Time MPEG audio file Metal Adrian Smith 344502 8270899 0.99 1384 Alexander the Great Somewhere in Time MPEG audio file Metal Steve Harris 515631 12377742 0.99 1385 De Ja Vu Somewhere in Time MPEG audio file Metal David Murray/Steve Harris 296176 7113035 0.99 1386 The Loneliness of the Long Dis Somewhere in Time MPEG audio file Metal Steve Harris 391314 9393598 0.99 1387 22 Acacia Avenue The Number of The Beast MPEG audio file Metal Adrian Smith/Steve Harris 395572 5542516 0.99 1388 Children of the Damned The Number of The Beast MPEG audio file Metal Steve Harris 274364 3845631 0.99 1389 Gangland The Number of The Beast MPEG audio file Metal Adrian Smith/Clive Burr/Steve Harris 228440 3202866 0.99 1390 Hallowed Be Thy Name The Number of The Beast MPEG audio file Metal Steve Harris 428669 6006107 0.99 1391 Invaders The Number of The Beast MPEG audio file Metal Steve Harris 203180 2849181 0.99 1392 Run to the Hills The Number of The Beast MPEG audio file Metal Steve Harris 228884 3209124 0.99 1393 The Number Of The Beast The Number of The Beast MPEG audio file Rock Steve Harris 293407 11737216 0.99 1394 The Prisoner The Number of The Beast MPEG audio file Metal Adrian Smith/Steve Harris 361299 5062906 0.99 1395 Sign Of The Cross The X Factor MPEG audio file Rock Steve Harris 678008 27121792 0.99 1396 Lord Of The Flies The X Factor MPEG audio file Rock Janick Gers/Steve Harris 303699 12148864 0.99 1397 Man On The Edge The X Factor MPEG audio file Rock Blaze Bayley/Janick Gers 253413 10137728 0.99 1398 Fortunes Of War The X Factor MPEG audio file Rock Steve Harris 443977 17760384 0.99 1399 Look For The Truth The X Factor MPEG audio file Rock Blaze Bayley/Janick Gers/Steve Harris 310230 12411008 0.99 1400 The Aftermath The X Factor MPEG audio file Rock Blaze Bayley/Janick Gers/Steve Harris 380786 15233152 0.99 1401 Judgement Of Heaven The X Factor MPEG audio file Rock Steve Harris 312476 12501120 0.99 1402 Blood On The World's Hands The X Factor MPEG audio file Rock Steve Harris 357799 14313600 0.99 1403 The Edge Of Darkness The X Factor MPEG audio file Rock Blaze Bayley/Janick Gers/Steve Harris 399333 15974528 0.99 1404 2 A.M. The X Factor MPEG audio file Rock Blaze Bayley/Janick Gers/Steve Harris 337658 13511087 0.99 1405 The Unbeliever The X Factor MPEG audio file Rock Janick Gers/Steve Harris 490422 19617920 0.99 1406 Futureal Virtual XI MPEG audio file Rock Blaze Bayley/Steve Harris 175777 7032960 0.99 1407 The Angel And The Gambler Virtual XI MPEG audio file Rock Steve Harris 592744 23711872 0.99 1408 Lightning Strikes Twice Virtual XI MPEG audio file Rock David Murray/Steve Harris 290377 11616384 0.99 1409 The Clansman Virtual XI MPEG audio file Rock Steve Harris 539689 21592327 0.99 1410 When Two Worlds Collide Virtual XI MPEG audio file Rock Blaze Bayley/David Murray/Steve Harris 377312 15093888 0.99 1411 The Educated Fool Virtual XI MPEG audio file Rock Steve Harris 404767 16191616 0.99 1412 Don't Look To The Eyes Of A Stranger Virtual XI MPEG audio file Rock Steve Harris 483657 19347584 0.99 1413 Como Estais Amigos Virtual XI MPEG audio file Rock Blaze Bayley/Janick Gers 330292 13213824 0.99 1414 Please Please Please Sex Machine MPEG audio file R&B/Soul James Brown/Johnny Terry 165067 5394585 0.99 1415 Think Sex Machine MPEG audio file R&B/Soul Lowman Pauling 166739 5513208 0.99 1416 Night Train Sex Machine MPEG audio file R&B/Soul Jimmy Forrest/Lewis C. Simpkins/Oscar Washington 212401 7027377 0.99 1417 Out Of Sight Sex Machine MPEG audio file R&B/Soul Ted Wright 143725 4711323 0.99 1418 Papa's Got A Brand New Bag Pt.1 Sex Machine MPEG audio file R&B/Soul James Brown 127399 4174420 0.99 1419 I Got You (I Feel Good) Sex Machine MPEG audio file R&B/Soul James Brown 167392 5468472 0.99 1420 It's A Man's Man's Man's World Sex Machine MPEG audio file R&B/Soul Betty Newsome/James Brown 168228 5541611 0.99 1421 Cold Sweat Sex Machine MPEG audio file R&B/Soul Alfred Ellis/James Brown 172408 5643213 0.99 1422 Say It Loud, I'm Black And I'm Proud Pt.1 Sex Machine MPEG audio file R&B/Soul Alfred Ellis/James Brown 167392 5478117 0.99 1423 Get Up (I Feel Like Being A) Sex Machine Sex Machine MPEG audio file R&B/Soul Bobby Byrd/James Brown/Ron Lenhoff 316551 10498031 0.99 1424 Hey America Sex Machine MPEG audio file R&B/Soul Addie William Jones/Nat Jones 218226 7187857 0.99 1425 Make It Funky Pt.1 Sex Machine MPEG audio file R&B/Soul Charles Bobbitt/James Brown 196231 6507782 0.99 1426 I'm A Greedy Man Pt.1 Sex Machine MPEG audio file R&B/Soul Charles Bobbitt/James Brown 217730 7251211 0.99 1427 Get On The Good Foot Sex Machine MPEG audio file R&B/Soul Fred Wesley/James Brown/Joseph Mims 215902 7182736 0.99 1428 Get Up Offa That Thing Sex Machine MPEG audio file R&B/Soul Deanna Brown/Deidra Jenkins/Yamma Brown 250723 8355989 0.99 1429 It's Too Funky In Here Sex Machine MPEG audio file R&B/Soul Brad Shapiro/George Jackson/Robert Miller/Walter Shaw 239072 7973979 0.99 1430 Living In America Sex Machine MPEG audio file R&B/Soul Charlie Midnight/Dan Hartman 282880 9432346 0.99 1431 I'm Real Sex Machine MPEG audio file R&B/Soul Full Force/James Brown 334236 11183457 0.99 1432 Hot Pants Pt.1 Sex Machine MPEG audio file R&B/Soul Fred Wesley/James Brown 188212 6295110 0.99 1433 Soul Power (Live) Sex Machine MPEG audio file R&B/Soul James Brown 260728 8593206 0.99 1434 When You Gonna Learn (Digeridoo) Emergency On Planet Earth MPEG audio file Rock Jay Kay/Kay, Jay 230635 7655482 0.99 1435 Too Young To Die Emergency On Planet Earth MPEG audio file Rock Smith, Toby 365818 12391660 0.99 1436 Hooked Up Emergency On Planet Earth MPEG audio file Rock Smith, Toby 275879 9301687 0.99 1437 If I Like It, I Do It Emergency On Planet Earth MPEG audio file Rock Gelder, Nick van 293093 9848207 0.99 1438 Music Of The Wind Emergency On Planet Earth MPEG audio file Rock Smith, Toby 383033 12870239 0.99 1439 Emergency On Planet Earth Emergency On Planet Earth MPEG audio file Rock Smith, Toby 245263 8117218 0.99 1440 Whatever It Is, I Just Can't Stop Emergency On Planet Earth MPEG audio file Rock Jay Kay/Kay, Jay 247222 8249453 0.99 1441 Blow Your Mind Emergency On Planet Earth MPEG audio file Rock Smith, Toby 512339 17089176 0.99 1442 Revolution 1993 Emergency On Planet Earth MPEG audio file Rock Smith, Toby 616829 20816872 0.99 1443 Didgin' Out Emergency On Planet Earth MPEG audio file Rock Buchanan, Wallis 157100 5263555 0.99 1444 Canned Heat Synkronized MPEG audio file R&B/Soul Jay Kay 331964 11042037 0.99 1445 Planet Home Synkronized MPEG audio file R&B/Soul Jay Kay/Toby Smith 284447 9566237 0.99 1446 Black Capricorn Day Synkronized MPEG audio file R&B/Soul Jay Kay 341629 11477231 0.99 1447 Soul Education Synkronized MPEG audio file R&B/Soul Jay Kay/Toby Smith 255477 8575435 0.99 1448 Failling Synkronized MPEG audio file R&B/Soul Jay Kay/Toby Smith 225227 7503999 0.99 1449 Destitute Illusions Synkronized MPEG audio file R&B/Soul Derrick McKenzie/Jay Kay/Toby Smith 340218 11452651 0.99 1450 Supersonic Synkronized MPEG audio file R&B/Soul Jay Kay 315872 10699265 0.99 1451 Butterfly Synkronized MPEG audio file R&B/Soul Jay Kay/Toby Smith 268852 8947356 0.99 1452 Were Do We Go From Here Synkronized MPEG audio file R&B/Soul Jay Kay 313626 10504158 0.99 1453 King For A Day Synkronized MPEG audio file R&B/Soul Jay Kay/Toby Smith 221544 7335693 0.99 1454 Deeper Underground Synkronized MPEG audio file R&B/Soul Toby Smith 281808 9351277 0.99 1455 Just Another Story The Return Of The Space Cowboy MPEG audio file Electronica/Dance Toby Smith 529684 17582818 0.99 1456 Stillness In Time The Return Of The Space Cowboy MPEG audio file Electronica/Dance Toby Smith 257097 8644290 0.99 1457 Half The Man The Return Of The Space Cowboy MPEG audio file Electronica/Dance Toby Smith 289854 9577679 0.99 1458 Light Years The Return Of The Space Cowboy MPEG audio file Electronica/Dance Toby Smith 354560 11796244 0.99 1459 Manifest Destiny The Return Of The Space Cowboy MPEG audio file Electronica/Dance Toby Smith 382197 12676962 0.99 1460 The Kids The Return Of The Space Cowboy MPEG audio file Electronica/Dance Toby Smith 309995 10334529 0.99 1461 Mr. Moon The Return Of The Space Cowboy MPEG audio file Electronica/Dance Stuard Zender/Toby Smith 329534 11043559 0.99 1462 Scam The Return Of The Space Cowboy MPEG audio file Electronica/Dance Stuart Zender 422321 14019705 0.99 1463 Journey To Arnhemland The Return Of The Space Cowboy MPEG audio file Electronica/Dance Toby Smith/Wallis Buchanan 322455 10843832 0.99 1464 Morning Glory The Return Of The Space Cowboy MPEG audio file Electronica/Dance J. Kay/Jay Kay 384130 12777210 0.99 1465 Space Cowboy The Return Of The Space Cowboy MPEG audio file Electronica/Dance J. Kay/Jay Kay 385697 12906520 0.99 1466 Last Chance Get Born MPEG audio file Alternative & Punk C. Cester/C. Muncey 112352 3683130 0.99 1467 Are You Gonna Be My Girl Get Born MPEG audio file Alternative & Punk C. Muncey/N. Cester 213890 6992324 0.99 1468 Rollover D.J. Get Born MPEG audio file Alternative & Punk C. Cester/N. Cester 196702 6406517 0.99 1469 Look What You've Done Get Born MPEG audio file Alternative & Punk N. Cester 230974 7517083 0.99 1470 Get What You Need Get Born MPEG audio file Alternative & Punk C. Cester/C. Muncey/N. Cester 247719 8043765 0.99 1471 Move On Get Born MPEG audio file Alternative & Punk C. Cester/N. Cester 260623 8519353 0.99 1472 Radio Song Get Born MPEG audio file Alternative & Punk C. Cester/C. Muncey/N. Cester 272117 8871509 0.99 1473 Get Me Outta Here Get Born MPEG audio file Alternative & Punk C. Cester/N. Cester 176274 5729098 0.99 1474 Cold Hard Bitch Get Born MPEG audio file Alternative & Punk C. Cester/C. Muncey/N. Cester 243278 7929610 0.99 1475 Come Around Again Get Born MPEG audio file Alternative & Punk C. Muncey/N. Cester 270497 8872405 0.99 1476 Take It Or Leave It Get Born MPEG audio file Alternative & Punk C. Muncey/N. Cester 142889 4643370 0.99 1477 Lazy Gun Get Born MPEG audio file Alternative & Punk C. Cester/N. Cester 282174 9186285 0.99 1478 Timothy Get Born MPEG audio file Alternative & Punk C. Cester 270341 8856507 0.99 1479 Foxy Lady Are You Experienced? MPEG audio file Rock Jimi Hendrix 199340 6480896 0.99 1480 Manic Depression Are You Experienced? MPEG audio file Rock Jimi Hendrix 222302 7289272 0.99 1481 Red House Are You Experienced? MPEG audio file Rock Jimi Hendrix 224130 7285851 0.99 1482 Can You See Me Are You Experienced? MPEG audio file Rock Jimi Hendrix 153077 4987068 0.99 1483 Love Or Confusion Are You Experienced? MPEG audio file Rock Jimi Hendrix 193123 6329408 0.99 1484 I Don't Live Today Are You Experienced? MPEG audio file Rock Jimi Hendrix 235311 7661214 0.99 1485 May This Be Love Are You Experienced? MPEG audio file Rock Jimi Hendrix 191216 6240028 0.99 1486 Fire Are You Experienced? MPEG audio file Rock Jimi Hendrix 164989 5383075 0.99 1487 Third Stone From The Sun Are You Experienced? MPEG audio file Rock Jimi Hendrix 404453 13186975 0.99 1488 Remember Are You Experienced? MPEG audio file Rock Jimi Hendrix 168150 5509613 0.99 1489 Are You Experienced? Are You Experienced? MPEG audio file Rock Jimi Hendrix 254537 8292497 0.99 1490 Hey Joe Are You Experienced? MPEG audio file Rock Billy Roberts 210259 6870054 0.99 1491 Stone Free Are You Experienced? MPEG audio file Rock Jimi Hendrix 216293 7002331 0.99 1492 Purple Haze Are You Experienced? MPEG audio file Rock Jimi Hendrix 171572 5597056 0.99 1493 51st Anniversary Are You Experienced? MPEG audio file Rock Jimi Hendrix 196388 6398044 0.99 1494 The Wind Cries Mary Are You Experienced? MPEG audio file Rock Jimi Hendrix 200463 6540638 0.99 1495 Highway Chile Are You Experienced? MPEG audio file Rock Jimi Hendrix 212453 6887949 0.99 1496 Surfing with the Alien Surfing with the Alien (Remastered) Protected AAC audio file Rock \N 263707 4418504 0.99 1497 Ice 9 Surfing with the Alien (Remastered) Protected AAC audio file Rock \N 239721 4036215 0.99 1498 Crushing Day Surfing with the Alien (Remastered) Protected AAC audio file Rock \N 314768 5232158 0.99 1499 Always With Me, Always With You Surfing with the Alien (Remastered) Protected AAC audio file Rock \N 202035 3435777 0.99 1500 Satch Boogie Surfing with the Alien (Remastered) Protected AAC audio file Rock \N 193560 3300654 0.99 1501 Hill of the Skull Surfing with the Alien (Remastered) Protected AAC audio file Rock J. Satriani 108435 1944738 0.99 1502 Circles Surfing with the Alien (Remastered) Protected AAC audio file Rock \N 209071 3548553 0.99 1503 Lords of Karma Surfing with the Alien (Remastered) Protected AAC audio file Rock J. Satriani 288227 4809279 0.99 1504 Midnight Surfing with the Alien (Remastered) Protected AAC audio file Rock J. Satriani 102630 1851753 0.99 1505 Echo Surfing with the Alien (Remastered) Protected AAC audio file Rock J. Satriani 337570 5595557 0.99 1506 Engenho De Dentro Jorge Ben Jor 25 Anos MPEG audio file Latin \N 310073 10211473 0.99 1507 Alcohol Jorge Ben Jor 25 Anos MPEG audio file Latin \N 355239 12010478 0.99 1508 Mama Africa Jorge Ben Jor 25 Anos MPEG audio file Latin \N 283062 9488316 0.99 1509 Salve Simpatia Jorge Ben Jor 25 Anos MPEG audio file Latin \N 343484 11314756 0.99 1510 W/Brasil (Chama O Síndico) Jorge Ben Jor 25 Anos MPEG audio file Latin \N 317100 10599953 0.99 1511 País Tropical Jorge Ben Jor 25 Anos MPEG audio file Latin \N 452519 14946972 0.99 1512 Os Alquimistas Estão Chegando Jorge Ben Jor 25 Anos MPEG audio file Latin \N 367281 12304520 0.99 1513 Charles Anjo 45 Jorge Ben Jor 25 Anos MPEG audio file Latin \N 389276 13022833 0.99 1514 Selassiê Jorge Ben Jor 25 Anos MPEG audio file Latin \N 326321 10724982 0.99 1515 Menina Sarará Jorge Ben Jor 25 Anos MPEG audio file Latin \N 191477 6393818 0.99 1516 Que Maravilha Jorge Ben Jor 25 Anos MPEG audio file Latin \N 338076 10996656 0.99 1517 Santa Clara Clareou Jorge Ben Jor 25 Anos MPEG audio file Latin \N 380081 12524725 0.99 1518 Filho Maravilha Jorge Ben Jor 25 Anos MPEG audio file Latin \N 227526 7498259 0.99 1519 Taj Mahal Jorge Ben Jor 25 Anos MPEG audio file Latin \N 289750 9502898 0.99 1520 Rapidamente Jota Quest-1995 MPEG audio file Latin \N 252238 8470107 0.99 1521 As Dores do Mundo Jota Quest-1995 MPEG audio file Latin Hyldon 255477 8537092 0.99 1522 Vou Pra Ai Jota Quest-1995 MPEG audio file Latin \N 300878 10053718 0.99 1523 My Brother Jota Quest-1995 MPEG audio file Latin \N 253231 8431821 0.99 1524 Há Quanto Tempo Jota Quest-1995 MPEG audio file Latin \N 270027 9004470 0.99 1525 Vício Jota Quest-1995 MPEG audio file Latin \N 269897 8887216 0.99 1679 Dezesseis A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo 323918 10573515 0.99 1526 Encontrar Alguém Jota Quest-1995 MPEG audio file Latin Marco Tulio Lara/Rogerio Flausino 224078 7437935 0.99 1527 Dance Enquanto é Tempo Jota Quest-1995 MPEG audio file Latin \N 229093 7583799 0.99 1528 A Tarde Jota Quest-1995 MPEG audio file Latin \N 266919 8836127 0.99 1529 Always Be All Right Jota Quest-1995 MPEG audio file Latin \N 128078 4299676 0.99 1530 Sem Sentido Jota Quest-1995 MPEG audio file Latin \N 250462 8292108 0.99 1531 Onibusfobia Jota Quest-1995 MPEG audio file Latin \N 315977 10474904 0.99 1532 Pura Elegancia Cafezinho MPEG audio file World João Suplicy 284107 9632269 0.99 1533 Choramingando Cafezinho MPEG audio file World João Suplicy 190484 6400532 0.99 1534 Por Merecer Cafezinho MPEG audio file World João Suplicy 230582 7764601 0.99 1535 No Futuro Cafezinho MPEG audio file World João Suplicy 182308 6056200 0.99 1536 Voce Inteira Cafezinho MPEG audio file World João Suplicy 241084 8077282 0.99 1537 Cuando A Noite Vai Chegando Cafezinho MPEG audio file World João Suplicy 270628 9081874 0.99 1538 Naquele Dia Cafezinho MPEG audio file World João Suplicy 251768 8452654 0.99 1539 Equinocio Cafezinho MPEG audio file World João Suplicy 269008 8871455 0.99 1540 Papelão Cafezinho MPEG audio file World João Suplicy 213263 7257390 0.99 1541 Cuando Eu For Pro Ceu Cafezinho MPEG audio file World João Suplicy 118804 3948371 0.99 1542 Do Nosso Amor Cafezinho MPEG audio file World João Suplicy 203415 6774566 0.99 1543 Borogodo Cafezinho MPEG audio file World João Suplicy 208457 7104588 0.99 1544 Cafezinho Cafezinho MPEG audio file World João Suplicy 180924 6031174 0.99 1545 Enquanto O Dia Não Vem Cafezinho MPEG audio file World João Suplicy 220891 7248336 0.99 1546 The Green Manalishi Living After Midnight MPEG audio file Metal \N 205792 6720789 0.99 1547 Living After Midnight Living After Midnight MPEG audio file Metal \N 213289 7056785 0.99 1548 Breaking The Law (Live) Living After Midnight MPEG audio file Metal \N 144195 4728246 0.99 1549 Hot Rockin' Living After Midnight MPEG audio file Metal \N 197328 6509179 0.99 1550 Heading Out To The Highway (Live) Living After Midnight MPEG audio file Metal \N 276427 9006022 0.99 1551 The Hellion Living After Midnight MPEG audio file Metal \N 41900 1351993 0.99 1552 Electric Eye Living After Midnight MPEG audio file Metal \N 222197 7231368 0.99 1553 You've Got Another Thing Comin' Living After Midnight MPEG audio file Metal \N 305162 9962558 0.99 1554 Turbo Lover Living After Midnight MPEG audio file Metal \N 335542 11068866 0.99 1555 Freewheel Burning Living After Midnight MPEG audio file Metal \N 265952 8713599 0.99 1556 Some Heads Are Gonna Roll Living After Midnight MPEG audio file Metal \N 249939 8198617 0.99 1557 Metal Meltdown Living After Midnight MPEG audio file Metal \N 290664 9390646 0.99 1558 Ram It Down Living After Midnight MPEG audio file Metal \N 292179 9554023 0.99 1559 Diamonds And Rust (Live) Living After Midnight MPEG audio file Metal \N 219350 7163147 0.99 1560 Victim Of Change (Live) Living After Midnight MPEG audio file Metal \N 430942 14067512 0.99 1561 Tyrant (Live) Living After Midnight MPEG audio file Metal \N 282253 9190536 0.99 1562 Comin' Home Unplugged [Live] MPEG audio file Rock Paul Stanley, Ace Frehley 172068 5661120 0.99 1563 Plaster Caster Unplugged [Live] MPEG audio file Rock Gene Simmons 198060 6528719 0.99 1564 Goin' Blind Unplugged [Live] MPEG audio file Rock Gene Simmons, Stephen Coronel 217652 7167523 0.99 1565 Do You Love Me Unplugged [Live] MPEG audio file Rock Paul Stanley, Bob Ezrin, Kim Fowley 193619 6343111 0.99 1566 Domino Unplugged [Live] MPEG audio file Rock Gene Simmons 226377 7488191 0.99 1567 Sure Know Something Unplugged [Live] MPEG audio file Rock Paul Stanley, Vincent Poncia 254354 8375190 0.99 1568 A World Without Heroes Unplugged [Live] MPEG audio file Rock Paul Stanley, Gene Simmons, Bob Ezrin, Lewis Reed 177815 5832524 0.99 1569 Rock Bottom Unplugged [Live] MPEG audio file Rock Paul Stanley, Ace Frehley 200594 6560818 0.99 1570 See You Tonight Unplugged [Live] MPEG audio file Rock Gene Simmons 146494 4817521 0.99 1571 I Still Love You Unplugged [Live] MPEG audio file Rock Paul Stanley 369815 12086145 0.99 1572 Every Time I Look At You Unplugged [Live] MPEG audio file Rock Paul Stanley, Vincent Cusano 283898 9290948 0.99 1573 2,000 Man Unplugged [Live] MPEG audio file Rock Mick Jagger, Keith Richard 312450 10292829 0.99 1574 Beth Unplugged [Live] MPEG audio file Rock Peter Criss, Stan Penridge, Bob Ezrin 170187 5577807 0.99 1575 Nothin' To Lose Unplugged [Live] MPEG audio file Rock Gene Simmons 222354 7351460 0.99 1576 Rock And Roll All Nite Unplugged [Live] MPEG audio file Rock Paul Stanley, Gene Simmons 259631 8549296 0.99 1577 Immigrant Song BBC Sessions [Disc 2] [Live] MPEG audio file Rock Robert Plant 201247 6457766 0.99 1578 Heartbreaker BBC Sessions [Disc 2] [Live] MPEG audio file Rock John Bonham/John Paul Jones/Robert Plant 316081 10179657 0.99 1579 Since I've Been Loving You BBC Sessions [Disc 2] [Live] MPEG audio file Rock John Paul Jones/Robert Plant 416365 13471959 0.99 1580 Black Dog BBC Sessions [Disc 2] [Live] MPEG audio file Rock John Paul Jones/Robert Plant 317622 10267572 0.99 1581 Dazed And Confused BBC Sessions [Disc 2] [Live] MPEG audio file Rock Jimmy Page/Led Zeppelin 1116734 36052247 0.99 1582 Stairway To Heaven BBC Sessions [Disc 2] [Live] MPEG audio file Rock Robert Plant 529658 17050485 0.99 1583 Going To California BBC Sessions [Disc 2] [Live] MPEG audio file Rock Robert Plant 234605 7646749 0.99 1584 That's The Way BBC Sessions [Disc 2] [Live] MPEG audio file Rock Robert Plant 343431 11248455 0.99 1585 Whole Lotta Love (Medley) BBC Sessions [Disc 2] [Live] MPEG audio file Rock Arthur Crudup/Bernard Besman/Bukka White/Doc Pomus/John Bonham/John Lee Hooker/John Paul Jones/Mort Shuman/Robert Plant/Willie Dixon 825103 26742545 0.99 1586 Thank You BBC Sessions [Disc 2] [Live] MPEG audio file Rock Robert Plant 398262 12831826 0.99 1587 We're Gonna Groove Coda MPEG audio file Rock Ben E.King/James Bethea 157570 5180975 0.99 1588 Poor Tom Coda MPEG audio file Rock Jimmy Page/Robert Plant 182491 6016220 0.99 1589 I Can't Quit You Baby Coda MPEG audio file Rock Willie Dixon 258168 8437098 0.99 1590 Walter's Walk Coda MPEG audio file Rock Jimmy Page, Robert Plant 270785 8712499 0.99 1591 Ozone Baby Coda MPEG audio file Rock Jimmy Page, Robert Plant 215954 7079588 0.99 1592 Darlene Coda MPEG audio file Rock Jimmy Page, Robert Plant, John Bonham, John Paul Jones 307226 10078197 0.99 1593 Bonzo's Montreux Coda MPEG audio file Rock John Bonham 258925 8557447 0.99 1594 Wearing And Tearing Coda MPEG audio file Rock Jimmy Page, Robert Plant 330004 10701590 0.99 1595 The Song Remains The Same Houses Of The Holy MPEG audio file Rock Jimmy Page/Jimmy Page & Robert Plant/Robert Plant 330004 10708950 0.99 1596 The Rain Song Houses Of The Holy MPEG audio file Rock Jimmy Page/Jimmy Page & Robert Plant/Robert Plant 459180 15029875 0.99 1597 Over The Hills And Far Away Houses Of The Holy MPEG audio file Rock Jimmy Page/Jimmy Page & Robert Plant/Robert Plant 290089 9552829 0.99 1598 The Crunge Houses Of The Holy MPEG audio file Rock John Bonham/John Paul Jones 197407 6460212 0.99 1599 Dancing Days Houses Of The Holy MPEG audio file Rock Jimmy Page/Jimmy Page & Robert Plant/Robert Plant 223216 7250104 0.99 1600 D'Yer Mak'er Houses Of The Holy MPEG audio file Rock John Bonham/John Paul Jones 262948 8645935 0.99 1601 No Quarter Houses Of The Holy MPEG audio file Rock John Paul Jones 420493 13656517 0.99 1602 The Ocean Houses Of The Holy MPEG audio file Rock John Bonham/John Paul Jones 271098 8846469 0.99 1603 In The Evening In Through The Out Door MPEG audio file Rock Jimmy Page, Robert Plant & John Paul Jones 410566 13399734 0.99 1604 South Bound Saurez In Through The Out Door MPEG audio file Rock John Paul Jones & Robert Plant 254406 8420427 0.99 1605 Fool In The Rain In Through The Out Door MPEG audio file Rock Jimmy Page, Robert Plant & John Paul Jones 372950 12371433 0.99 1606 Hot Dog In Through The Out Door MPEG audio file Rock Jimmy Page & Robert Plant 197198 6536167 0.99 1607 Carouselambra In Through The Out Door MPEG audio file Rock John Paul Jones, Jimmy Page & Robert Plant 634435 20858315 0.99 1608 All My Love In Through The Out Door MPEG audio file Rock Robert Plant & John Paul Jones 356284 11684862 0.99 1609 I'm Gonna Crawl In Through The Out Door MPEG audio file Rock Jimmy Page, Robert Plant & John Paul Jones 329639 10737665 0.99 1610 Black Dog IV MPEG audio file Rock Jimmy Page, Robert Plant, John Paul Jones 296672 9660588 0.99 1611 Rock & Roll IV MPEG audio file Rock Jimmy Page, Robert Plant, John Paul Jones, John Bonham 220917 7142127 0.99 1612 The Battle Of Evermore IV MPEG audio file Rock Jimmy Page, Robert Plant 351555 11525689 0.99 1613 Stairway To Heaven IV MPEG audio file Rock Jimmy Page, Robert Plant 481619 15706767 0.99 1614 Misty Mountain Hop IV MPEG audio file Rock Jimmy Page, Robert Plant, John Paul Jones 278857 9092799 0.99 1615 Four Sticks IV MPEG audio file Rock Jimmy Page, Robert Plant 284447 9481301 0.99 1616 Going To California IV MPEG audio file Rock Jimmy Page, Robert Plant 215693 7068737 0.99 1617 When The Levee Breaks IV MPEG audio file Rock Jimmy Page, Robert Plant, John Paul Jones, John Bonham, Memphis Minnie 427702 13912107 0.99 1618 Good Times Bad Times Led Zeppelin I MPEG audio file Rock Jimmy Page/John Bonham/John Paul Jones 166164 5464077 0.99 1619 Babe I'm Gonna Leave You Led Zeppelin I MPEG audio file Rock Jimmy Page/Robert Plant 401475 13189312 0.99 1620 You Shook Me Led Zeppelin I MPEG audio file Rock J. B. Lenoir/Willie Dixon 388179 12643067 0.99 1621 Dazed and Confused Led Zeppelin I MPEG audio file Rock Jimmy Page 386063 12610326 0.99 1622 Your Time Is Gonna Come Led Zeppelin I MPEG audio file Rock Jimmy Page/John Paul Jones 274860 9011653 0.99 1623 Black Mountain Side Led Zeppelin I MPEG audio file Rock Jimmy Page 132702 4440602 0.99 1624 Communication Breakdown Led Zeppelin I MPEG audio file Rock Jimmy Page/John Bonham/John Paul Jones 150230 4899554 0.99 1625 I Can't Quit You Baby Led Zeppelin I MPEG audio file Rock Willie Dixon 282671 9252733 0.99 1626 How Many More Times Led Zeppelin I MPEG audio file Rock Jimmy Page/John Bonham/John Paul Jones 508055 16541364 0.99 1627 Whole Lotta Love Led Zeppelin II MPEG audio file Rock Jimmy Page, Robert Plant, John Paul Jones, John Bonham 334471 11026243 0.99 1628 What Is And What Should Never Be Led Zeppelin II MPEG audio file Rock Jimmy Page, Robert Plant 287973 9369385 0.99 1629 The Lemon Song Led Zeppelin II MPEG audio file Rock Jimmy Page, Robert Plant, John Paul Jones, John Bonham 379141 12463496 0.99 1630 Thank You Led Zeppelin II MPEG audio file Rock Jimmy Page, Robert Plant 287791 9337392 0.99 1631 Heartbreaker Led Zeppelin II MPEG audio file Rock Jimmy Page, Robert Plant, John Paul Jones, John Bonham 253988 8387560 0.99 1632 Living Loving Maid (She's Just A Woman) Led Zeppelin II MPEG audio file Rock Jimmy Page, Robert Plant 159216 5219819 0.99 1633 Ramble On Led Zeppelin II MPEG audio file Rock Jimmy Page, Robert Plant 275591 9199710 0.99 1634 Moby Dick Led Zeppelin II MPEG audio file Rock John Bonham, John Paul Jones, Jimmy Page 260728 8664210 0.99 1635 Bring It On Home Led Zeppelin II MPEG audio file Rock Jimmy Page, Robert Plant 259970 8494731 0.99 1636 Immigrant Song Led Zeppelin III MPEG audio file Rock Jimmy Page, Robert Plant 144875 4786461 0.99 1637 Friends Led Zeppelin III MPEG audio file Rock Jimmy Page, Robert Plant 233560 7694220 0.99 1638 Celebration Day Led Zeppelin III MPEG audio file Rock Jimmy Page, Robert Plant, John Paul Jones 209528 6871078 0.99 1639 Since I've Been Loving You Led Zeppelin III MPEG audio file Rock Jimmy Page, Robert Plant, John Paul Jones 444055 14482460 0.99 1640 Out On The Tiles Led Zeppelin III MPEG audio file Rock Jimmy Page, Robert Plant, John Bonham 246047 8060350 0.99 1641 Gallows Pole Led Zeppelin III MPEG audio file Rock Traditional 296228 9757151 0.99 1642 Tangerine Led Zeppelin III MPEG audio file Rock Jimmy Page 189675 6200893 0.99 1643 That's The Way Led Zeppelin III MPEG audio file Rock Jimmy Page, Robert Plant 337345 11202499 0.99 1644 Bron-Y-Aur Stomp Led Zeppelin III MPEG audio file Rock Jimmy Page, Robert Plant, John Paul Jones 259500 8674508 0.99 1645 Hats Off To (Roy) Harper Led Zeppelin III MPEG audio file Rock Traditional 219376 7236640 0.99 1646 In The Light Physical Graffiti [Disc 2] MPEG audio file Rock John Paul Jones/Robert Plant 526785 17033046 0.99 1647 Bron-Yr-Aur Physical Graffiti [Disc 2] MPEG audio file Rock Jimmy Page 126641 4150746 0.99 1648 Down By The Seaside Physical Graffiti [Disc 2] MPEG audio file Rock Robert Plant 316186 10371282 0.99 1649 Ten Years Gone Physical Graffiti [Disc 2] MPEG audio file Rock Robert Plant 393116 12756366 0.99 1650 Night Flight Physical Graffiti [Disc 2] MPEG audio file Rock John Paul Jones/Robert Plant 217547 7160647 0.99 1651 The Wanton Song Physical Graffiti [Disc 2] MPEG audio file Rock Robert Plant 249887 8180988 0.99 1652 Boogie With Stu Physical Graffiti [Disc 2] MPEG audio file Rock Ian Stewart/John Bonham/John Paul Jones/Mrs. Valens/Robert Plant 233273 7657086 0.99 1653 Black Country Woman Physical Graffiti [Disc 2] MPEG audio file Rock Robert Plant 273084 8951732 0.99 1654 Sick Again Physical Graffiti [Disc 2] MPEG audio file Rock Robert Plant 283036 9279263 0.99 1655 Achilles Last Stand Presence MPEG audio file Rock Jimmy Page/Robert Plant 625502 20593955 0.99 1656 For Your Life Presence MPEG audio file Rock Jimmy Page/Robert Plant 384391 12633382 0.99 1657 Royal Orleans Presence MPEG audio file Rock John Bonham/John Paul Jones 179591 5930027 0.99 1658 Nobody's Fault But Mine Presence MPEG audio file Rock Jimmy Page/Robert Plant 376215 12237859 0.99 1659 Candy Store Rock Presence MPEG audio file Rock Jimmy Page/Robert Plant 252055 8397423 0.99 1660 Hots On For Nowhere Presence MPEG audio file Rock Jimmy Page/Robert Plant 284107 9342342 0.99 1661 Tea For One Presence MPEG audio file Rock Jimmy Page/Robert Plant 566752 18475264 0.99 1662 Rock & Roll The Song Remains The Same (Disc 1) MPEG audio file Rock John Bonham/John Paul Jones/Robert Plant 242442 7897065 0.99 1663 Celebration Day The Song Remains The Same (Disc 1) MPEG audio file Rock John Paul Jones/Robert Plant 230034 7478487 0.99 1664 The Song Remains The Same The Song Remains The Same (Disc 1) MPEG audio file Rock Robert Plant 353358 11465033 0.99 1665 Rain Song The Song Remains The Same (Disc 1) MPEG audio file Rock Robert Plant 505808 16273705 0.99 1666 Dazed And Confused The Song Remains The Same (Disc 1) MPEG audio file Rock Jimmy Page 1612329 52490554 0.99 1667 No Quarter The Song Remains The Same (Disc 2) MPEG audio file Rock John Paul Jones/Robert Plant 749897 24399285 0.99 1668 Stairway To Heaven The Song Remains The Same (Disc 2) MPEG audio file Rock Robert Plant 657293 21354766 0.99 1669 Moby Dick The Song Remains The Same (Disc 2) MPEG audio file Rock John Bonham/John Paul Jones 766354 25345841 0.99 1670 Whole Lotta Love The Song Remains The Same (Disc 2) MPEG audio file Rock John Bonham/John Paul Jones/Robert Plant/Willie Dixon 863895 28191437 0.99 1671 Natália A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo 235728 7640230 0.99 1672 L'Avventura A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo 278256 9165769 0.99 1673 Música De Trabalho A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo 260231 8590671 0.99 1674 Longe Do Meu Lado A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo - Marcelo Bonfá 266161 8655249 0.99 1675 A Via Láctea A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo 280084 9234879 0.99 1676 Música Ambiente A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo 247614 8234388 0.99 1677 Aloha A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo 325955 10793301 0.99 1678 Soul Parsifal A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo - Marisa Monte 295053 9853589 0.99 1680 Mil Pedaços A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo 203337 6643291 0.99 1681 Leila A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo 323056 10608239 0.99 1682 1º De Julho A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo 290298 9619257 0.99 1683 Esperando Por Mim A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo 261668 8844133 0.99 1684 Quando Você Voltar A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo 173897 5781046 0.99 1685 O Livro Dos Dias A TempestadeTempestade Ou O Livro Dos Dias MPEG audio file Latin Renato Russo 257253 8570929 0.99 1686 Será Mais Do Mesmo MPEG audio file Latin Dado Villa-Lobos/Marcelo Bonfá 148401 4826528 0.99 1687 Ainda É Cedo Mais Do Mesmo MPEG audio file Latin Dado Villa-Lobos/Ico Ouro-Preto/Marcelo Bonfá 236826 7796400 0.99 1688 Geração Coca-Cola Mais Do Mesmo MPEG audio file Latin Renato Russo 141453 4625731 0.99 1689 Eduardo E Mônica Mais Do Mesmo MPEG audio file Latin Renato Russo 271229 9026691 0.99 1690 Tempo Perdido Mais Do Mesmo MPEG audio file Latin Renato Russo 302158 9963914 0.99 1691 Indios Mais Do Mesmo MPEG audio file Latin Renato Russo 258168 8610226 0.99 1692 Que País É Este Mais Do Mesmo MPEG audio file Latin Renato Russo 177606 5822124 0.99 1693 Faroeste Caboclo Mais Do Mesmo MPEG audio file Latin Renato Russo 543007 18092739 0.99 1694 Há Tempos Mais Do Mesmo MPEG audio file Latin Dado Villa-Lobos/Marcelo Bonfá 197146 6432922 0.99 1695 Pais E Filhos Mais Do Mesmo MPEG audio file Latin Dado Villa-Lobos/Marcelo Bonfá 308401 10130685 0.99 1696 Meninos E Meninas Mais Do Mesmo MPEG audio file Latin Dado Villa-Lobos/Marcelo Bonfá 203781 6667802 0.99 1697 Vento No Litoral Mais Do Mesmo MPEG audio file Latin Dado Villa-Lobos/Marcelo Bonfá 366445 12063806 0.99 1698 Perfeição Mais Do Mesmo MPEG audio file Latin Dado Villa-Lobos/Marcelo Bonfá 276558 9258489 0.99 1699 Giz Mais Do Mesmo MPEG audio file Latin Dado Villa-Lobos/Marcelo Bonfá 202213 6677671 0.99 1700 Dezesseis Mais Do Mesmo MPEG audio file Latin Dado Villa-Lobos/Marcelo Bonfá 321724 10501773 0.99 1701 Antes Das Seis Mais Do Mesmo MPEG audio file Latin Dado Villa-Lobos 189231 6296531 0.99 1702 Are You Gonna Go My Way Greatest Hits MPEG audio file Rock Craig Ross/Lenny Kravitz 211591 6905135 0.99 1703 Fly Away Greatest Hits MPEG audio file Rock Lenny Kravitz 221962 7322085 0.99 1704 Rock And Roll Is Dead Greatest Hits MPEG audio file Rock Lenny Kravitz 204199 6680312 0.99 1705 Again Greatest Hits MPEG audio file Rock Lenny Kravitz 228989 7490476 0.99 1706 It Ain't Over 'Til It's Over Greatest Hits MPEG audio file Rock Lenny Kravitz 242703 8078936 0.99 1707 Can't Get You Off My Mind Greatest Hits MPEG audio file Rock Lenny Kravitz 273815 8937150 0.99 1708 Mr. Cab Driver Greatest Hits MPEG audio file Rock Lenny Kravitz 230321 7668084 0.99 1709 American Woman Greatest Hits MPEG audio file Rock B. Cummings/G. Peterson/M.J. Kale/R. Bachman 261773 8538023 0.99 1710 Stand By My Woman Greatest Hits MPEG audio file Rock Henry Kirssch/Lenny Kravitz/S. Pasch A. Krizan 259683 8447611 0.99 1711 Always On The Run Greatest Hits MPEG audio file Rock Lenny Kravitz/Slash 232515 7593397 0.99 1712 Heaven Help Greatest Hits MPEG audio file Rock Gerry DeVeaux/Terry Britten 190354 6222092 0.99 1713 I Belong To You Greatest Hits MPEG audio file Rock Lenny Kravitz 257123 8477980 0.99 1714 Believe Greatest Hits MPEG audio file Rock Henry Hirsch/Lenny Kravitz 295131 9661978 0.99 1715 Let Love Rule Greatest Hits MPEG audio file Rock Lenny Kravitz 342648 11298085 0.99 1716 Black Velveteen Greatest Hits MPEG audio file Rock Lenny Kravitz 290899 9531301 0.99 1717 Assim Caminha A Humanidade Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 210755 6993763 0.99 1718 Honolulu Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 261433 8558481 0.99 1719 Dancin´Days Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 237400 7875347 0.99 1720 Um Pro Outro Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 236382 7825215 0.99 1721 Aviso Aos Navegantes Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 242808 8058651 0.99 1722 Casa Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 307591 10107269 0.99 1723 Condição Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 263549 8778465 0.99 1724 Hyperconectividade Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 180636 5948039 0.99 1725 O Descobridor Dos Sete Mares Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 225854 7475780 0.99 1726 Satisfação Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 208065 6901681 0.99 1727 Brumário Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 216241 7243499 0.99 1728 Um Certo Alguém Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 194063 6430939 0.99 1729 Fullgás Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 346070 11505484 0.99 1730 Sábado À Noite Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 193854 6435114 0.99 1731 A Cura Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 280920 9260588 0.99 1732 Aquilo Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 246073 8167819 0.99 1733 Atrás Do Trio Elétrico Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 149080 4917615 0.99 1734 Senta A Pua Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 217547 7205844 0.99 1735 Ro-Que-Se-Da-Ne Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 146703 4805897 0.99 1736 Tudo Bem Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 196101 6419139 0.99 1737 Toda Forma De Amor Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 227813 7496584 0.99 1738 Tudo Igual Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 276035 9201645 0.99 1739 Fogo De Palha Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 246804 8133732 0.99 1740 Sereia Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 278047 9121087 0.99 1741 Assaltaram A Gramática Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 261041 8698959 0.99 1742 Se Você Pensa Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 195996 6552490 0.99 1743 Lá Vem O Sol (Here Comes The Sun) Lulu Santos - RCA 100 Anos De Música - Álbum 01 MPEG audio file Latin \N 189492 6229645 0.99 1744 O Último Romântico (Ao Vivo) Lulu Santos - RCA 100 Anos De Música - Álbum 02 MPEG audio file Latin \N 231993 7692697 0.99 1745 Pseudo Silk Kimono Misplaced Childhood MPEG audio file Rock Kelly, Mosley, Rothery, Trewaves 134739 4334038 0.99 1746 Kayleigh Misplaced Childhood MPEG audio file Rock Kelly, Mosley, Rothery, Trewaves 234605 7716005 0.99 1747 Lavender Misplaced Childhood MPEG audio file Rock Kelly, Mosley, Rothery, Trewaves 153417 4999814 0.99 1748 Bitter Suite: Brief Encounter / Lost Weekend / Blue Angel Misplaced Childhood MPEG audio file Rock Kelly, Mosley, Rothery, Trewaves 356493 11791068 0.99 1749 Heart Of Lothian: Wide Boy / Curtain Call Misplaced Childhood MPEG audio file Rock Kelly, Mosley, Rothery, Trewaves 366053 11893723 0.99 1750 Waterhole (Expresso Bongo) Misplaced Childhood MPEG audio file Rock Kelly, Mosley, Rothery, Trewaves 133093 4378835 0.99 1751 Lords Of The Backstage Misplaced Childhood MPEG audio file Rock Kelly, Mosley, Rothery, Trewaves 112875 3741319 0.99 1752 Blind Curve: Vocal Under A Bloodlight / Passing Strangers / Mylo / Perimeter Walk / Threshold Misplaced Childhood MPEG audio file Rock Kelly, Mosley, Rothery, Trewaves 569704 18578995 0.99 1753 Childhoods End? Misplaced Childhood MPEG audio file Rock Kelly, Mosley, Rothery, Trewaves 272796 9015366 0.99 1754 White Feather Misplaced Childhood MPEG audio file Rock Kelly, Mosley, Rothery, Trewaves 143595 4711776 0.99 1755 Arrepio Barulhinho Bom MPEG audio file Latin Carlinhos Brown 136254 4511390 0.99 1756 Magamalabares Barulhinho Bom MPEG audio file Latin Carlinhos Brown 215875 7183757 0.99 1757 Chuva No Brejo Barulhinho Bom MPEG audio file Latin Morais 145606 4857761 0.99 1758 Cérebro Eletrônico Barulhinho Bom MPEG audio file Latin Gilberto Gil 172800 5760864 0.99 1759 Tempos Modernos Barulhinho Bom MPEG audio file Latin Lulu Santos 183066 6066234 0.99 1760 Maraçá Barulhinho Bom MPEG audio file Latin Carlinhos Brown 230008 7621482 0.99 1988 Drain You From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 215196 7013175 0.99 1761 Blanco Barulhinho Bom MPEG audio file Latin Marisa Monte/poema de Octavio Paz/versão: Haroldo de Campos 45191 1454532 0.99 1762 Panis Et Circenses Barulhinho Bom MPEG audio file Latin Caetano Veloso e Gilberto Gil 192339 6318373 0.99 1763 De Noite Na Cama Barulhinho Bom MPEG audio file Latin Caetano Veloso e Gilberto Gil 209005 7012658 0.99 1764 Beija Eu Barulhinho Bom MPEG audio file Latin Caetano Veloso e Gilberto Gil 197276 6512544 0.99 1765 Give Me Love Barulhinho Bom MPEG audio file Latin Caetano Veloso e Gilberto Gil 249808 8196331 0.99 1766 Ainda Lembro Barulhinho Bom MPEG audio file Latin Caetano Veloso e Gilberto Gil 218801 7211247 0.99 1767 A Menina Dança Barulhinho Bom MPEG audio file Latin Caetano Veloso e Gilberto Gil 129410 4326918 0.99 1768 Dança Da Solidão Barulhinho Bom MPEG audio file Latin Caetano Veloso e Gilberto Gil 203520 6699368 0.99 1769 Ao Meu Redor Barulhinho Bom MPEG audio file Latin Caetano Veloso e Gilberto Gil 275591 9158834 0.99 1770 Bem Leve Barulhinho Bom MPEG audio file Latin Caetano Veloso e Gilberto Gil 159190 5246835 0.99 1771 Segue O Seco Barulhinho Bom MPEG audio file Latin Caetano Veloso e Gilberto Gil 178207 5922018 0.99 1772 O Xote Das Meninas Barulhinho Bom MPEG audio file Latin Caetano Veloso e Gilberto Gil 291866 9553228 0.99 1773 Wherever I Lay My Hat Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul \N 136986 4477321 0.99 1774 Get My Hands On Some Lovin' Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul \N 149054 4860380 0.99 1775 No Good Without You Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul William "Mickey" Stevenson 161410 5259218 0.99 1776 You've Been A Long Time Coming Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Brian Holland/Eddie Holland/Lamont Dozier 137221 4437949 0.99 1777 When I Had Your Love Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Robert Rogers/Warren "Pete" Moore/William "Mickey" Stevenson 152424 4972815 0.99 1778 You're What's Happening (In The World Today) Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Allen Story/George Gordy/Robert Gordy 142027 4631104 0.99 1779 Loving You Is Sweeter Than Ever Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Ivy Hunter/Stevie Wonder 166295 5377546 0.99 1780 It's A Bitter Pill To Swallow Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Smokey Robinson/Warren "Pete" Moore 194821 6477882 0.99 1781 Seek And You Shall Find Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Ivy Hunter/William "Mickey" Stevenson 223451 7306719 0.99 1782 Gonna Keep On Tryin' Till I Win Your Love Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Barrett Strong/Norman Whitfield 176404 5789945 0.99 1783 Gonna Give Her All The Love I've Got Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Barrett Strong/Norman Whitfield 210886 6893603 0.99 1784 I Wish It Would Rain Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Barrett Strong/Norman Whitfield/Roger Penzabene 172486 5647327 0.99 1785 Abraham, Martin And John Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Dick Holler 273057 8888206 0.99 1786 Save The Children Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Al Cleveland/Marvin Gaye/Renaldo Benson 194821 6342021 0.99 1787 You Sure Love To Ball Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Marvin Gaye 218540 7217872 0.99 1788 Ego Tripping Out Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Marvin Gaye 314514 10383887 0.99 1789 Praise Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Marvin Gaye 235833 7839179 0.99 1790 Heavy Love Affair Seek And Shall Find: More Of The Best (1963-1981) MPEG audio file R&B/Soul Marvin Gaye 227892 7522232 0.99 1791 Down Under The Best Of Men At Work MPEG audio file Rock \N 222171 7366142 0.99 1792 Overkill The Best Of Men At Work MPEG audio file Rock \N 225410 7408652 0.99 1793 Be Good Johnny The Best Of Men At Work MPEG audio file Rock \N 216320 7139814 0.99 1794 Everything I Need The Best Of Men At Work MPEG audio file Rock \N 216476 7107625 0.99 1795 Down by the Sea The Best Of Men At Work MPEG audio file Rock \N 408163 13314900 0.99 1796 Who Can It Be Now? The Best Of Men At Work MPEG audio file Rock \N 202396 6682850 0.99 1797 It's a Mistake The Best Of Men At Work MPEG audio file Rock \N 273371 8979965 0.99 1798 Dr. Heckyll & Mr. Jive The Best Of Men At Work MPEG audio file Rock \N 278465 9110403 0.99 1799 Shakes and Ladders The Best Of Men At Work MPEG audio file Rock \N 198008 6560753 0.99 1800 No Sign of Yesterday The Best Of Men At Work MPEG audio file Rock \N 362004 11829011 0.99 1801 Enter Sandman Black Album MPEG audio file Metal James Hetfield, Lars Ulrich and Kirk Hammett 332251 10852002 0.99 1802 Sad But True Black Album MPEG audio file Metal Ulrich 324754 10541258 0.99 1803 Holier Than Thou Black Album MPEG audio file Metal Ulrich 227892 7462011 0.99 1804 The Unforgiven Black Album MPEG audio file Metal James Hetfield, Lars Ulrich and Kirk Hammett 387082 12646886 0.99 1805 Wherever I May Roam Black Album MPEG audio file Metal Ulrich 404323 13161169 0.99 1806 Don't Tread On Me Black Album MPEG audio file Metal Ulrich 240483 7827907 0.99 1807 Through The Never Black Album MPEG audio file Metal James Hetfield, Lars Ulrich and Kirk Hammett 244375 8024047 0.99 1808 Nothing Else Matters Black Album MPEG audio file Metal Ulrich 388832 12606241 0.99 1809 Of Wolf And Man Black Album MPEG audio file Metal James Hetfield, Lars Ulrich and Kirk Hammett 256835 8339785 0.99 1810 The God That Failed Black Album MPEG audio file Metal Ulrich 308610 10055959 0.99 1811 My Friend Of Misery Black Album MPEG audio file Metal James Hetfield, Lars Ulrich and Jason Newsted 409547 13293515 0.99 1812 The Struggle Within Black Album MPEG audio file Metal Ulrich 234240 7654052 0.99 1813 Helpless Garage Inc. (Disc 2) MPEG audio file Metal Harris/Tatler 398315 12977902 0.99 1814 The Small Hours Garage Inc. (Disc 2) MPEG audio file Metal Holocaust 403435 13215133 0.99 1815 The Wait Garage Inc. (Disc 2) MPEG audio file Metal Killing Joke 295418 9688418 0.99 1816 Crash Course In Brain Surgery Garage Inc. (Disc 2) MPEG audio file Metal Bourge/Phillips/Shelley 190406 6233729 0.99 1817 Last Caress/Green Hell Garage Inc. (Disc 2) MPEG audio file Metal Danzig 209972 6854313 0.99 1818 Am I Evil? Garage Inc. (Disc 2) MPEG audio file Metal Harris/Tatler 470256 15387219 0.99 1819 Blitzkrieg Garage Inc. (Disc 2) MPEG audio file Metal Jones/Sirotto/Smith 216685 7090018 0.99 1820 Breadfan Garage Inc. (Disc 2) MPEG audio file Metal Bourge/Phillips/Shelley 341551 11100130 0.99 1821 The Prince Garage Inc. (Disc 2) MPEG audio file Metal Harris/Tatler 265769 8624492 0.99 1822 Stone Cold Crazy Garage Inc. (Disc 2) MPEG audio file Metal Deacon/May/Mercury/Taylor 137717 4514830 0.99 1823 So What Garage Inc. (Disc 2) MPEG audio file Metal Culmer/Exalt 189152 6162894 0.99 1824 Killing Time Garage Inc. (Disc 2) MPEG audio file Metal Sweet Savage 183693 6021197 0.99 1825 Overkill Garage Inc. (Disc 2) MPEG audio file Metal Clarke/Kilmister/Tayler 245133 7971330 0.99 1826 Damage Case Garage Inc. (Disc 2) MPEG audio file Metal Clarke/Farren/Kilmister/Tayler 220212 7212997 0.99 1827 Stone Dead Forever Garage Inc. (Disc 2) MPEG audio file Metal Clarke/Kilmister/Tayler 292127 9556060 0.99 1828 Too Late Too Late Garage Inc. (Disc 2) MPEG audio file Metal Clarke/Kilmister/Tayler 192052 6276291 0.99 1829 Hit The Lights Kill 'Em All MPEG audio file Metal James Hetfield, Lars Ulrich 257541 8357088 0.99 1830 The Four Horsemen Kill 'Em All MPEG audio file Metal James Hetfield, Lars Ulrich, Dave Mustaine 433188 14178138 0.99 1831 Motorbreath Kill 'Em All MPEG audio file Metal James Hetfield 188395 6153933 0.99 1832 Jump In The Fire Kill 'Em All MPEG audio file Metal James Hetfield, Lars Ulrich, Dave Mustaine 281573 9135755 0.99 1833 (Anesthesia) Pulling Teeth Kill 'Em All MPEG audio file Metal Cliff Burton 254955 8234710 0.99 1834 Whiplash Kill 'Em All MPEG audio file Metal James Hetfield, Lars Ulrich 249208 8102839 0.99 1835 Phantom Lord Kill 'Em All MPEG audio file Metal James Hetfield, Lars Ulrich, Dave Mustaine 302053 9817143 0.99 1836 No Remorse Kill 'Em All MPEG audio file Metal James Hetfield, Lars Ulrich 386795 12672166 0.99 1989 Aneurysm From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Nirvana 271516 8862545 0.99 1837 Seek & Destroy Kill 'Em All MPEG audio file Metal James Hetfield, Lars Ulrich 415817 13452301 0.99 1838 Metal Militia Kill 'Em All MPEG audio file Metal James Hetfield, Lars Ulrich, Dave Mustaine 311327 10141785 0.99 1839 Ain't My Bitch Load MPEG audio file Metal James Hetfield, Lars Ulrich 304457 9931015 0.99 1840 2 X 4 Load MPEG audio file Metal James Hetfield, Lars Ulrich, Kirk Hammett 328254 10732251 0.99 1841 The House Jack Built Load MPEG audio file Metal James Hetfield, Lars Ulrich, Kirk Hammett 398942 13005152 0.99 1842 Until It Sleeps Load MPEG audio file Metal James Hetfield, Lars Ulrich 269740 8837394 0.99 1843 King Nothing Load MPEG audio file Metal James Hetfield, Lars Ulrich, Kirk Hammett 328097 10681477 0.99 1844 Hero Of The Day Load MPEG audio file Metal James Hetfield, Lars Ulrich, Kirk Hammett 261982 8540298 0.99 1845 Bleeding Me Load MPEG audio file Metal James Hetfield, Lars Ulrich, Kirk Hammett 497998 16249420 0.99 1846 Cure Load MPEG audio file Metal James Hetfield, Lars Ulrich 294347 9648615 0.99 1847 Poor Twisted Me Load MPEG audio file Metal James Hetfield, Lars Ulrich 240065 7854349 0.99 1848 Wasted My Hate Load MPEG audio file Metal James Hetfield, Lars Ulrich, Kirk Hammett 237296 7762300 0.99 1849 Mama Said Load MPEG audio file Metal James Hetfield, Lars Ulrich 319764 10508310 0.99 1850 Thorn Within Load MPEG audio file Metal James Hetfield, Lars Ulrich, Kirk Hammett 351738 11486686 0.99 1851 Ronnie Load MPEG audio file Metal James Hetfield, Lars Ulrich 317204 10390947 0.99 1852 The Outlaw Torn Load MPEG audio file Metal James Hetfield, Lars Ulrich 588721 19286261 0.99 1853 Battery Master Of Puppets MPEG audio file Metal J.Hetfield/L.Ulrich 312424 10229577 0.99 1854 Master Of Puppets Master Of Puppets MPEG audio file Metal K.Hammett 515239 16893720 0.99 1855 The Thing That Should Not Be Master Of Puppets MPEG audio file Metal K.Hammett 396199 12952368 0.99 1856 Welcome Home (Sanitarium) Master Of Puppets MPEG audio file Metal K.Hammett 387186 12679965 0.99 1857 Disposable Heroes Master Of Puppets MPEG audio file Metal J.Hetfield/L.Ulrich 496718 16135560 0.99 1858 Leper Messiah Master Of Puppets MPEG audio file Metal C.Burton 347428 11310434 0.99 1859 Orion Master Of Puppets MPEG audio file Metal K.Hammett 500062 16378477 0.99 1860 Damage Inc. Master Of Puppets MPEG audio file Metal K.Hammett 330919 10725029 0.99 1861 Fuel ReLoad MPEG audio file Metal Hetfield, Ulrich, Hammett 269557 8876811 0.99 1862 The Memory Remains ReLoad MPEG audio file Metal Hetfield, Ulrich 279353 9110730 0.99 1863 Devil's Dance ReLoad MPEG audio file Metal Hetfield, Ulrich 318955 10414832 0.99 1864 The Unforgiven II ReLoad MPEG audio file Metal Hetfield, Ulrich, Hammett 395520 12886474 0.99 1865 Better Than You ReLoad MPEG audio file Metal Hetfield, Ulrich 322899 10549070 0.99 1866 Slither ReLoad MPEG audio file Metal Hetfield, Ulrich, Hammett 313103 10199789 0.99 1867 Carpe Diem Baby ReLoad MPEG audio file Metal Hetfield, Ulrich, Hammett 372480 12170693 0.99 1868 Bad Seed ReLoad MPEG audio file Metal Hetfield, Ulrich, Hammett 245394 8019586 0.99 1869 Where The Wild Things Are ReLoad MPEG audio file Metal Hetfield, Ulrich, Newsted 414380 13571280 0.99 1870 Prince Charming ReLoad MPEG audio file Metal Hetfield, Ulrich 365061 12009412 0.99 1871 Low Man's Lyric ReLoad MPEG audio file Metal Hetfield, Ulrich 457639 14855583 0.99 1872 Attitude ReLoad MPEG audio file Metal Hetfield, Ulrich 315898 10335734 0.99 1873 Fixxxer ReLoad MPEG audio file Metal Hetfield, Ulrich, Hammett 496065 16190041 0.99 1874 Fight Fire With Fire Ride The Lightning MPEG audio file Metal Metallica 285753 9420856 0.99 1875 Ride The Lightning Ride The Lightning MPEG audio file Metal Metallica 397740 13055884 0.99 1876 For Whom The Bell Tolls Ride The Lightning MPEG audio file Metal Metallica 311719 10159725 0.99 1877 Fade To Black Ride The Lightning MPEG audio file Metal Metallica 414824 13531954 0.99 1878 Trapped Under Ice Ride The Lightning MPEG audio file Metal Metallica 244532 7975942 0.99 1879 Escape Ride The Lightning MPEG audio file Metal Metallica 264359 8652332 0.99 1880 Creeping Death Ride The Lightning MPEG audio file Metal Metallica 396878 12955593 0.99 1881 The Call Of Ktulu Ride The Lightning MPEG audio file Metal Metallica 534883 17486240 0.99 1882 Frantic St. Anger MPEG audio file Metal Bob Rock/James Hetfield/Kirk Hammett/Lars Ulrich 350458 11510849 0.99 1883 St. Anger St. Anger MPEG audio file Metal Bob Rock/James Hetfield/Kirk Hammett/Lars Ulrich 441234 14363779 0.99 1884 Some Kind Of Monster St. Anger MPEG audio file Metal Bob Rock/James Hetfield/Kirk Hammett/Lars Ulrich 505626 16557497 0.99 1885 Dirty Window St. Anger MPEG audio file Metal Bob Rock/James Hetfield/Kirk Hammett/Lars Ulrich 324989 10670604 0.99 1886 Invisible Kid St. Anger MPEG audio file Metal Bob Rock/James Hetfield/Kirk Hammett/Lars Ulrich 510197 16591800 0.99 1887 My World St. Anger MPEG audio file Metal Bob Rock/James Hetfield/Kirk Hammett/Lars Ulrich 345626 11253756 0.99 1888 Shoot Me Again St. Anger MPEG audio file Metal Bob Rock/James Hetfield/Kirk Hammett/Lars Ulrich 430210 14093551 0.99 1889 Sweet Amber St. Anger MPEG audio file Metal Bob Rock/James Hetfield/Kirk Hammett/Lars Ulrich 327235 10616595 0.99 1890 The Unnamed Feeling St. Anger MPEG audio file Metal Bob Rock/James Hetfield/Kirk Hammett/Lars Ulrich 429479 14014582 0.99 1891 Purify St. Anger MPEG audio file Metal Bob Rock/James Hetfield/Kirk Hammett/Lars Ulrich 314017 10232537 0.99 1892 All Within My Hands St. Anger MPEG audio file Metal Bob Rock/James Hetfield/Kirk Hammett/Lars Ulrich 527986 17162741 0.99 1893 Blackened ...And Justice For All MPEG audio file Metal James Hetfield, Lars Ulrich & Jason Newsted 403382 13254874 0.99 1894 ...And Justice For All ...And Justice For All MPEG audio file Metal James Hetfield, Lars Ulrich & Kirk Hammett 585769 19262088 0.99 1895 Eye Of The Beholder ...And Justice For All MPEG audio file Metal James Hetfield, Lars Ulrich & Kirk Hammett 385828 12747894 0.99 1896 One ...And Justice For All MPEG audio file Metal James Hetfield & Lars Ulrich 446484 14695721 0.99 1897 The Shortest Straw ...And Justice For All MPEG audio file Metal James Hetfield and Lars Ulrich 395389 13013990 0.99 1898 Harvester Of Sorrow ...And Justice For All MPEG audio file Metal James Hetfield and Lars Ulrich 345547 11377339 0.99 1899 The Frayed Ends Of Sanity ...And Justice For All MPEG audio file Metal James Hetfield, Lars Ulrich and Kirk Hammett 464039 15198986 0.99 1900 To Live Is To Die ...And Justice For All MPEG audio file Metal James Hetfield, Lars Ulrich and Cliff Burton 588564 19243795 0.99 1901 Dyers Eve ...And Justice For All MPEG audio file Metal James Hetfield, Lars Ulrich and Kirk Hammett 313991 10302828 0.99 1902 Springsville Miles Ahead MPEG audio file Jazz J. Carisi 207725 6776219 0.99 1903 The Maids Of Cadiz Miles Ahead MPEG audio file Jazz L. Delibes 233534 7505275 0.99 1904 The Duke Miles Ahead MPEG audio file Jazz Dave Brubeck 214961 6977626 0.99 1905 My Ship Miles Ahead MPEG audio file Jazz Ira Gershwin, Kurt Weill 268016 8581144 0.99 1906 Miles Ahead Miles Ahead MPEG audio file Jazz Miles Davis, Gil Evans 209893 6807707 0.99 1907 Blues For Pablo Miles Ahead MPEG audio file Jazz Gil Evans 318328 10218398 0.99 1908 New Rhumba Miles Ahead MPEG audio file Jazz A. Jamal 276871 8980400 0.99 1909 The Meaning Of The Blues Miles Ahead MPEG audio file Jazz R. Troup, L. Worth 168594 5395412 0.99 1910 Lament Miles Ahead MPEG audio file Jazz J.J. Johnson 134191 4293394 0.99 1911 I Don't Wanna Be Kissed (By Anyone But You) Miles Ahead MPEG audio file Jazz H. Spina, J. Elliott 191320 6219487 0.99 1912 Springsville (Alternate Take) Miles Ahead MPEG audio file Jazz J. Carisi 196388 6382079 0.99 1913 Blues For Pablo (Alternate Take) Miles Ahead MPEG audio file Jazz Gil Evans 212558 6900619 0.99 1914 The Meaning Of The Blues/Lament (Alternate Take) Miles Ahead MPEG audio file Jazz J.J. Johnson/R. Troup, L. Worth 309786 9912387 0.99 1915 I Don't Wanna Be Kissed (By Anyone But You) (Alternate Take) Miles Ahead MPEG audio file Jazz H. Spina, J. Elliott 192078 6254796 0.99 1916 Coração De Estudante Milton Nascimento Ao Vivo MPEG audio file Latin Wagner Tiso, Milton Nascimento 238550 7797308 0.99 1917 A Noite Do Meu Bem Milton Nascimento Ao Vivo MPEG audio file Latin Dolores Duran 220081 7125225 0.99 1918 Paisagem Na Janela Milton Nascimento Ao Vivo MPEG audio file Latin Lô Borges, Fernando Brant 197694 6523547 0.99 1919 Cuitelinho Milton Nascimento Ao Vivo MPEG audio file Latin Folclore 209397 6803970 0.99 1920 Caxangá Milton Nascimento Ao Vivo MPEG audio file Latin Milton Nascimento, Fernando Brant 245551 8144179 0.99 1921 Nos Bailes Da Vida Milton Nascimento Ao Vivo MPEG audio file Latin Milton Nascimento, Fernando Brant 275748 9126170 0.99 1922 Menestrel Das Alagoas Milton Nascimento Ao Vivo MPEG audio file Latin Milton Nascimento, Fernando Brant 199758 6542289 0.99 1923 Brasil Milton Nascimento Ao Vivo MPEG audio file Latin Milton Nascimento, Fernando Brant 155428 5252560 0.99 1924 Canção Do Novo Mundo Milton Nascimento Ao Vivo MPEG audio file Latin Beto Guedes, Ronaldo Bastos 215353 7032626 0.99 1925 Um Gosto De Sol Milton Nascimento Ao Vivo MPEG audio file Latin Milton Nascimento, Ronaldo Bastos 307200 9893875 0.99 1926 Solar Milton Nascimento Ao Vivo MPEG audio file Latin Milton Nascimento, Fernando Brant 156212 5098288 0.99 1927 Para Lennon E McCartney Milton Nascimento Ao Vivo MPEG audio file Latin Lô Borges, Márcio Borges, Fernando Brant 321828 10626920 0.99 1928 Maria, Maria Milton Nascimento Ao Vivo MPEG audio file Latin Milton Nascimento, Fernando Brant 72463 2371543 0.99 1929 Minas Minas MPEG audio file Latin Milton Nascimento, Caetano Veloso 152293 4921056 0.99 1930 Fé Cega, Faca Amolada Minas MPEG audio file Latin Milton Nascimento, Ronaldo Bastos 278099 9258649 0.99 1931 Beijo Partido Minas MPEG audio file Latin Toninho Horta 229564 7506969 0.99 1932 Saudade Dos Aviões Da Panair (Conversando No Bar) Minas MPEG audio file Latin Milton Nascimento, Fernando Brant 268721 8805088 0.99 1933 Gran Circo Minas MPEG audio file Latin Milton Nascimento, Márcio Borges 251297 8237026 0.99 1934 Ponta de Areia Minas MPEG audio file Latin Milton Nascimento, Fernando Brant 272796 8874285 0.99 1935 Trastevere Minas MPEG audio file Latin Milton Nascimento, Ronaldo Bastos 265665 8708399 0.99 1936 Idolatrada Minas MPEG audio file Latin Milton Nascimento, Fernando Brant 286249 9426153 0.99 1937 Leila (Venha Ser Feliz) Minas MPEG audio file Latin Milton Nascimento 209737 6898507 0.99 1938 Paula E Bebeto Minas MPEG audio file Latin Milton Nascimento, Caetano Veloso 135732 4583956 0.99 1939 Simples Minas MPEG audio file Latin Nelson Angelo 133093 4326333 0.99 1940 Norwegian Wood Minas MPEG audio file Latin John Lennon, Paul McCartney 413910 13520382 0.99 1941 Caso Você Queira Saber Minas MPEG audio file Latin Beto Guedes, Márcio Borges 205688 6787901 0.99 1942 Ace Of Spades Ace Of Spades MPEG audio file Metal Clarke/Kilmister/Taylor 169926 5523552 0.99 1943 Love Me Like A Reptile Ace Of Spades MPEG audio file Metal Clarke/Kilmister/Taylor 203546 6616389 0.99 1944 Shoot You In The Back Ace Of Spades MPEG audio file Metal Clarke/Kilmister/Taylor 160026 5175327 0.99 1945 Live To Win Ace Of Spades MPEG audio file Metal Clarke/Kilmister/Taylor 217626 7102182 0.99 1946 Fast And Loose Ace Of Spades MPEG audio file Metal Clarke/Kilmister/Taylor 203337 6643350 0.99 1947 (We Are) The Road Crew Ace Of Spades MPEG audio file Metal Clarke/Kilmister/Taylor 192600 6283035 0.99 1948 Fire Fire Ace Of Spades MPEG audio file Metal Clarke/Kilmister/Taylor 164675 5416114 0.99 1949 Jailbait Ace Of Spades MPEG audio file Metal Clarke/Kilmister/Taylor 213916 6983609 0.99 1950 Dance Ace Of Spades MPEG audio file Metal Clarke/Kilmister/Taylor 158432 5155099 0.99 1951 Bite The Bullet Ace Of Spades MPEG audio file Metal Clarke/Kilmister/Taylor 98115 3195536 0.99 1952 The Chase Is Better Than The Catch Ace Of Spades MPEG audio file Metal Clarke/Kilmister/Taylor 258403 8393310 0.99 1953 The Hammer Ace Of Spades MPEG audio file Metal Clarke/Kilmister/Taylor 168071 5543267 0.99 1954 Dirty Love Ace Of Spades MPEG audio file Metal Clarke/Kilmister/Taylor 176457 5805241 0.99 1955 Please Don't Touch Ace Of Spades MPEG audio file Metal Heath/Robinson 169926 5557002 0.99 1956 Emergency Ace Of Spades MPEG audio file Metal Dufort/Johnson/McAuliffe/Williams 180427 5828728 0.99 1957 Kir Royal Demorou... MPEG audio file World Mônica Marianno 234788 7706552 0.99 1958 O Que Vai Em Meu Coração Demorou... MPEG audio file World Mônica Marianno 255373 8366846 0.99 1959 Aos Leões Demorou... MPEG audio file World Mônica Marianno 234684 7790574 0.99 1960 Dois Índios Demorou... MPEG audio file World Mônica Marianno 219271 7213072 0.99 1961 Noite Negra Demorou... MPEG audio file World Mônica Marianno 206811 6819584 0.99 1962 Beijo do Olhar Demorou... MPEG audio file World Mônica Marianno 252682 8369029 0.99 1963 É Fogo Demorou... MPEG audio file World Mônica Marianno 194873 6501520 0.99 1964 Já Foi Demorou... MPEG audio file World Mônica Marianno 245681 8094872 0.99 1965 Só Se For Pelo Cabelo Demorou... MPEG audio file World Mônica Marianno 238288 8006345 0.99 1966 No Clima Demorou... MPEG audio file World Mônica Marianno 249495 8362040 0.99 1967 A Moça e a Chuva Demorou... MPEG audio file World Mônica Marianno 274625 8929357 0.99 1968 Demorou! Demorou... MPEG audio file World Mônica Marianno 39131 1287083 0.99 1969 Bitter Pill Motley Crue Greatest Hits MPEG audio file Metal Mick Mars/Nikki Sixx/Tommy Lee/Vince Neil 266814 8666786 0.99 1970 Enslaved Motley Crue Greatest Hits MPEG audio file Metal Mick Mars/Nikki Sixx/Tommy Lee 269844 8789966 0.99 1971 Girls, Girls, Girls Motley Crue Greatest Hits MPEG audio file Metal Mick Mars/Nikki Sixx/Tommy Lee 270288 8874814 0.99 1972 Kickstart My Heart Motley Crue Greatest Hits MPEG audio file Metal Nikki Sixx 283559 9237736 0.99 1973 Wild Side Motley Crue Greatest Hits MPEG audio file Metal Nikki Sixx/Tommy Lee/Vince Neil 276767 9116997 0.99 1974 Glitter Motley Crue Greatest Hits MPEG audio file Metal Bryan Adams/Nikki Sixx/Scott Humphrey 340114 11184094 0.99 1975 Dr. Feelgood Motley Crue Greatest Hits MPEG audio file Metal Mick Mars/Nikki Sixx 282618 9281875 0.99 1976 Same Ol' Situation Motley Crue Greatest Hits MPEG audio file Metal Mick Mars/Nikki Sixx/Tommy Lee/Vince Neil 254511 8283958 0.99 1977 Home Sweet Home Motley Crue Greatest Hits MPEG audio file Metal Nikki Sixx/Tommy Lee/Vince Neil 236904 7697538 0.99 1978 Afraid Motley Crue Greatest Hits MPEG audio file Metal Nikki Sixx 248006 8077464 0.99 1979 Don't Go Away Mad (Just Go Away) Motley Crue Greatest Hits MPEG audio file Metal Mick Mars/Nikki Sixx 279980 9188156 0.99 1980 Without You Motley Crue Greatest Hits MPEG audio file Metal Mick Mars/Nikki Sixx 268956 8738371 0.99 1981 Smokin' in The Boys Room Motley Crue Greatest Hits MPEG audio file Metal Cub Coda/Michael Lutz 206837 6735408 0.99 1982 Primal Scream Motley Crue Greatest Hits MPEG audio file Metal Mick Mars/Nikki Sixx/Tommy Lee/Vince Neil 286197 9421164 0.99 1983 Too Fast For Love Motley Crue Greatest Hits MPEG audio file Metal Nikki Sixx 200829 6580542 0.99 1984 Looks That Kill Motley Crue Greatest Hits MPEG audio file Metal Nikki Sixx 240979 7831122 0.99 1985 Shout At The Devil Motley Crue Greatest Hits MPEG audio file Metal Nikki Sixx 221962 7281974 0.99 1986 Intro From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 52218 1688527 0.99 1987 School From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 160235 5234885 0.99 1990 Smells Like Teen Spirit From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Nirvana 287190 9425215 0.99 1991 Been A Son From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 127555 4170369 0.99 1992 Lithium From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 250017 8148800 0.99 1993 Sliver From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 116218 3784567 0.99 1994 Spank Thru From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 190354 6186487 0.99 1995 Scentless Apprentice From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Nirvana 211200 6898177 0.99 1996 Heart-Shaped Box From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 281887 9210982 0.99 1997 Milk It From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 225724 7406945 0.99 1998 Negative Creep From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 163761 5354854 0.99 1999 Polly From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 149995 4885331 0.99 2000 Breed From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 208378 6759080 0.99 2001 Tourette's From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 115591 3753246 0.99 2002 Blew From The Muddy Banks Of The Wishkah [Live] MPEG audio file Rock Kurt Cobain 216346 7096936 0.99 2003 Smells Like Teen Spirit Nevermind MPEG audio file Rock Kurt Cobain 301296 9823847 0.99 2004 In Bloom Nevermind MPEG audio file Rock Kurt Cobain 254928 8327077 0.99 2005 Come As You Are Nevermind MPEG audio file Rock Kurt Cobain 219219 7123357 0.99 2006 Breed Nevermind MPEG audio file Rock Kurt Cobain 183928 5984812 0.99 2007 Lithium Nevermind MPEG audio file Rock Kurt Cobain 256992 8404745 0.99 2008 Polly Nevermind MPEG audio file Rock Kurt Cobain 177031 5788407 0.99 2009 Territorial Pissings Nevermind MPEG audio file Rock Kurt Cobain 143281 4613880 0.99 2010 Drain You Nevermind MPEG audio file Rock Kurt Cobain 223973 7273440 0.99 2011 Lounge Act Nevermind MPEG audio file Rock Kurt Cobain 156786 5093635 0.99 2012 Stay Away Nevermind MPEG audio file Rock Kurt Cobain 212636 6956404 0.99 2013 On A Plain Nevermind MPEG audio file Rock Kurt Cobain 196440 6390635 0.99 2014 Something In The Way Nevermind MPEG audio file Rock Kurt Cobain 230556 7472168 0.99 2015 Time Compositores MPEG audio file Rock \N 96888 3124455 0.99 2016 P.S.Apareça Compositores MPEG audio file Rock \N 209188 6842244 0.99 2017 Sangue Latino Compositores MPEG audio file Rock \N 223033 7354184 0.99 2018 Folhas Secas Compositores MPEG audio file Rock \N 161253 5284522 0.99 2019 Poeira Compositores MPEG audio file Rock \N 267075 8784141 0.99 2020 Mágica Compositores MPEG audio file Rock \N 233743 7627348 0.99 2021 Quem Mata A Mulher Mata O Melhor Compositores MPEG audio file Rock \N 262791 8640121 0.99 2022 Mundaréu Compositores MPEG audio file Rock \N 217521 7158975 0.99 2023 O Braço Da Minha Guitarra Compositores MPEG audio file Rock \N 258351 8469531 0.99 2024 Deus Compositores MPEG audio file Rock \N 284160 9188110 0.99 2025 Mãe Terra Compositores MPEG audio file Rock \N 306625 9949269 0.99 2026 Às Vezes Compositores MPEG audio file Rock \N 330292 10706614 0.99 2027 Menino De Rua Compositores MPEG audio file Rock \N 329795 10784595 0.99 2028 Prazer E Fé Compositores MPEG audio file Rock \N 214831 7031383 0.99 2029 Elza Compositores MPEG audio file Rock \N 199105 6517629 0.99 2030 Requebra Olodum MPEG audio file Latin \N 240744 8010811 0.99 2031 Nossa Gente (Avisa Là) Olodum MPEG audio file Latin \N 188212 6233201 0.99 2032 Olodum - Alegria Geral Olodum MPEG audio file Latin \N 233404 7754245 0.99 2033 Madagáscar Olodum Olodum MPEG audio file Latin \N 252264 8270584 0.99 2034 Faraó Divindade Do Egito Olodum MPEG audio file Latin \N 228571 7523278 0.99 2035 Todo Amor (Asas Da Liberdade) Olodum MPEG audio file Latin \N 245133 8121434 0.99 2036 Denúncia Olodum MPEG audio file Latin \N 159555 5327433 0.99 2037 Olodum, A Banda Do Pelô Olodum MPEG audio file Latin \N 146599 4900121 0.99 2038 Cartao Postal Olodum MPEG audio file Latin \N 211565 7082301 0.99 2039 Jeito Faceiro Olodum MPEG audio file Latin \N 217286 7233608 0.99 2040 Revolta Olodum Olodum MPEG audio file Latin \N 230191 7557065 0.99 2041 Reggae Odoyá Olodum MPEG audio file Latin \N 224470 7499807 0.99 2042 Protesto Do Olodum (Ao Vivo) Olodum MPEG audio file Latin \N 206001 6766104 0.99 2043 Olodum - Smile (Instrumental) Olodum MPEG audio file Latin \N 235833 7871409 0.99 2044 Vulcão Dub - Fui Eu Acústico MTV MPEG audio file Latin Bi Ribeira/Herbert Vianna/João Barone 287059 9495202 0.99 2045 O Trem Da Juventude Acústico MTV MPEG audio file Latin Herbert Vianna 225880 7507655 0.99 2046 Manguetown Acústico MTV MPEG audio file Latin Chico Science/Dengue/Lúcio Maia 162925 5382018 0.99 2047 Um Amor, Um Lugar Acústico MTV MPEG audio file Latin Herbert Vianna 184555 6090334 0.99 2048 Bora-Bora Acústico MTV MPEG audio file Latin Herbert Vianna 182987 6036046 0.99 2049 Vai Valer Acústico MTV MPEG audio file Latin Herbert Vianna 206524 6899778 0.99 2050 I Feel Good (I Got You) - Sossego Acústico MTV MPEG audio file Latin James Brown/Tim Maia 244976 8091302 0.99 2051 Uns Dias Acústico MTV MPEG audio file Latin Herbert Vianna 240796 7931552 0.99 2052 Sincero Breu Acústico MTV MPEG audio file Latin C. A./C.A./Celso Alvim/Herbert Vianna/Mário Moura/Pedro Luís/Sidon Silva 208013 6921669 0.99 2053 Meu Erro Acústico MTV MPEG audio file Latin Herbert Vianna 188577 6192791 0.99 2054 Selvagem Acústico MTV MPEG audio file Latin Bi Ribeiro/Herbert Vianna/João Barone 148558 4942831 0.99 2055 Brasília 5:31 Acústico MTV MPEG audio file Latin Herbert Vianna 178337 5857116 0.99 2056 Tendo A Lua Acústico MTV MPEG audio file Latin Herbert Vianna/Tet Tillett 198922 6568180 0.99 2057 Que País É Este Acústico MTV MPEG audio file Latin Renato Russo 216685 7137865 0.99 2058 Navegar Impreciso Acústico MTV MPEG audio file Latin Herbert Vianna 262870 8761283 0.99 2059 Feira Moderna Acústico MTV MPEG audio file Latin Beto Guedes/Fernando Brant/L Borges 182517 6001793 0.99 2060 Tequila - Lourinha Bombril (Parate Y Mira) Acústico MTV MPEG audio file Latin Bahiano/Chuck Rio/Diego Blanco/Herbert Vianna 255738 8514961 0.99 2061 Vamo Batê Lata Acústico MTV MPEG audio file Latin Herbert Vianna 228754 7585707 0.99 2062 Life During Wartime Acústico MTV MPEG audio file Latin Chris Frantz/David Byrne/Jerry Harrison/Tina Weymouth 259186 8543439 0.99 2063 Nebulosa Do Amor Acústico MTV MPEG audio file Latin Herbert Vianna 203415 6732496 0.99 2064 Caleidoscópio Acústico MTV MPEG audio file Latin Herbert Vianna 256522 8484597 0.99 2065 Trac Trac Arquivo II MPEG audio file Latin Fito Paez/Herbert Vianna 231653 7638256 0.99 2066 Tendo A Lua Arquivo II MPEG audio file Latin Herbert Vianna/Tetê Tillet 219585 7342776 0.99 2067 Mensagen De Amor (2000) Arquivo II MPEG audio file Latin Herbert Vianna 183588 6061324 0.99 2068 Lourinha Bombril Arquivo II MPEG audio file Latin Bahiano/Diego Blanco/Herbert Vianna 159895 5301882 0.99 2069 La Bella Luna Arquivo II MPEG audio file Latin Herbert Vianna 192653 6428598 0.99 2070 Busca Vida Arquivo II MPEG audio file Latin Herbert Vianna 176431 5798663 0.99 2071 Uma Brasileira Arquivo II MPEG audio file Latin Carlinhos Brown/Herbert Vianna 217573 7280574 0.99 2072 Luis Inacio (300 Picaretas) Arquivo II MPEG audio file Latin Herbert Vianna 198191 6576790 0.99 2073 Saber Amar Arquivo II MPEG audio file Latin Herbert Vianna 202788 6723733 0.99 2074 Ela Disse Adeus Arquivo II MPEG audio file Latin Herbert Vianna 226298 7608999 0.99 2075 O Amor Nao Sabe Esperar Arquivo II MPEG audio file Latin Herbert Vianna 241084 8042534 0.99 2076 Aonde Quer Que Eu Va Arquivo II MPEG audio file Latin Herbert Vianna/Paulo Sérgio Valle 258089 8470121 0.99 2077 Caleidoscópio Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 211330 7000017 0.99 2078 Óculos Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 219271 7262419 0.99 2079 Cinema Mudo Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 227918 7612168 0.99 2080 Alagados Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 302393 10255463 0.99 2081 Lanterna Dos Afogados Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 190197 6264318 0.99 2082 Melô Do Marinheiro Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 208352 6905668 0.99 2083 Vital E Sua Moto Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 210207 6902878 0.99 2084 O Beco Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 189178 6293184 0.99 2085 Meu Erro Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 208431 6893533 0.99 2086 Perplexo Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 161175 5355013 0.99 2087 Me Liga Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 229590 7565912 0.99 2088 Quase Um Segundo Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 275644 8971355 0.99 2089 Selvagem Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 245890 8141084 0.99 2090 Romance Ideal Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 250070 8260477 0.99 2091 Será Que Vai Chover? Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 337057 11133830 0.99 2092 SKA Arquivo Os Paralamas Do Sucesso MPEG audio file Latin \N 148871 4943540 0.99 2093 Bark at the Moon Bark at the Moon (Remastered) Protected AAC audio file Rock O. Osbourne 257252 4601224 0.99 2094 I Don't Know Blizzard of Ozz Protected AAC audio file Rock B. Daisley, O. Osbourne & R. Rhoads 312980 5525339 0.99 2095 Crazy Train Blizzard of Ozz Protected AAC audio file Rock B. Daisley, O. Osbourne & R. Rhoads 295960 5255083 0.99 2096 Flying High Again Diary of a Madman (Remastered) Protected AAC audio file Rock L. Kerslake, O. Osbourne, R. Daisley & R. Rhoads 290851 5179599 0.99 2097 Mama, I'm Coming Home No More Tears (Remastered) Protected AAC audio file Rock L. Kilmister, O. Osbourne & Z. Wylde 251586 4302390 0.99 2098 No More Tears No More Tears (Remastered) Protected AAC audio file Rock J. Purdell, M. Inez, O. Osbourne, R. Castillo & Z. Wylde 444358 7362964 0.99 2099 I Don't Know Tribute MPEG audio file Metal O. Osbourne, R. Daisley, R. Rhoads 283088 9207869 0.99 2100 Crazy Train Tribute MPEG audio file Metal O. Osbourne, R. Daisley, R. Rhoads 322716 10517408 0.99 2101 Believer Tribute MPEG audio file Metal O. Osbourne, R. Daisley, R. Rhoads 308897 10003794 0.99 2102 Mr. Crowley Tribute MPEG audio file Metal O. Osbourne, R. Daisley, R. Rhoads 344241 11184130 0.99 2103 Flying High Again Tribute MPEG audio file Metal O. Osbourne, R. Daisley, R. Rhoads, L. Kerslake 261224 8481822 0.99 2104 Relvelation (Mother Earth) Tribute MPEG audio file Metal O. Osbourne, R. Daisley, R. Rhoads 349440 11367866 0.99 2105 Steal Away (The Night) Tribute MPEG audio file Metal O. Osbourne, R. Daisley, R. Rhoads 485720 15945806 0.99 2106 Suicide Solution (With Guitar Solo) Tribute MPEG audio file Metal O. Osbourne, R. Daisley, R. Rhoads 467069 15119938 0.99 2107 Iron Man Tribute MPEG audio file Metal A. F. Iommi, W. Ward, T. Butler, J. Osbourne 172120 5609799 0.99 2108 Children Of The Grave Tribute MPEG audio file Metal A. F. Iommi, W. Ward, T. Butler, J. Osbourne 357067 11626740 0.99 2109 Paranoid Tribute MPEG audio file Metal A. F. Iommi, W. Ward, T. Butler, J. Osbourne 176352 5729813 0.99 2110 Goodbye To Romance Tribute MPEG audio file Metal O. Osbourne, R. Daisley, R. Rhoads 334393 10841337 0.99 2111 No Bone Movies Tribute MPEG audio file Metal O. Osbourne, R. Daisley, R. Rhoads 249208 8095199 0.99 2112 Dee Tribute MPEG audio file Metal R. Rhoads 261302 8555963 0.99 2113 Shining In The Light Walking Into Clarksdale MPEG audio file Rock Jimmy Page, Robert Plant, Charlie Jones, Michael Lee 240796 7951688 0.99 2114 When The World Was Young Walking Into Clarksdale MPEG audio file Rock Jimmy Page, Robert Plant, Charlie Jones, Michael Lee 373394 12198930 0.99 2115 Upon A Golden Horse Walking Into Clarksdale MPEG audio file Rock Jimmy Page, Robert Plant, Charlie Jones, Michael Lee 232359 7594829 0.99 2116 Blue Train Walking Into Clarksdale MPEG audio file Rock Jimmy Page, Robert Plant, Charlie Jones, Michael Lee 405028 13170391 0.99 2117 Please Read The Letter Walking Into Clarksdale MPEG audio file Rock Jimmy Page, Robert Plant, Charlie Jones, Michael Lee 262112 8603372 0.99 2118 Most High Walking Into Clarksdale MPEG audio file Rock Jimmy Page, Robert Plant, Charlie Jones, Michael Lee 336535 10999203 0.99 2119 Heart In Your Hand Walking Into Clarksdale MPEG audio file Rock Jimmy Page, Robert Plant, Charlie Jones, Michael Lee 230896 7598019 0.99 2120 Walking Into Clarksdale Walking Into Clarksdale MPEG audio file Rock Jimmy Page, Robert Plant, Charlie Jones, Michael Lee 318511 10396315 0.99 2121 Burning Up Walking Into Clarksdale MPEG audio file Rock Jimmy Page, Robert Plant, Charlie Jones, Michael Lee 321619 10525136 0.99 2122 When I Was A Child Walking Into Clarksdale MPEG audio file Rock Jimmy Page, Robert Plant, Charlie Jones, Michael Lee 345626 11249456 0.99 2123 House Of Love Walking Into Clarksdale MPEG audio file Rock Jimmy Page, Robert Plant, Charlie Jones, Michael Lee 335699 10990880 0.99 2124 Sons Of Freedom Walking Into Clarksdale MPEG audio file Rock Jimmy Page, Robert Plant, Charlie Jones, Michael Lee 246465 8087944 0.99 2125 United Colours Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 330266 10939131 0.99 2126 Slug Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 281469 9295950 0.99 2127 Your Blue Room Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 328228 10867860 0.99 2128 Always Forever Now Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 383764 12727928 0.99 2129 A Different Kind Of Blue Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 120816 3884133 0.99 2130 Beach Sequence Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 212297 6928259 0.99 2131 Miss Sarajevo Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 340767 11064884 0.99 2132 Ito Okashi Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 205087 6572813 0.99 2133 One Minute Warning Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 279693 9335453 0.99 2134 Corpse (These Chains Are Way Too Long) Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 214909 6920451 0.99 2135 Elvis Ate America Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 180166 5851053 0.99 2136 Plot 180 Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 221596 7253729 0.99 2137 Theme From The Swan Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 203911 6638076 0.99 2138 Theme From Let's Go Native Original Soundtracks 1 MPEG audio file Soundtrack Brian Eno, Bono, Adam Clayton, The Edge & Larry Mullen Jnr. 186723 6179777 0.99 2139 Wrathchild The Beast Live MPEG audio file Rock Steve Harris 170396 5499390 0.99 2140 Killers The Beast Live MPEG audio file Rock Paul Di'Anno/Steve Harris 309995 10009697 0.99 2141 Prowler The Beast Live MPEG audio file Rock Steve Harris 240274 7782963 0.99 2142 Murders In The Rue Morgue The Beast Live MPEG audio file Rock Steve Harris 258638 8360999 0.99 2143 Women In Uniform The Beast Live MPEG audio file Rock Greg Macainsh 189936 6139651 0.99 2144 Remember Tomorrow The Beast Live MPEG audio file Rock Paul Di'Anno/Steve Harris 326426 10577976 0.99 2145 Sanctuary The Beast Live MPEG audio file Rock David Murray/Paul Di'Anno/Steve Harris 198844 6423543 0.99 2146 Running Free The Beast Live MPEG audio file Rock Paul Di'Anno/Steve Harris 199706 6483496 0.99 2147 Phantom Of The Opera The Beast Live MPEG audio file Rock Steve Harris 418168 13585530 0.99 2148 Iron Maiden The Beast Live MPEG audio file Rock Steve Harris 235232 7600077 0.99 2149 Corduroy Live On Two Legs [Live] MPEG audio file Rock Pearl Jam & Eddie Vedder 305293 9991106 0.99 2150 Given To Fly Live On Two Legs [Live] MPEG audio file Rock Eddie Vedder & Mike McCready 233613 7678347 0.99 2151 Hail, Hail Live On Two Legs [Live] MPEG audio file Rock Stone Gossard & Eddie Vedder & Jeff Ament & Mike McCready 223764 7364206 0.99 2152 Daughter Live On Two Legs [Live] MPEG audio file Rock Dave Abbruzzese & Jeff Ament & Stone Gossard & Mike McCready & Eddie Vedder 407484 13420697 0.99 2153 Elderly Woman Behind The Counter In A Small Town Live On Two Legs [Live] MPEG audio file Rock Dave Abbruzzese & Jeff Ament & Stone Gossard & Mike McCready & Eddie Vedder 229328 7509304 0.99 2154 Untitled Live On Two Legs [Live] MPEG audio file Rock Pearl Jam 122801 3957141 0.99 2155 MFC Live On Two Legs [Live] MPEG audio file Rock Eddie Vedder 148192 4817665 0.99 2156 Go Live On Two Legs [Live] MPEG audio file Rock Dave Abbruzzese & Jeff Ament & Stone Gossard & Mike McCready & Eddie Vedder 161541 5290810 0.99 2157 Red Mosquito Live On Two Legs [Live] MPEG audio file Rock Jeff Ament & Stone Gossard & Jack Irons & Mike McCready & Eddie Vedder 242991 7944923 0.99 2158 Even Flow Live On Two Legs [Live] MPEG audio file Rock Stone Gossard & Eddie Vedder 317100 10394239 0.99 2159 Off He Goes Live On Two Legs [Live] MPEG audio file Rock Eddie Vedder 343222 11245109 0.99 2160 Nothingman Live On Two Legs [Live] MPEG audio file Rock Jeff Ament & Eddie Vedder 278595 9107017 0.99 2161 Do The Evolution Live On Two Legs [Live] MPEG audio file Rock Eddie Vedder & Stone Gossard 225462 7377286 0.99 2162 Better Man Live On Two Legs [Live] MPEG audio file Rock Eddie Vedder 246204 8019563 0.99 2163 Black Live On Two Legs [Live] MPEG audio file Rock Stone Gossard & Eddie Vedder 415712 13580009 0.99 2164 F*Ckin' Up Live On Two Legs [Live] MPEG audio file Rock Neil Young 377652 12360893 0.99 2165 Life Wasted Pearl Jam MPEG audio file Alternative & Punk Stone Gossard 234344 7610169 0.99 2166 World Wide Suicide Pearl Jam MPEG audio file Alternative & Punk Eddie Vedder 209188 6885908 0.99 2167 Comatose Pearl Jam MPEG audio file Alternative & Punk Mike McCready & Stone Gossard 139990 4574516 0.99 2168 Severed Hand Pearl Jam MPEG audio file Alternative & Punk Eddie Vedder 270341 8817438 0.99 2169 Marker In The Sand Pearl Jam MPEG audio file Alternative & Punk Mike McCready 263235 8656578 0.99 2170 Parachutes Pearl Jam MPEG audio file Alternative & Punk Stone Gossard 216555 7074973 0.99 2171 Unemployable Pearl Jam MPEG audio file Alternative & Punk Matt Cameron & Mike McCready 184398 6066542 0.99 2172 Big Wave Pearl Jam MPEG audio file Alternative & Punk Jeff Ament 178573 5858788 0.99 2173 Gone Pearl Jam MPEG audio file Alternative & Punk Eddie Vedder 249547 8158204 0.99 2174 Wasted Reprise Pearl Jam MPEG audio file Alternative & Punk Stone Gossard 53733 1731020 0.99 2175 Army Reserve Pearl Jam MPEG audio file Alternative & Punk Jeff Ament 225567 7393771 0.99 2176 Come Back Pearl Jam MPEG audio file Alternative & Punk Eddie Vedder & Mike McCready 329743 10768701 0.99 2177 Inside Job Pearl Jam MPEG audio file Alternative & Punk Eddie Vedder & Mike McCready 428643 14006924 0.99 2178 Can't Keep Riot Act MPEG audio file Rock Eddie Vedder 219428 7215713 0.99 2179 Save You Riot Act MPEG audio file Rock Eddie Vedder/Jeff Ament/Matt Cameron/Mike McCready/Stone Gossard 230112 7609110 0.99 2180 Love Boat Captain Riot Act MPEG audio file Rock Eddie Vedder 276453 9016789 0.99 2181 Cropduster Riot Act MPEG audio file Rock Matt Cameron 231888 7588928 0.99 2182 Ghost Riot Act MPEG audio file Rock Jeff Ament 195108 6383772 0.99 2183 I Am Mine Riot Act MPEG audio file Rock Eddie Vedder 215719 7086901 0.99 2184 Thumbing My Way Riot Act MPEG audio file Rock Eddie Vedder 250226 8201437 0.99 2185 You Are Riot Act MPEG audio file Rock Matt Cameron 270863 8938409 0.99 2186 Get Right Riot Act MPEG audio file Rock Matt Cameron 158589 5223345 0.99 2187 Green Disease Riot Act MPEG audio file Rock Eddie Vedder 161253 5375818 0.99 2188 Help Help Riot Act MPEG audio file Rock Jeff Ament 215092 7033002 0.99 2189 Bushleager Riot Act MPEG audio file Rock Stone Gossard 237479 7849757 0.99 2190 1/2 Full Riot Act MPEG audio file Rock Jeff Ament 251010 8197219 0.99 2191 Arc Riot Act MPEG audio file Rock Pearl Jam 65593 2099421 0.99 2192 All or None Riot Act MPEG audio file Rock Stone Gossard 277655 9104728 0.99 2193 Once Ten MPEG audio file Rock Stone Gossard 231758 7561555 0.99 2194 Evenflow Ten MPEG audio file Rock Stone Gossard 293720 9622017 0.99 2195 Alive Ten MPEG audio file Rock Stone Gossard 341080 11176623 0.99 2196 Why Go Ten MPEG audio file Rock Jeff Ament 200254 6539287 0.99 2197 Black Ten MPEG audio file Rock Dave Krusen/Stone Gossard 343823 11213314 0.99 2198 Jeremy Ten MPEG audio file Rock Jeff Ament 318981 10447222 0.99 2199 Oceans Ten MPEG audio file Rock Jeff Ament/Stone Gossard 162194 5282368 0.99 2200 Porch Ten MPEG audio file Rock Eddie Vedder 210520 6877475 0.99 2201 Garden Ten MPEG audio file Rock Jeff Ament/Stone Gossard 299154 9740738 0.99 2202 Deep Ten MPEG audio file Rock Jeff Ament/Stone Gossard 258324 8432497 0.99 2203 Release Ten MPEG audio file Rock Jeff Ament/Mike McCready/Stone Gossard 546063 17802673 0.99 2204 Go Vs. MPEG audio file Rock Dave Abbruzzese/Eddie Vedder/Jeff Ament/Mike McCready/Stone Gossard 193123 6351920 0.99 2205 Animal Vs. MPEG audio file Rock Dave Abbruzzese/Eddie Vedder/Jeff Ament/Mike McCready/Stone Gossard 169325 5503459 0.99 2206 Daughter Vs. MPEG audio file Rock Dave Abbruzzese/Eddie Vedder/Jeff Ament/Mike McCready/Stone Gossard 235598 7824586 0.99 2207 Glorified G Vs. MPEG audio file Rock Dave Abbruzzese/Eddie Vedder/Jeff Ament/Mike McCready/Stone Gossard 206968 6772116 0.99 2208 Dissident Vs. MPEG audio file Rock Dave Abbruzzese/Eddie Vedder/Jeff Ament/Mike McCready/Stone Gossard 215510 7034500 0.99 2209 W.M.A. Vs. MPEG audio file Rock Dave Abbruzzese/Eddie Vedder/Jeff Ament/Mike McCready/Stone Gossard 359262 12037261 0.99 2210 Blood Vs. MPEG audio file Rock Dave Abbruzzese/Eddie Vedder/Jeff Ament/Mike McCready/Stone Gossard 170631 5551478 0.99 2211 Rearviewmirror Vs. MPEG audio file Rock Dave Abbruzzese/Eddie Vedder/Jeff Ament/Mike McCready/Stone Gossard 284186 9321053 0.99 2212 Rats Vs. MPEG audio file Rock Dave Abbruzzese/Eddie Vedder/Jeff Ament/Mike McCready/Stone Gossard 255425 8341934 0.99 2213 Elderly Woman Behind The Counter In A Small Town Vs. MPEG audio file Rock Dave Abbruzzese/Eddie Vedder/Jeff Ament/Mike McCready/Stone Gossard 196336 6499398 0.99 2214 Leash Vs. MPEG audio file Rock Dave Abbruzzese/Eddie Vedder/Jeff Ament/Mike McCready/Stone Gossard 189257 6191560 0.99 2215 Indifference Vs. MPEG audio file Rock Dave Abbruzzese/Eddie Vedder/Jeff Ament/Mike McCready/Stone Gossard 302053 9756133 0.99 2216 Johnny B. Goode Greatest Hits MPEG audio file Reggae \N 243200 8092024 0.99 2217 Don't Look Back Greatest Hits MPEG audio file Reggae \N 221100 7344023 0.99 2218 Jah Seh No Greatest Hits MPEG audio file Reggae \N 276871 9134476 0.99 2219 I'm The Toughest Greatest Hits MPEG audio file Reggae \N 230191 7657594 0.99 2220 Nothing But Love Greatest Hits MPEG audio file Reggae \N 221570 7335228 0.99 2221 Buk-In-Hamm Palace Greatest Hits MPEG audio file Reggae \N 265665 8964369 0.99 2222 Bush Doctor Greatest Hits MPEG audio file Reggae \N 239751 7942299 0.99 2223 Wanted Dread And Alive Greatest Hits MPEG audio file Reggae \N 260310 8670933 0.99 2224 Mystic Man Greatest Hits MPEG audio file Reggae \N 353671 11812170 0.99 2225 Coming In Hot Greatest Hits MPEG audio file Reggae \N 213054 7109414 0.99 2226 Pick Myself Up Greatest Hits MPEG audio file Reggae \N 234684 7788255 0.99 2227 Crystal Ball Greatest Hits MPEG audio file Reggae \N 309733 10319296 0.99 2228 Equal Rights Downpresser Man Greatest Hits MPEG audio file Reggae \N 366733 12086524 0.99 2229 Speak To Me/Breathe Dark Side Of The Moon MPEG audio file Rock Mason/Waters, Gilmour, Wright 234213 7631305 0.99 2230 On The Run Dark Side Of The Moon MPEG audio file Rock Gilmour, Waters 214595 7206300 0.99 2231 Time Dark Side Of The Moon MPEG audio file Rock Mason, Waters, Wright, Gilmour 425195 13955426 0.99 2232 The Great Gig In The Sky Dark Side Of The Moon MPEG audio file Rock Wright, Waters 284055 9147563 0.99 2233 Money Dark Side Of The Moon MPEG audio file Rock Waters 391888 12930070 0.99 2234 Us And Them Dark Side Of The Moon MPEG audio file Rock Waters, Wright 461035 15000299 0.99 2235 Any Colour You Like Dark Side Of The Moon MPEG audio file Rock Gilmour, Mason, Wright, Waters 205740 6707989 0.99 2236 Brain Damage Dark Side Of The Moon MPEG audio file Rock Waters 230556 7497655 0.99 2237 Eclipse Dark Side Of The Moon MPEG audio file Rock Waters 125361 4065299 0.99 2238 ZeroVinteUm Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 315637 10426550 0.99 2239 Queimando Tudo Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 172591 5723677 0.99 2240 Hip Hop Rio Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 151536 4991935 0.99 2241 Bossa Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 29048 967098 0.99 2242 100% HardCore Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 165146 5407744 0.99 2243 Biruta Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 213263 7108200 0.99 2244 Mão Na Cabeça Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 202631 6642753 0.99 2245 O Bicho Tá Pregando Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 171964 5683369 0.99 2246 Adoled (Ocean) Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 185103 6009946 0.99 2247 Seus Amigos Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 100858 3304738 0.99 2248 Paga Pau Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 197485 6529041 0.99 2249 Rappers Reais Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 202004 6684160 0.99 2250 Nega Do Cabelo Duro Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 121808 4116536 0.99 2251 Hemp Family Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 205923 6806900 0.99 2252 Quem Me Cobrou? Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 121704 3947664 0.99 2253 Se Liga Os Cães Ladram Mas A Caravana Não Pára MPEG audio file Hip Hop/Rap \N 410409 13559173 0.99 2254 Bohemian Rhapsody Greatest Hits I MPEG audio file Rock Mercury, Freddie 358948 11619868 0.99 2255 Another One Bites The Dust Greatest Hits I MPEG audio file Rock Deacon, John 216946 7172355 0.99 2256 Killer Queen Greatest Hits I MPEG audio file Rock Mercury, Freddie 182099 5967749 0.99 2257 Fat Bottomed Girls Greatest Hits I MPEG audio file Rock May, Brian 204695 6630041 0.99 2258 Bicycle Race Greatest Hits I MPEG audio file Rock Mercury, Freddie 183823 6012409 0.99 2259 You're My Best Friend Greatest Hits I MPEG audio file Rock Deacon, John 172225 5602173 0.99 2260 Don't Stop Me Now Greatest Hits I MPEG audio file Rock Mercury, Freddie 211826 6896666 0.99 2261 Save Me Greatest Hits I MPEG audio file Rock May, Brian 228832 7444624 0.99 2262 Crazy Little Thing Called Love Greatest Hits I MPEG audio file Rock Mercury, Freddie 164231 5435501 0.99 2263 Somebody To Love Greatest Hits I MPEG audio file Rock Mercury, Freddie 297351 9650520 0.99 2264 Now I'm Here Greatest Hits I MPEG audio file Rock May, Brian 255346 8328312 0.99 2265 Good Old-Fashioned Lover Boy Greatest Hits I MPEG audio file Rock Mercury, Freddie 175960 5747506 0.99 2266 Play The Game Greatest Hits I MPEG audio file Rock Mercury, Freddie 213368 6915832 0.99 2267 Flash Greatest Hits I MPEG audio file Rock May, Brian 168489 5464986 0.99 2268 Seven Seas Of Rhye Greatest Hits I MPEG audio file Rock Mercury, Freddie 170553 5539957 0.99 2269 We Will Rock You Greatest Hits I MPEG audio file Rock Deacon, John/May, Brian 122880 4026955 0.99 2270 We Are The Champions Greatest Hits I MPEG audio file Rock Mercury, Freddie 180950 5880231 0.99 2271 We Will Rock You News Of The World MPEG audio file Rock May 122671 4026815 0.99 2272 We Are The Champions News Of The World MPEG audio file Rock Mercury 182883 5939794 0.99 2273 Sheer Heart Attack News Of The World MPEG audio file Rock Taylor 207386 6642685 0.99 2274 All Dead, All Dead News Of The World MPEG audio file Rock May 190119 6144878 0.99 2275 Spread Your Wings News Of The World MPEG audio file Rock Deacon 275356 8936992 0.99 2276 Fight From The Inside News Of The World MPEG audio file Rock Taylor 184737 6078001 0.99 2277 Get Down, Make Love News Of The World MPEG audio file Rock Mercury 231235 7509333 0.99 2278 Sleep On The Sidewalk News Of The World MPEG audio file Rock May 187428 6099840 0.99 2279 Who Needs You News Of The World MPEG audio file Rock Deacon 186958 6292969 0.99 2280 It's Late News Of The World MPEG audio file Rock May 386194 12519388 0.99 2281 My Melancholy Blues News Of The World MPEG audio file Rock Mercury 206471 6691838 0.99 2282 Shiny Happy People Out Of Time MPEG audio file Alternative & Punk Bill Berry/Michael Stipe/Mike Mills/Peter Buck 226298 7475323 0.99 2283 Me In Honey Out Of Time MPEG audio file Alternative & Punk Bill Berry/Michael Stipe/Mike Mills/Peter Buck 246674 8194751 0.99 2284 Radio Song Out Of Time MPEG audio file Alternative & Punk Bill Berry/Michael Stipe/Mike Mills/Peter Buck 255477 8421172 0.99 2285 Pop Song 89 Green MPEG audio file Alternative & Punk Bill Berry-Peter Buck-Mike Mills-Michael Stipe 185730 6132218 0.99 2286 Get Up Green MPEG audio file Alternative & Punk Bill Berry-Peter Buck-Mike Mills-Michael Stipe 160235 5264376 0.99 2287 You Are The Everything Green MPEG audio file Alternative & Punk Bill Berry-Peter Buck-Mike Mills-Michael Stipe 226298 7373181 0.99 2288 Stand Green MPEG audio file Alternative & Punk Bill Berry-Peter Buck-Mike Mills-Michael Stipe 192862 6349090 0.99 2289 World Leader Pretend Green MPEG audio file Alternative & Punk Bill Berry-Peter Buck-Mike Mills-Michael Stipe 259761 8537282 0.99 2290 The Wrong Child Green MPEG audio file Alternative & Punk Bill Berry-Peter Buck-Mike Mills-Michael Stipe 216633 7065060 0.99 2291 Orange Crush Green MPEG audio file Alternative & Punk Bill Berry-Peter Buck-Mike Mills-Michael Stipe 231706 7742894 0.99 2292 Turn You Inside-Out Green MPEG audio file Alternative & Punk Bill Berry-Peter Buck-Mike Mills-Michael Stipe 257358 8395671 0.99 2293 Hairshirt Green MPEG audio file Alternative & Punk Bill Berry-Peter Buck-Mike Mills-Michael Stipe 235911 7753807 0.99 2294 I Remember California Green MPEG audio file Alternative & Punk Bill Berry-Peter Buck-Mike Mills-Michael Stipe 304013 9950311 0.99 2295 Untitled Green MPEG audio file Alternative & Punk Bill Berry-Peter Buck-Mike Mills-Michael Stipe 191503 6332426 0.99 2296 How The West Was Won And Where It Got Us New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 271151 8994291 0.99 2297 The Wake-Up Bomb New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 308532 10077337 0.99 2298 New Test Leper New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 326791 10866447 0.99 2299 Undertow New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 309498 10131005 0.99 2300 E-Bow The Letter New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 324963 10714576 0.99 2301 Leave New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 437968 14433365 0.99 2302 Departure New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 209423 6818425 0.99 2303 Bittersweet Me New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 245812 8114718 0.99 2304 Be Mine New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 333087 10790541 0.99 2305 Binky The Doormat New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 301688 9950320 0.99 2306 Zither New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 154148 5032962 0.99 2307 So Fast, So Numb New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 252682 8341223 0.99 2308 Low Desert New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 212062 6989288 0.99 2309 Electrolite New Adventures In Hi-Fi MPEG audio file Rock Bill Berry-Peter Buck-Mike Mills-Michael Stipe 245315 8051199 0.99 2310 Losing My Religion Out Of Time MPEG audio file Alternative & Punk Bill Berry/Michael Stipe/Mike Mills/Peter Buck 269035 8885672 0.99 2311 Low Out Of Time MPEG audio file Alternative & Punk Bill Berry/Michael Stipe/Mike Mills/Peter Buck 296777 9633860 0.99 2312 Near Wild Heaven Out Of Time MPEG audio file Alternative & Punk Bill Berry/Michael Stipe/Mike Mills/Peter Buck 199862 6610009 0.99 2313 Endgame Out Of Time MPEG audio file Alternative & Punk Bill Berry/Michael Stipe/Mike Mills/Peter Buck 230687 7664479 0.99 2314 Belong Out Of Time MPEG audio file Alternative & Punk Bill Berry/Michael Stipe/Mike Mills/Peter Buck 247013 8219375 0.99 2315 Half A World Away Out Of Time MPEG audio file Alternative & Punk Bill Berry/Michael Stipe/Mike Mills/Peter Buck 208431 6837283 0.99 2316 Texarkana Out Of Time MPEG audio file Alternative & Punk Bill Berry/Michael Stipe/Mike Mills/Peter Buck 220081 7260681 0.99 2317 Country Feedback Out Of Time MPEG audio file Alternative & Punk Bill Berry/Michael Stipe/Mike Mills/Peter Buck 249782 8178943 0.99 2318 Carnival Of Sorts The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 233482 7669658 0.99 2319 Radio Free Aurope The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 245315 8163490 0.99 2320 Perfect Circle The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 208509 6898067 0.99 2321 Talk About The Passion The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 203206 6725435 0.99 2322 So Central Rain The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 194768 6414550 0.99 2323 Don't Go Back To Rockville The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 272352 9010715 0.99 2324 Pretty Persuasion The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 229929 7577754 0.99 2325 Green Grow The Rushes The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 225671 7422425 0.99 2326 Can't Get There From Here The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 220630 7285936 0.99 2327 Driver 8 The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 204747 6779076 0.99 2328 Fall On Me The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 172016 5676811 0.99 2329 I Believe The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 227709 7542929 0.99 2330 Cuyahoga The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 260623 8591057 0.99 2331 The One I Love The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 197355 6495125 0.99 2332 The Finest Worksong The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 229276 7574856 0.99 2333 It's The End Of The World As We Know It (And I Feel Fine) The Best Of R.E.M.: The IRS Years MPEG audio file Alternative & Punk R.E.M. 244819 7998987 0.99 2334 Infeliz Natal Cesta Básica MPEG audio file Alternative & Punk Rodolfo 138266 4503299 0.99 2335 A Sua Cesta Básica MPEG audio file Alternative & Punk Rodolfo 142132 4622064 0.99 2336 Papeau Nuky Doe Cesta Básica MPEG audio file Alternative & Punk Rodolfo 121652 3995022 0.99 2337 Merry Christmas Cesta Básica MPEG audio file Alternative & Punk Rodolfo 126040 4166652 0.99 2338 Bodies Cesta Básica MPEG audio file Alternative & Punk Rodolfo 180035 5873778 0.99 2339 Puteiro Em João Pessoa Cesta Básica MPEG audio file Alternative & Punk Rodolfo 195578 6395490 0.99 2340 Esporrei Na Manivela Cesta Básica MPEG audio file Alternative & Punk Rodolfo 293276 9618499 0.99 2341 Bê-a-Bá Cesta Básica MPEG audio file Alternative & Punk Rodolfo 249051 8130636 0.99 2342 Cajueiro Cesta Básica MPEG audio file Alternative & Punk Rodolfo 158589 5164837 0.99 2343 Palhas Do Coqueiro Cesta Básica MPEG audio file Alternative & Punk Rodolfo 133851 4396466 0.99 2344 Maluco Beleza Raul Seixas MPEG audio file Rock \N 203206 6628067 0.99 2345 O Dia Em Que A Terra Parou Raul Seixas MPEG audio file Rock \N 261720 8586678 0.99 2346 No Fundo Do Quintal Da Escola Raul Seixas MPEG audio file Rock \N 177606 5836953 0.99 2347 O Segredo Do Universo Raul Seixas MPEG audio file Rock \N 192679 6315187 0.99 2348 As Profecias Raul Seixas MPEG audio file Rock \N 232515 7657732 0.99 2349 Mata Virgem Raul Seixas MPEG audio file Rock \N 142602 4690029 0.99 2350 Sapato 36 Raul Seixas MPEG audio file Rock \N 196702 6507301 0.99 2351 Todo Mundo Explica Raul Seixas MPEG audio file Rock \N 134896 4449772 0.99 2352 Que Luz É Essa Raul Seixas MPEG audio file Rock \N 165067 5620058 0.99 2353 Diamante De Mendigo Raul Seixas MPEG audio file Rock \N 206053 6775101 0.99 2354 Negócio É Raul Seixas MPEG audio file Rock \N 175464 5826775 0.99 2355 Muita Estrela, Pouca Constelação Raul Seixas MPEG audio file Rock \N 268068 8781021 0.99 2356 Século XXI Raul Seixas MPEG audio file Rock \N 244897 8040563 0.99 2357 Rock Das Aranhas (Ao Vivo) (Live) Raul Seixas MPEG audio file Rock \N 231836 7591945 0.99 2358 The Power Of Equality Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 243591 8148266 0.99 2359 If You Have To Ask Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 216790 7199175 0.99 2360 Breaking The Girl Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 295497 9805526 0.99 2361 Funky Monks Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 323395 10708168 0.99 2362 Suck My Kiss Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 217234 7129137 0.99 2363 I Could Have Lied Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 244506 8088244 0.99 2364 Mellowship Slinky In B Major Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 240091 7971384 0.99 2365 The Righteous & The Wicked Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 248084 8134096 0.99 2366 Give It Away Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 283010 9308997 0.99 2367 Blood Sugar Sex Magik Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 271229 8940573 0.99 2368 Under The Bridge Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 264359 8682716 0.99 2369 Naked In The Rain Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 265717 8724674 0.99 2370 Apache Rose Peacock Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 282226 9312588 0.99 2371 The Greeting Song Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 193593 6346507 0.99 2372 My Lovely Man Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 279118 9220114 0.99 2373 Sir Psycho Sexy Blood Sugar Sex Magik MPEG audio file Alternative & Punk Anthony Kiedis/Chad Smith/Flea/John Frusciante 496692 16354362 0.99 2374 They're Red Hot Blood Sugar Sex Magik MPEG audio file Alternative & Punk Robert Johnson 71941 2382220 0.99 2375 By The Way By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 218017 7197430 0.99 2376 Universally Speaking By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 259213 8501904 0.99 2377 This Is The Place By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 257906 8469765 0.99 2611 Rise Beyond Good And Evil MPEG audio file Rock Billy Duffy/Ian Astbury 219088 7106195 0.99 2378 Dosed By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 312058 10235611 0.99 2379 Don't Forget Me By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 277995 9107071 0.99 2380 The Zephyr Song By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 232960 7690312 0.99 2381 Can't Stop By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 269400 8872479 0.99 2382 I Could Die For You By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 193906 6333311 0.99 2383 Midnight By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 295810 9702450 0.99 2384 Throw Away Your Television By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 224574 7483526 0.99 2385 Cabron By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 218592 7458864 0.99 2386 Tear By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 317413 10395500 0.99 2387 On Mercury By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 208509 6834762 0.99 2388 Minor Thing By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 217835 7148115 0.99 2389 Warm Tape By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 256653 8358200 0.99 2390 Venice Queen By The Way MPEG audio file Rock Anthony Kiedis, Flea, John Frusciante, and Chad Smith 369110 12280381 0.99 2391 Around The World Californication MPEG audio file Rock Anthony Kiedis/Chad Smith/Flea/John Frusciante 238837 7859167 0.99 2392 Parallel Universe Californication MPEG audio file Rock Red Hot Chili Peppers 270654 8958519 0.99 2393 Scar Tissue Californication MPEG audio file Rock Red Hot Chili Peppers 217469 7153744 0.99 2394 Otherside Californication MPEG audio file Rock Red Hot Chili Peppers 255973 8357989 0.99 2395 Get On Top Californication MPEG audio file Rock Red Hot Chili Peppers 198164 6587883 0.99 2396 Californication Californication MPEG audio file Rock Red Hot Chili Peppers 321671 10568999 0.99 2397 Easily Californication MPEG audio file Rock Red Hot Chili Peppers 231418 7504534 0.99 2398 Porcelain Californication MPEG audio file Rock Anthony Kiedis/Chad Smith/Flea/John Frusciante 163787 5278793 0.99 2399 Emit Remmus Californication MPEG audio file Rock Red Hot Chili Peppers 240300 7901717 0.99 2400 I Like Dirt Californication MPEG audio file Rock Red Hot Chili Peppers 157727 5225917 0.99 2401 This Velvet Glove Californication MPEG audio file Rock Red Hot Chili Peppers 225280 7480537 0.99 2402 Savior Californication MPEG audio file Rock Anthony Kiedis/Chad Smith/Flea/John Frusciante 292493 9551885 0.99 2403 Purple Stain Californication MPEG audio file Rock Red Hot Chili Peppers 253440 8359971 0.99 2404 Right On Time Californication MPEG audio file Rock Red Hot Chili Peppers 112613 3722219 0.99 2405 Road Trippin' Californication MPEG audio file Rock Red Hot Chili Peppers 205635 6685831 0.99 2406 The Spirit Of Radio Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 299154 9862012 0.99 2407 The Trees Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 285126 9345473 0.99 2408 Something For Nothing Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 240770 7898395 0.99 2409 Freewill Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 324362 10694110 0.99 2410 Xanadu Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 667428 21753168 0.99 2411 Bastille Day Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 280528 9264769 0.99 2412 By-Tor And The Snow Dog Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 519888 17076397 0.99 2413 Anthem Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 264515 8693343 0.99 2414 Closer To The Heart Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 175412 5767005 0.99 2415 2112 Overture Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 272718 8898066 0.99 2416 The Temples Of Syrinx Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 133459 4360163 0.99 2417 La Villa Strangiato Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 577488 19137855 0.99 2418 Fly By Night Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 202318 6683061 0.99 2419 Finding My Way Retrospective I (1974-1980) MPEG audio file Rock Geddy Lee And Alex Lifeson/Geddy Lee And Neil Peart/Rush 305528 9985701 0.99 2420 Jingo Santana - As Years Go By MPEG audio file Rock M.Babatunde Olantunji 592953 19736495 0.99 2421 El Corazon Manda Santana - As Years Go By MPEG audio file Rock E.Weiss 713534 23519583 0.99 2422 La Puesta Del Sol Santana - As Years Go By MPEG audio file Rock E.Weiss 628062 20614621 0.99 2423 Persuasion Santana - As Years Go By MPEG audio file Rock Carlos Santana 318432 10354751 0.99 2424 As The Years Go by Santana - As Years Go By MPEG audio file Rock Albert King 233064 7566829 0.99 2425 Soul Sacrifice Santana - As Years Go By MPEG audio file Rock Carlos Santana 296437 9801120 0.99 2426 Fried Neckbones And Home Fries Santana - As Years Go By MPEG audio file Rock W.Correa 638563 20939646 0.99 2427 Santana Jam Santana - As Years Go By MPEG audio file Rock Carlos Santana 882834 29207100 0.99 2428 Evil Ways Santana Live MPEG audio file Rock \N 475402 15289235 0.99 2429 We've Got To Get Together/Jingo Santana Live MPEG audio file Rock \N 1070027 34618222 0.99 2430 Rock Me Santana Live MPEG audio file Rock \N 94720 3037596 0.99 2431 Just Ain't Good Enough Santana Live MPEG audio file Rock \N 850259 27489067 0.99 2432 Funky Piano Santana Live MPEG audio file Rock \N 934791 30200730 0.99 2433 The Way You Do To Mer Santana Live MPEG audio file Rock \N 618344 20028702 0.99 2434 Holding Back The Years Greatest Hits MPEG audio file Rock Mick Hucknall and Neil Moss 270053 8833220 0.99 2435 Money's Too Tight To Mention Greatest Hits MPEG audio file Rock John and William Valentine 268408 8861921 0.99 2436 The Right Thing Greatest Hits MPEG audio file Rock Mick Hucknall 262687 8624063 0.99 2437 It's Only Love Greatest Hits MPEG audio file Rock Jimmy and Vella Cameron 232594 7659017 0.99 2438 A New Flame Greatest Hits MPEG audio file Rock Mick Hucknall 237662 7822875 0.99 2439 You've Got It Greatest Hits MPEG audio file Rock Mick Hucknall and Lamont Dozier 235232 7712845 0.99 2440 If You Don't Know Me By Now Greatest Hits MPEG audio file Rock Kenny Gamble and Leon Huff 206524 6712634 0.99 2441 Stars Greatest Hits MPEG audio file Rock Mick Hucknall 248137 8194906 0.99 2442 Something Got Me Started Greatest Hits MPEG audio file Rock Mick Hucknall and Fritz McIntyre 239595 7997139 0.99 2443 Thrill Me Greatest Hits MPEG audio file Rock Mick Hucknall and Fritz McIntyre 303934 10034711 0.99 2444 Your Mirror Greatest Hits MPEG audio file Rock Mick Hucknall 240666 7893821 0.99 2445 For Your Babies Greatest Hits MPEG audio file Rock Mick Hucknall 256992 8408803 0.99 2446 So Beautiful Greatest Hits MPEG audio file Rock Mick Hucknall 298083 9837832 0.99 2447 Angel Greatest Hits MPEG audio file Rock Carolyn Franklin and Sonny Saunders 240561 7880256 0.99 2448 Fairground Greatest Hits MPEG audio file Rock Mick Hucknall 263888 8793094 0.99 2612 Take The Power Beyond Good And Evil MPEG audio file Rock Billy Duffy/Ian Astbury 235755 7650012 0.99 2449 Água E Fogo Maquinarama MPEG audio file Rock Chico Amaral/Edgard Scandurra/Samuel Rosa 278987 9272272 0.99 2450 Três Lados Maquinarama MPEG audio file Rock Chico Amaral/Samuel Rosa 233665 7699609 0.99 2451 Ela Desapareceu Maquinarama MPEG audio file Rock Chico Amaral/Samuel Rosa 250122 8289200 0.99 2452 Balada Do Amor Inabalável Maquinarama MPEG audio file Rock Fausto Fawcett/Samuel Rosa 240613 8025816 0.99 2453 Canção Noturna Maquinarama MPEG audio file Rock Chico Amaral/Lelo Zanettik 238628 7874774 0.99 2454 Muçulmano Maquinarama MPEG audio file Rock Leão, Rodrigo F./Samuel Rosa 249600 8270613 0.99 2455 Maquinarama Maquinarama MPEG audio file Rock Chico Amaral/Samuel Rosa 245629 8213710 0.99 2456 Rebelião Maquinarama MPEG audio file Rock Chico Amaral/Samuel Rosa 298527 9817847 0.99 2457 A Última Guerra Maquinarama MPEG audio file Rock Leão, Rodrigo F./Lô Borges/Samuel Rosa 314723 10480391 0.99 2458 Fica Maquinarama MPEG audio file Rock Chico Amaral/Samuel Rosa 272169 8980972 0.99 2459 Ali Maquinarama MPEG audio file Rock Nando Reis/Samuel Rosa 306390 10110351 0.99 2460 Preto Damião Maquinarama MPEG audio file Rock Chico Amaral/Samuel Rosa 264568 8697658 0.99 2461 É Uma Partida De Futebol O Samba Poconé MPEG audio file Rock Samuel Rosa 1071 38747 0.99 2462 Eu Disse A Ela O Samba Poconé MPEG audio file Rock Samuel Rosa 254223 8479463 0.99 2463 Zé Trindade O Samba Poconé MPEG audio file Rock Samuel Rosa 247954 8331310 0.99 2464 Garota Nacional O Samba Poconé MPEG audio file Rock Samuel Rosa 317492 10511239 0.99 2465 Tão Seu O Samba Poconé MPEG audio file Rock Samuel Rosa 243748 8133126 0.99 2466 Sem Terra O Samba Poconé MPEG audio file Rock Samuel Rosa 279353 9196411 0.99 2467 Os Exilados O Samba Poconé MPEG audio file Rock Samuel Rosa 245551 8222095 0.99 2468 Um Dia Qualquer O Samba Poconé MPEG audio file Rock Samuel Rosa 292414 9805570 0.99 2469 Los Pretos O Samba Poconé MPEG audio file Rock Samuel Rosa 239229 8025667 0.99 2470 Sul Da América O Samba Poconé MPEG audio file Rock Samuel Rosa 254928 8484871 0.99 2471 Poconé O Samba Poconé MPEG audio file Rock Samuel Rosa 318406 10771610 0.99 2472 Lucky 13 Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 189387 6200617 0.99 2473 Aeroplane Flies High Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 473391 15408329 0.99 2474 Because You Are Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 226403 7405137 0.99 2475 Slow Dawn Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 192339 6269057 0.99 2476 Believe Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk James Iha 192940 6320652 0.99 2477 My Mistake Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 240901 7843477 0.99 2478 Marquis In Spades Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 192731 6304789 0.99 2479 Here's To The Atom Bomb Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 266893 8763140 0.99 2480 Sparrow Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 176822 5696989 0.99 2481 Waiting Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 228336 7627641 0.99 2482 Saturnine Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 229877 7523502 0.99 2483 Rock On Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk David Cook 366471 12133825 0.99 2484 Set The Ray To Jerry Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 249364 8215184 0.99 2485 Winterlong Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 299389 9670616 0.99 2486 Soot & Stars Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 399986 12866557 0.99 2487 Blissed & Gone Judas 0: B-Sides and Rarities MPEG audio file Alternative & Punk Billy Corgan 286302 9305998 0.99 2488 Siva Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 261172 8576622 0.99 2489 Rhinocerous Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 353462 11526684 0.99 2490 Drown Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 270497 8883496 0.99 2491 Cherub Rock Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 299389 9786739 0.99 2492 Today Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 202213 6596933 0.99 2493 Disarm Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 198556 6508249 0.99 2494 Landslide Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Stevie Nicks 190275 6187754 0.99 2495 Bullet With Butterfly Wings Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 257306 8431747 0.99 2496 1979 Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 263653 8728470 0.99 2497 Zero Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 161123 5267176 0.99 2498 Tonight, Tonight Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 255686 8351543 0.99 2499 Eye Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 294530 9784201 0.99 2500 Ava Adore Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 261433 8590412 0.99 2501 Perfect Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 203023 6734636 0.99 2502 The Everlasting Gaze Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 242155 7844404 0.99 2503 Stand Inside Your Love Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 253753 8270113 0.99 2504 Real Love Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 250697 8025896 0.99 2505 [Untitled] Rotten Apples: Greatest Hits MPEG audio file Alternative & Punk Billy Corgan 231784 7689713 0.99 2506 Nothing To Say A-Sides MPEG audio file Rock Chris Cornell/Kim Thayil 238027 7744833 0.99 2507 Flower A-Sides MPEG audio file Rock Chris Cornell/Kim Thayil 208822 6830732 0.99 2508 Loud Love A-Sides MPEG audio file Rock Chris Cornell 297456 9660953 0.99 2509 Hands All Over A-Sides MPEG audio file Rock Chris Cornell/Kim Thayil 362475 11893108 0.99 2510 Get On The Snake A-Sides MPEG audio file Rock Chris Cornell/Kim Thayil 225123 7313744 0.99 2511 Jesus Christ Pose A-Sides MPEG audio file Rock Ben Shepherd/Chris Cornell/Kim Thayil/Matt Cameron 352966 11739886 0.99 2512 Outshined A-Sides MPEG audio file Rock Chris Cornell 312476 10274629 0.99 2513 Rusty Cage A-Sides MPEG audio file Rock Chris Cornell 267728 8779485 0.99 2514 Spoonman A-Sides MPEG audio file Rock Chris Cornell 248476 8289906 0.99 2515 The Day I Tried To Live A-Sides MPEG audio file Rock Chris Cornell 321175 10507137 0.99 2516 Black Hole Sun A-Sides MPEG audio file Rock Soundgarden 320365 10425229 0.99 2517 Fell On Black Days A-Sides MPEG audio file Rock Chris Cornell 282331 9256082 0.99 2518 Pretty Noose A-Sides MPEG audio file Rock Chris Cornell 253570 8317931 0.99 2519 Burden In My Hand A-Sides MPEG audio file Rock Chris Cornell 292153 9659911 0.99 2520 Blow Up The Outside World A-Sides MPEG audio file Rock Chris Cornell 347898 11379527 0.99 2521 Ty Cobb A-Sides MPEG audio file Rock Ben Shepherd/Chris Cornell 188786 6233136 0.99 2522 Bleed Together A-Sides MPEG audio file Rock Chris Cornell 232202 7597074 0.99 2523 Morning Dance Morning Dance MPEG audio file Jazz Jay Beckenstein 238759 8101979 0.99 2524 Jubilee Morning Dance MPEG audio file Jazz Jeremy Wall 275147 9151846 0.99 2525 Rasul Morning Dance MPEG audio file Jazz Jeremy Wall 238315 7854737 0.99 2526 Song For Lorraine Morning Dance MPEG audio file Jazz Jay Beckenstein 240091 8101723 0.99 2527 Starburst Morning Dance MPEG audio file Jazz Jeremy Wall 291500 9768399 0.99 2528 Heliopolis Morning Dance MPEG audio file Jazz Jay Beckenstein 338729 11365655 0.99 2529 It Doesn't Matter Morning Dance MPEG audio file Jazz Chet Catallo 270027 9034177 0.99 2530 Little Linda Morning Dance MPEG audio file Jazz Jeremy Wall 264019 8958743 0.99 2531 End Of Romanticism Morning Dance MPEG audio file Jazz Rick Strauss 320078 10553155 0.99 2532 The House Is Rockin' In Step MPEG audio file Blues Doyle Bramhall/Stevie Ray Vaughan 144352 4706253 0.99 2533 Crossfire In Step MPEG audio file Blues B. Carter/C. Layton/R. Ellsworth/R. Wynans/T. Shannon 251219 8238033 0.99 2534 Tightrope In Step MPEG audio file Blues Doyle Bramhall/Stevie Ray Vaughan 281155 9254906 0.99 2535 Let Me Love You Baby In Step MPEG audio file Blues Willie Dixon 164127 5378455 0.99 2536 Leave My Girl Alone In Step MPEG audio file Blues B. Guy 256365 8438021 0.99 2537 Travis Walk In Step MPEG audio file Blues Stevie Ray Vaughan 140826 4650979 0.99 2538 Wall Of Denial In Step MPEG audio file Blues Doyle Bramhall/Stevie Ray Vaughan 336927 11085915 0.99 2539 Scratch-N-Sniff In Step MPEG audio file Blues Doyle Bramhall/Stevie Ray Vaughan 163422 5353627 0.99 2540 Love Me Darlin' In Step MPEG audio file Blues C. Burnett 201586 6650869 0.99 2541 Riviera Paradise In Step MPEG audio file Blues Stevie Ray Vaughan 528692 17232776 0.99 2542 Dead And Bloated Core MPEG audio file Rock R. DeLeo/Weiland 310386 10170433 0.99 2543 Sex Type Thing Core MPEG audio file Rock D. DeLeo/Kretz/Weiland 218723 7102064 0.99 2544 Wicked Garden Core MPEG audio file Rock D. DeLeo/R. DeLeo/Weiland 245368 7989505 0.99 2545 No Memory Core MPEG audio file Rock Dean Deleo 80613 2660859 0.99 2546 Sin Core MPEG audio file Rock R. DeLeo/Weiland 364800 12018823 0.99 2547 Naked Sunday Core MPEG audio file Rock D. DeLeo/Kretz/R. DeLeo/Weiland 229720 7444201 0.99 2548 Creep Core MPEG audio file Rock R. DeLeo/Weiland 333191 10894988 0.99 2549 Piece Of Pie Core MPEG audio file Rock R. DeLeo/Weiland 324623 10605231 0.99 2550 Plush Core MPEG audio file Rock R. DeLeo/Weiland 314017 10229848 0.99 2551 Wet My Bed Core MPEG audio file Rock R. DeLeo/Weiland 96914 3198627 0.99 2552 Crackerman Core MPEG audio file Rock Kretz/R. DeLeo/Weiland 194403 6317361 0.99 2553 Where The River Goes Core MPEG audio file Rock D. DeLeo/Kretz/Weiland 505991 16468904 0.99 2554 Soldier Side - Intro Mezmerize MPEG audio file Metal Dolmayan, John/Malakian, Daron/Odadjian, Shavo 63764 2056079 0.99 2555 B.Y.O.B. Mezmerize MPEG audio file Metal Tankian, Serj 255555 8407935 0.99 2556 Revenga Mezmerize MPEG audio file Metal Tankian, Serj 228127 7503805 0.99 2557 Cigaro Mezmerize MPEG audio file Metal Tankian, Serj 131787 4321705 0.99 2558 Radio/Video Mezmerize MPEG audio file Metal Dolmayan, John/Malakian, Daron/Odadjian, Shavo 249312 8224917 0.99 2559 This Cocaine Makes Me Feel Like I'm On This Song Mezmerize MPEG audio file Metal Tankian, Serj 128339 4185193 0.99 2560 Violent Pornography Mezmerize MPEG audio file Metal Dolmayan, John/Malakian, Daron/Odadjian, Shavo 211435 6985960 0.99 2561 Question! Mezmerize MPEG audio file Metal Tankian, Serj 200698 6616398 0.99 2562 Sad Statue Mezmerize MPEG audio file Metal Tankian, Serj 205897 6733449 0.99 2563 Old School Hollywood Mezmerize MPEG audio file Metal Dolmayan, John/Malakian, Daron/Odadjian, Shavo 176953 5830258 0.99 2564 Lost in Hollywood Mezmerize MPEG audio file Metal Tankian, Serj 320783 10535158 0.99 2565 The Sun Road [1997] Black Light Syndrome MPEG audio file Rock Terry Bozzio, Steve Stevens, Tony Levin 880640 29008407 0.99 2566 Dark Corners [1997] Black Light Syndrome MPEG audio file Rock Terry Bozzio, Steve Stevens, Tony Levin 513541 16839223 0.99 2567 Duende [1997] Black Light Syndrome MPEG audio file Rock Terry Bozzio, Steve Stevens, Tony Levin 447582 14956771 0.99 2568 Black Light Syndrome [1997] Black Light Syndrome MPEG audio file Rock Terry Bozzio, Steve Stevens, Tony Levin 526471 17300835 0.99 2569 Falling in Circles [1997] Black Light Syndrome MPEG audio file Rock Terry Bozzio, Steve Stevens, Tony Levin 549093 18263248 0.99 2570 Book of Hours [1997] Black Light Syndrome MPEG audio file Rock Terry Bozzio, Steve Stevens, Tony Levin 583366 19464726 0.99 2571 Chaos-Control [1997] Black Light Syndrome MPEG audio file Rock Terry Bozzio, Steve Stevens, Tony Levin 529841 17455568 0.99 2572 Midnight From The Inside Out Live [Disc 1] MPEG audio file Blues Chris Robinson/Rich Robinson 286981 9442157 0.99 2573 Sting Me Live [Disc 1] MPEG audio file Blues Chris Robinson/Rich Robinson 268094 8813561 0.99 2574 Thick & Thin Live [Disc 1] MPEG audio file Blues Chris Robinson/Rich Robinson 222720 7284377 0.99 2575 Greasy Grass River Live [Disc 1] MPEG audio file Blues Chris Robinson/Rich Robinson 218749 7157045 0.99 2576 Sometimes Salvation Live [Disc 1] MPEG audio file Blues Chris Robinson/Rich Robinson 389146 12749424 0.99 2577 Cursed Diamonds Live [Disc 1] MPEG audio file Blues Chris Robinson/Rich Robinson 368300 12047978 0.99 2578 Miracle To Me Live [Disc 1] MPEG audio file Blues Chris Robinson/Rich Robinson 372636 12222116 0.99 2579 Wiser Time Live [Disc 1] MPEG audio file Blues Chris Robinson/Rich Robinson 459990 15161907 0.99 2580 Girl From A Pawnshop Live [Disc 1] MPEG audio file Blues Chris Robinson/Rich Robinson 404688 13250848 0.99 2581 Cosmic Fiend Live [Disc 1] MPEG audio file Blues Chris Robinson/Rich Robinson 308401 10115556 0.99 2582 Black Moon Creeping Live [Disc 2] MPEG audio file Blues Chris Robinson/Rich Robinson 359314 11740886 0.99 2583 High Head Blues Live [Disc 2] MPEG audio file Blues Chris Robinson/Rich Robinson 371879 12227998 0.99 2584 Title Song Live [Disc 2] MPEG audio file Blues Chris Robinson/Rich Robinson 505521 16501316 0.99 2585 She Talks To Angels Live [Disc 2] MPEG audio file Blues Chris Robinson/Rich Robinson 361978 11837342 0.99 2586 Twice As Hard Live [Disc 2] MPEG audio file Blues Chris Robinson/Rich Robinson 275565 9008067 0.99 2587 Lickin' Live [Disc 2] MPEG audio file Blues Chris Robinson/Rich Robinson 314409 10331216 0.99 2588 Soul Singing Live [Disc 2] MPEG audio file Blues Chris Robinson/Rich Robinson 233639 7672489 0.99 2589 Hard To Handle Live [Disc 2] MPEG audio file Blues A.Isbell/A.Jones/O.Redding 206994 6786304 0.99 2590 Remedy Live [Disc 2] MPEG audio file Blues Chris Robinson/Rich Robinson 337084 11049098 0.99 2591 White Riot The Singles MPEG audio file Alternative & Punk Joe Strummer/Mick Jones 118726 3922819 0.99 2592 Remote Control The Singles MPEG audio file Alternative & Punk Joe Strummer/Mick Jones 180297 5949647 0.99 2593 Complete Control The Singles MPEG audio file Alternative & Punk Joe Strummer/Mick Jones 192653 6272081 0.99 2594 Clash City Rockers The Singles MPEG audio file Alternative & Punk Joe Strummer/Mick Jones 227500 7555054 0.99 2595 (White Man) In Hammersmith Palais The Singles MPEG audio file Alternative & Punk Joe Strummer/Mick Jones 240640 7883532 0.99 2596 Tommy Gun The Singles MPEG audio file Alternative & Punk Joe Strummer/Mick Jones 195526 6399872 0.99 2597 English Civil War The Singles MPEG audio file Alternative & Punk Mick Jones/Traditional arr. Joe Strummer 156708 5111226 0.99 2598 I Fought The Law The Singles MPEG audio file Alternative & Punk Sonny Curtis 159764 5245258 0.99 2599 London Calling The Singles MPEG audio file Alternative & Punk Joe Strummer/Mick Jones 199706 6569007 0.99 2600 Train In Vain The Singles MPEG audio file Alternative & Punk Joe Strummer/Mick Jones 189675 6329877 0.99 2601 Bankrobber The Singles MPEG audio file Alternative & Punk Joe Strummer/Mick Jones 272431 9067323 0.99 2602 The Call Up The Singles MPEG audio file Alternative & Punk The Clash 324336 10746937 0.99 2603 Hitsville UK The Singles MPEG audio file Alternative & Punk The Clash 261433 8606887 0.99 2604 The Magnificent Seven The Singles MPEG audio file Alternative & Punk The Clash 268486 8889821 0.99 2605 This Is Radio Clash The Singles MPEG audio file Alternative & Punk The Clash 249756 8366573 0.99 2606 Know Your Rights The Singles MPEG audio file Alternative & Punk The Clash 217678 7195726 0.99 2607 Rock The Casbah The Singles MPEG audio file Alternative & Punk The Clash 222145 7361500 0.99 2608 Should I Stay Or Should I Go The Singles MPEG audio file Alternative & Punk The Clash 187219 6188688 0.99 2609 War (The Process) Beyond Good And Evil MPEG audio file Rock Billy Duffy/Ian Astbury 252630 8254842 0.99 2610 The Saint Beyond Good And Evil MPEG audio file Rock Billy Duffy/Ian Astbury 216215 7061584 0.99 2613 Breathe Beyond Good And Evil MPEG audio file Rock Billy Duffy/Ian Astbury/Marti Frederiksen/Mick Jones 299781 9742361 0.99 2614 Nico Beyond Good And Evil MPEG audio file Rock Billy Duffy/Ian Astbury 289488 9412323 0.99 2615 American Gothic Beyond Good And Evil MPEG audio file Rock Billy Duffy/Ian Astbury 236878 7739840 0.99 2616 Ashes And Ghosts Beyond Good And Evil MPEG audio file Rock Billy Duffy/Bob Rock/Ian Astbury 300591 9787692 0.99 2617 Shape The Sky Beyond Good And Evil MPEG audio file Rock Billy Duffy/Ian Astbury 209789 6885647 0.99 2618 Speed Of Light Beyond Good And Evil MPEG audio file Rock Billy Duffy/Bob Rock/Ian Astbury 262817 8563352 0.99 2619 True Believers Beyond Good And Evil MPEG audio file Rock Billy Duffy/Ian Astbury 308009 9981359 0.99 2620 My Bridges Burn Beyond Good And Evil MPEG audio file Rock Billy Duffy/Ian Astbury 231862 7571370 0.99 2621 She Sells Sanctuary Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 253727 8368634 0.99 2622 Fire Woman Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 312790 10196995 0.99 2623 Lil' Evil Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 165825 5419655 0.99 2624 Spirit Walker Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 230060 7555897 0.99 2625 The Witch Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 258768 8725403 0.99 2626 Revolution Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 256026 8371254 0.99 2627 Wild Hearted Son Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 266893 8670550 0.99 2628 Love Removal Machine Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 257619 8412167 0.99 2629 Rain Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 236669 7788461 0.99 2630 Edie (Ciao Baby) Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 241632 7846177 0.99 2631 Heart Of Soul Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 274207 8967257 0.99 2632 Love Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 326739 10729824 0.99 2633 Wild Flower Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 215536 7084321 0.99 2634 Go West Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 238158 7777749 0.99 2635 Resurrection Joe Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 255451 8532840 0.99 2636 Sun King Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 368431 12010865 0.99 2637 Sweet Soul Sister Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 212009 6889883 0.99 2638 Earth Mofo Pure Cult: The Best Of The Cult (For Rockers, Ravers, Lovers & Sinners) [UK] MPEG audio file Rock \N 282200 9204581 0.99 2639 Break on Through The Doors MPEG audio file Rock Robby Krieger, Ray Manzarek, John Densmore, Jim Morrison 149342 4943144 0.99 2640 Soul Kitchen The Doors MPEG audio file Rock Robby Krieger, Ray Manzarek, John Densmore, Jim Morrison 215066 7040865 0.99 2641 The Crystal Ship The Doors MPEG audio file Rock Robby Krieger, Ray Manzarek, John Densmore, Jim Morrison 154853 5052658 0.99 2642 Twentienth Century Fox The Doors MPEG audio file Rock Robby Krieger, Ray Manzarek, John Densmore, Jim Morrison 153913 5069211 0.99 2643 Alabama Song The Doors MPEG audio file Rock Weill-Brecht 200097 6563411 0.99 2644 Light My Fire The Doors MPEG audio file Rock Robby Krieger, Ray Manzarek, John Densmore, Jim Morrison 428329 13963351 0.99 2645 Back Door Man The Doors MPEG audio file Rock Willie Dixon, C. Burnett 214360 7035636 0.99 2646 I Looked At You The Doors MPEG audio file Rock Robby Krieger, Ray Manzarek, John Densmore, Jim Morrison 142080 4663988 0.99 2647 End Of The Night The Doors MPEG audio file Rock Robby Krieger, Ray Manzarek, John Densmore, Jim Morrison 172695 5589732 0.99 2648 Take It As It Comes The Doors MPEG audio file Rock Robby Krieger, Ray Manzarek, John Densmore, Jim Morrison 137168 4512656 0.99 2649 The End The Doors MPEG audio file Rock Robby Krieger, Ray Manzarek, John Densmore, Jim Morrison 701831 22927336 0.99 2650 Roxanne The Police Greatest Hits MPEG audio file Rock G M Sumner 192992 6330159 0.99 2651 Can't Stand Losing You The Police Greatest Hits MPEG audio file Rock G M Sumner 181159 5971983 0.99 2652 Message in a Bottle The Police Greatest Hits MPEG audio file Rock G M Sumner 291474 9647829 0.99 2653 Walking on the Moon The Police Greatest Hits MPEG audio file Rock G M Sumner 302080 10019861 0.99 2654 Don't Stand so Close to Me The Police Greatest Hits MPEG audio file Rock G M Sumner 241031 7956658 0.99 2655 De Do Do Do, De Da Da Da The Police Greatest Hits MPEG audio file Rock G M Sumner 247196 8227075 0.99 2656 Every Little Thing She Does is Magic The Police Greatest Hits MPEG audio file Rock G M Sumner 261120 8646853 0.99 2657 Invisible Sun The Police Greatest Hits MPEG audio file Rock G M Sumner 225593 7304320 0.99 2658 Spirit's in the Material World The Police Greatest Hits MPEG audio file Rock G M Sumner 181133 5986622 0.99 2659 Every Breath You Take The Police Greatest Hits MPEG audio file Rock G M Sumner 254615 8364520 0.99 2660 King Of Pain The Police Greatest Hits MPEG audio file Rock G M Sumner 300512 9880303 0.99 2661 Wrapped Around Your Finger The Police Greatest Hits MPEG audio file Rock G M Sumner 315454 10361490 0.99 2662 Don't Stand So Close to Me '86 The Police Greatest Hits MPEG audio file Rock G M Sumner 293590 9636683 0.99 2663 Message in a Bottle (new classic rock mix) The Police Greatest Hits MPEG audio file Rock G M Sumner 290951 9640349 0.99 2664 Time Is On My Side Hot Rocks, 1964-1971 (Disc 1) MPEG audio file Rock Jerry Ragavoy 179983 5855836 0.99 2665 Heart Of Stone Hot Rocks, 1964-1971 (Disc 1) MPEG audio file Rock Jagger/Richards 164493 5329538 0.99 2666 Play With Fire Hot Rocks, 1964-1971 (Disc 1) MPEG audio file Rock Nanker Phelge 132022 4265297 0.99 2667 Satisfaction Hot Rocks, 1964-1971 (Disc 1) MPEG audio file Rock Jagger/Richards 226612 7398766 0.99 2668 As Tears Go By Hot Rocks, 1964-1971 (Disc 1) MPEG audio file Rock Jagger/Richards/Oldham 164284 5357350 0.99 2669 Get Off Of My Cloud Hot Rocks, 1964-1971 (Disc 1) MPEG audio file Rock Jagger/Richards 176013 5719514 0.99 2670 Mother's Little Helper Hot Rocks, 1964-1971 (Disc 1) MPEG audio file Rock Jagger/Richards 167549 5422434 0.99 2671 19th Nervous Breakdown Hot Rocks, 1964-1971 (Disc 1) MPEG audio file Rock Jagger/Richards 237923 7742984 0.99 2672 Paint It Black Hot Rocks, 1964-1971 (Disc 1) MPEG audio file Rock Jagger/Richards 226063 7442888 0.99 2673 Under My Thumb Hot Rocks, 1964-1971 (Disc 1) MPEG audio file Rock Jagger/Richards 221387 7371799 0.99 2674 Ruby Tuesday Hot Rocks, 1964-1971 (Disc 1) MPEG audio file Rock Jagger/Richards 197459 6433467 0.99 2675 Let's Spend The Night Together Hot Rocks, 1964-1971 (Disc 1) MPEG audio file Rock Jagger/Richards 217495 7137048 0.99 2676 Intro No Security MPEG audio file Rock Jagger/Richards 49737 1618591 0.99 2677 You Got Me Rocking No Security MPEG audio file Rock Jagger/Richards 205766 6734385 0.99 2678 Gimmie Shelters No Security MPEG audio file Rock Jagger/Richards 382119 12528764 0.99 2679 Flip The Switch No Security MPEG audio file Rock Jagger/Richards 252421 8336591 0.99 2680 Memory Motel No Security MPEG audio file Rock Jagger/Richards 365844 11982431 0.99 2681 Corinna No Security MPEG audio file Rock Jesse Ed Davis III/Taj Mahal 257488 8449471 0.99 2682 Saint Of Me No Security MPEG audio file Rock Jagger/Richards 325694 10725160 0.99 2683 Wainting On A Friend No Security MPEG audio file Rock Jagger/Richards 302497 9978046 0.99 2684 Sister Morphine No Security MPEG audio file Rock Faithfull/Jagger/Richards 376215 12345289 0.99 2685 Live With Me No Security MPEG audio file Rock Jagger/Richards 234893 7709006 0.99 2686 Respectable No Security MPEG audio file Rock Jagger/Richards 215693 7099669 0.99 2687 Thief In The Night No Security MPEG audio file Rock De Beauport/Jagger/Richards 337266 10952756 0.99 2688 The Last Time No Security MPEG audio file Rock Jagger/Richards 287294 9498758 0.99 2689 Out Of Control No Security MPEG audio file Rock Jagger/Richards 479242 15749289 0.99 2690 Love Is Strong Voodoo Lounge MPEG audio file Rock Jagger/Richards 230896 7639774 0.99 2691 You Got Me Rocking Voodoo Lounge MPEG audio file Rock Jagger/Richards 215928 7162159 0.99 2692 Sparks Will Fly Voodoo Lounge MPEG audio file Rock Jagger/Richards 196466 6492847 0.99 2693 The Worst Voodoo Lounge MPEG audio file Rock Jagger/Richards 144613 4750094 0.99 2694 New Faces Voodoo Lounge MPEG audio file Rock Jagger/Richards 172146 5689122 0.99 2695 Moon Is Up Voodoo Lounge MPEG audio file Rock Jagger/Richards 222119 7366316 0.99 2696 Out Of Tears Voodoo Lounge MPEG audio file Rock Jagger/Richards 327418 10677236 0.99 2697 I Go Wild Voodoo Lounge MPEG audio file Rock Jagger/Richards 264019 8630833 0.99 2698 Brand New Car Voodoo Lounge MPEG audio file Rock Jagger/Richards 256052 8459344 0.99 2699 Sweethearts Together Voodoo Lounge MPEG audio file Rock Jagger/Richards 285492 9550459 0.99 2700 Suck On The Jugular Voodoo Lounge MPEG audio file Rock Jagger/Richards 268225 8920566 0.99 2701 Blinded By Rainbows Voodoo Lounge MPEG audio file Rock Jagger/Richards 273946 8971343 0.99 2702 Baby Break It Down Voodoo Lounge MPEG audio file Rock Jagger/Richards 249417 8197309 0.99 2703 Thru And Thru Voodoo Lounge MPEG audio file Rock Jagger/Richards 375092 12175406 0.99 2704 Mean Disposition Voodoo Lounge MPEG audio file Rock Jagger/Richards 249155 8273602 0.99 2705 Walking Wounded Tangents MPEG audio file Alternative & Punk The Tea Party 277968 9184345 0.99 2706 Temptation Tangents MPEG audio file Alternative & Punk The Tea Party 205087 6711943 0.99 2707 The Messenger Tangents MPEG audio file Alternative & Punk Daniel Lanois 212062 6975437 0.99 2708 Psychopomp Tangents MPEG audio file Alternative & Punk The Tea Party 315559 10295199 0.99 2709 Sister Awake Tangents MPEG audio file Alternative & Punk The Tea Party 343875 11299407 0.99 2710 The Bazaar Tangents MPEG audio file Alternative & Punk The Tea Party 222458 7245691 0.99 2711 Save Me (Remix) Tangents MPEG audio file Alternative & Punk The Tea Party 396303 13053839 0.99 2712 Fire In The Head Tangents MPEG audio file Alternative & Punk The Tea Party 306337 10005675 0.99 2713 Release Tangents MPEG audio file Alternative & Punk The Tea Party 244114 8014606 0.99 2714 Heaven Coming Down Tangents MPEG audio file Alternative & Punk The Tea Party 241867 7846459 0.99 2715 The River (Remix) Tangents MPEG audio file Alternative & Punk The Tea Party 343170 11193268 0.99 2716 Babylon Tangents MPEG audio file Alternative & Punk The Tea Party 169795 5568808 0.99 2717 Waiting On A Sign Tangents MPEG audio file Alternative & Punk The Tea Party 261903 8558590 0.99 2718 Life Line Tangents MPEG audio file Alternative & Punk The Tea Party 277786 9082773 0.99 2719 Paint It Black Tangents MPEG audio file Alternative & Punk Keith Richards/Mick Jagger 214752 7101572 0.99 2720 Temptation Transmission MPEG audio file Alternative & Punk The Tea Party 205244 6719465 0.99 2721 Army Ants Transmission MPEG audio file Alternative & Punk The Tea Party 215405 7075838 0.99 2722 Psychopomp Transmission MPEG audio file Alternative & Punk The Tea Party 317231 10351778 0.99 2723 Gyroscope Transmission MPEG audio file Alternative & Punk The Tea Party 177711 5810323 0.99 2724 Alarum Transmission MPEG audio file Alternative & Punk The Tea Party 298187 9712545 0.99 2725 Release Transmission MPEG audio file Alternative & Punk The Tea Party 266292 8725824 0.99 2726 Transmission Transmission MPEG audio file Alternative & Punk The Tea Party 317257 10351152 0.99 2727 Babylon Transmission MPEG audio file Alternative & Punk The Tea Party 292466 9601786 0.99 2728 Pulse Transmission MPEG audio file Alternative & Punk The Tea Party 250253 8183872 0.99 2729 Emerald Transmission MPEG audio file Alternative & Punk The Tea Party 289750 9543789 0.99 2730 Aftermath Transmission MPEG audio file Alternative & Punk The Tea Party 343745 11085607 0.99 2731 I Can't Explain My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend 125152 4082896 0.99 2732 Anyway, Anyhow, Anywhere My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend, Roger Daltrey 161253 5234173 0.99 2733 My Generation My Generation - The Very Best Of The Who MPEG audio file Rock John Entwistle/Pete Townshend 197825 6446634 0.99 2734 Substitute My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend 228022 7409995 0.99 2735 I'm A Boy My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend 157126 5120605 0.99 2736 Boris The Spider My Generation - The Very Best Of The Who MPEG audio file Rock John Entwistle 149472 4835202 0.99 2737 Happy Jack My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend 132310 4353063 0.99 2738 Pictures Of Lily My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend 164414 5329751 0.99 2739 I Can See For Miles My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend 262791 8604989 0.99 2740 Magic Bus My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend 197224 6452700 0.99 2741 Pinball Wizard My Generation - The Very Best Of The Who MPEG audio file Rock John Entwistle/Pete Townshend 181890 6055580 0.99 2742 The Seeker My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend 204643 6736866 0.99 2743 Baba O'Riley My Generation - The Very Best Of The Who MPEG audio file Rock John Entwistle/Pete Townshend 309472 10141660 0.99 2744 Won't Get Fooled Again (Full Length Version) My Generation - The Very Best Of The Who MPEG audio file Rock John Entwistle/Pete Townshend 513750 16855521 0.99 2745 Let's See Action My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend 243513 8078418 0.99 2746 5.15 My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend 289619 9458549 0.99 2747 Join Together My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend 262556 8602485 0.99 2748 Squeeze Box My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend 161280 5256508 0.99 2749 Who Are You (Single Edit Version) My Generation - The Very Best Of The Who MPEG audio file Rock John Entwistle/Pete Townshend 299232 9900469 0.99 2750 You Better You Bet My Generation - The Very Best Of The Who MPEG audio file Rock Pete Townshend 338520 11160877 0.99 2751 Primavera Serie Sem Limite (Disc 1) MPEG audio file Latin Genival Cassiano/Silvio Rochael 126615 4152604 0.99 2752 Chocolate Serie Sem Limite (Disc 1) MPEG audio file Latin Tim Maia 194690 6411587 0.99 2753 Azul Da Cor Do Mar Serie Sem Limite (Disc 1) MPEG audio file Latin Tim Maia 197955 6475007 0.99 2754 O Descobridor Dos Sete Mares Serie Sem Limite (Disc 1) MPEG audio file Latin Gilson Mendonça/Michel 262974 8749583 0.99 2755 Até Que Enfim Encontrei Você Serie Sem Limite (Disc 1) MPEG audio file Latin Tim Maia 105064 3477751 0.99 2756 Coroné Antonio Bento Serie Sem Limite (Disc 1) MPEG audio file Latin Do Vale, João/Luiz Wanderley 131317 4340326 0.99 2757 New Love Serie Sem Limite (Disc 1) MPEG audio file Latin Tim Maia 237897 7786824 0.99 2758 Não Vou Ficar Serie Sem Limite (Disc 1) MPEG audio file Latin Tim Maia 172068 5642919 0.99 2759 Música No Ar Serie Sem Limite (Disc 1) MPEG audio file Latin Tim Maia 158511 5184891 0.99 2760 Salve Nossa Senhora Serie Sem Limite (Disc 1) MPEG audio file Latin Carlos Imperial/Edardo Araújo 115461 3827629 0.99 2761 Você Fugiu Serie Sem Limite (Disc 1) MPEG audio file Latin Genival Cassiano 238367 7971147 0.99 2762 Cristina Nº 2 Serie Sem Limite (Disc 1) MPEG audio file Latin Carlos Imperial/Tim Maia 90148 2978589 0.99 2763 Compadre Serie Sem Limite (Disc 1) MPEG audio file Latin Tim Maia 171389 5631446 0.99 2764 Over Again Serie Sem Limite (Disc 1) MPEG audio file Latin Tim Maia 200489 6612634 0.99 2765 Réu Confesso Serie Sem Limite (Disc 1) MPEG audio file Latin Tim Maia 217391 7189874 0.99 2766 O Que Me Importa Serie Sem Limite (Disc 2) MPEG audio file Latin \N 153155 4977852 0.99 2767 Gostava Tanto De Você Serie Sem Limite (Disc 2) MPEG audio file Latin \N 253805 8380077 0.99 2768 Você Serie Sem Limite (Disc 2) MPEG audio file Latin \N 242599 7911702 0.99 2769 Não Quero Dinheiro Serie Sem Limite (Disc 2) MPEG audio file Latin \N 152607 5031797 0.99 2770 Eu Amo Você Serie Sem Limite (Disc 2) MPEG audio file Latin \N 242782 7914628 0.99 2771 A Festa Do Santo Reis Serie Sem Limite (Disc 2) MPEG audio file Latin \N 159791 5204995 0.99 2772 I Don't Know What To Do With Myself Serie Sem Limite (Disc 2) MPEG audio file Latin \N 221387 7251478 0.99 2773 Padre Cícero Serie Sem Limite (Disc 2) MPEG audio file Latin \N 139598 4581685 0.99 2774 Nosso Adeus Serie Sem Limite (Disc 2) MPEG audio file Latin \N 206471 6793270 0.99 2775 Canário Do Reino Serie Sem Limite (Disc 2) MPEG audio file Latin \N 139337 4552858 0.99 2776 Preciso Ser Amado Serie Sem Limite (Disc 2) MPEG audio file Latin \N 174001 5618895 0.99 2777 Balanço Serie Sem Limite (Disc 2) MPEG audio file Latin \N 209737 6890327 0.99 2778 Preciso Aprender A Ser Só Serie Sem Limite (Disc 2) MPEG audio file Latin \N 162220 5213894 0.99 2779 Esta É A Canção Serie Sem Limite (Disc 2) MPEG audio file Latin \N 184450 6069933 0.99 2780 Formigueiro Serie Sem Limite (Disc 2) MPEG audio file Latin \N 252943 8455132 0.99 2781 Comida Acústico MPEG audio file Alternative & Punk Titãs 322612 10786578 0.99 2782 Go Back Acústico MPEG audio file Alternative & Punk Titãs 230504 7668899 0.99 2783 Prá Dizer Adeus Acústico MPEG audio file Alternative & Punk Titãs 222484 7382048 0.99 2784 Família Acústico MPEG audio file Alternative & Punk Titãs 218331 7267458 0.99 2785 Os Cegos Do Castelo Acústico MPEG audio file Alternative & Punk Titãs 296829 9868187 0.99 2786 O Pulso Acústico MPEG audio file Alternative & Punk Titãs 199131 6566998 0.99 2787 Marvin Acústico MPEG audio file Alternative & Punk Titãs 264359 8741444 0.99 2788 Nem 5 Minutos Guardados Acústico MPEG audio file Alternative & Punk Titãs 245995 8143797 0.99 2789 Flores Acústico MPEG audio file Alternative & Punk Titãs 215510 7148017 0.99 2790 Palavras Acústico MPEG audio file Alternative & Punk Titãs 158458 5285715 0.99 2791 Hereditário Acústico MPEG audio file Alternative & Punk Titãs 151693 5020547 0.99 2792 A Melhor Forma Acústico MPEG audio file Alternative & Punk Titãs 191503 6349938 0.99 2793 Cabeça Dinossauro Acústico MPEG audio file Alternative & Punk Titãs 37120 1220930 0.99 2794 32 Dentes Acústico MPEG audio file Alternative & Punk Titãs 184946 6157904 0.99 2795 Bichos Escrotos (Vinheta) Acústico MPEG audio file Alternative & Punk Titãs 104986 3503755 0.99 2796 Não Vou Lutar Acústico MPEG audio file Alternative & Punk Titãs 189988 6308613 0.99 2797 Homem Primata (Vinheta) Acústico MPEG audio file Alternative & Punk Titãs 34168 1124909 0.99 2798 Homem Primata Acústico MPEG audio file Alternative & Punk Titãs 195500 6486470 0.99 2799 Polícia (Vinheta) Acústico MPEG audio file Alternative & Punk Titãs 56111 1824213 0.99 2800 Querem Meu Sangue Acústico MPEG audio file Alternative & Punk Titãs 212401 7069773 0.99 2801 Diversão Acústico MPEG audio file Alternative & Punk Titãs 285936 9531268 0.99 2802 Televisão Acústico MPEG audio file Alternative & Punk Titãs 293668 9776548 0.99 2803 Sonifera Ilha Volume Dois MPEG audio file Alternative & Punk Branco Mello/Carlos Barmack/Ciro Pessoa/Marcelo Fromer/Toni Belloto 170684 5678290 0.99 2804 Lugar Nenhum Volume Dois MPEG audio file Alternative & Punk Arnaldo Antunes/Charles Gavin/Marcelo Fromer/Sérgio Britto/Toni Bellotto 195840 6472780 0.99 2805 Sua Impossivel Chance Volume Dois MPEG audio file Alternative & Punk Nando Reis 246622 8073248 0.99 2806 Desordem Volume Dois MPEG audio file Alternative & Punk Charles Gavin/Marcelo Fromer/Sérgio Britto 213289 7067340 0.99 2807 Não Vou Me Adaptar Volume Dois MPEG audio file Alternative & Punk Arnaldo Antunes 221831 7304656 0.99 2808 Domingo Volume Dois MPEG audio file Alternative & Punk Sérgio Britto/Toni Bellotto 208613 6883180 0.99 2809 Amanhã Não Se Sabe Volume Dois MPEG audio file Alternative & Punk Sérgio Britto 189440 6243967 0.99 2810 Caras Como Eu Volume Dois MPEG audio file Alternative & Punk Toni Bellotto 183092 5999048 0.99 2811 Senhora E Senhor Volume Dois MPEG audio file Alternative & Punk Arnaldo Anutnes/Marcelo Fromer/Paulo Miklos 203702 6733733 0.99 2812 Era Uma Vez Volume Dois MPEG audio file Alternative & Punk Arnaldo Anutnes/Branco Mello/Marcelo Fromer/Sergio Brotto/Toni Bellotto 224261 7453156 0.99 2813 Miséria Volume Dois MPEG audio file Alternative & Punk Arnaldo Antunes/Britto, SergioMiklos, Paulo 262191 8727645 0.99 2814 Insensível Volume Dois MPEG audio file Alternative & Punk Sérgio Britto 207830 6893664 0.99 2815 Eu E Ela Volume Dois MPEG audio file Alternative & Punk Nando Reis 276035 9138846 0.99 2816 Toda Cor Volume Dois MPEG audio file Alternative & Punk Ciro Pressoa/Marcelo Fromer 209084 6939176 0.99 2817 É Preciso Saber Viver Volume Dois MPEG audio file Alternative & Punk Erasmo Carlos/Roberto Carlos 251115 8271418 0.99 2818 Senhor Delegado/Eu Não Aguento Volume Dois MPEG audio file Alternative & Punk Antonio Lopes 156656 5277983 0.99 2819 Battlestar Galactica: The Story So Far Battlestar Galactica: The Story So Far Protected MPEG-4 video file Science Fiction \N 2622250 490750393 1.99 2820 Occupation / Precipice Battlestar Galactica, Season 3 Protected MPEG-4 video file TV Shows \N 5286953 1054423946 1.99 2821 Exodus, Pt. 1 Battlestar Galactica, Season 3 Protected MPEG-4 video file TV Shows \N 2621708 475079441 1.99 2822 Exodus, Pt. 2 Battlestar Galactica, Season 3 Protected MPEG-4 video file TV Shows \N 2618000 466820021 1.99 2823 Collaborators Battlestar Galactica, Season 3 Protected MPEG-4 video file TV Shows \N 2626626 483484911 1.99 2824 Torn Battlestar Galactica, Season 3 Protected MPEG-4 video file TV Shows \N 2631291 495262585 1.99 2825 A Measure of Salvation Battlestar Galactica, Season 3 Protected MPEG-4 video file Science Fiction \N 2563938 489715554 1.99 2826 Hero Battlestar Galactica, Season 3 Protected MPEG-4 video file Science Fiction \N 2713755 506896959 1.99 2827 Unfinished Business Battlestar Galactica, Season 3 Protected MPEG-4 video file Science Fiction \N 2622038 528499160 1.99 2828 The Passage Battlestar Galactica, Season 3 Protected MPEG-4 video file Science Fiction \N 2623875 490375760 1.99 2829 The Eye of Jupiter Battlestar Galactica, Season 3 Protected MPEG-4 video file Science Fiction \N 2618750 517909587 1.99 2830 Rapture Battlestar Galactica, Season 3 Protected MPEG-4 video file Science Fiction \N 2624541 508406153 1.99 2831 Taking a Break from All Your Worries Battlestar Galactica, Season 3 Protected MPEG-4 video file Science Fiction \N 2624207 492700163 1.99 2832 The Woman King Battlestar Galactica, Season 3 Protected MPEG-4 video file Science Fiction \N 2626376 552893447 1.99 2833 A Day In the Life Battlestar Galactica, Season 3 Protected MPEG-4 video file Science Fiction \N 2620245 462818231 1.99 2834 Dirty Hands Battlestar Galactica, Season 3 Protected MPEG-4 video file Science Fiction \N 2627961 537648614 1.99 2835 Maelstrom Battlestar Galactica, Season 3 Protected MPEG-4 video file Science Fiction \N 2622372 514154275 1.99 2836 The Son Also Rises Battlestar Galactica, Season 3 Protected MPEG-4 video file Science Fiction \N 2621830 499258498 1.99 2837 Crossroads, Pt. 1 Battlestar Galactica, Season 3 Protected MPEG-4 video file Sci Fi & Fantasy \N 2622622 486233524 1.99 2838 Crossroads, Pt. 2 Battlestar Galactica, Season 3 Protected MPEG-4 video file Sci Fi & Fantasy \N 2869953 497335706 1.99 2839 Genesis Heroes, Season 1 Protected MPEG-4 video file TV Shows \N 2611986 515671080 1.99 2840 Don't Look Back Heroes, Season 1 Protected MPEG-4 video file Drama \N 2571154 493628775 1.99 2841 One Giant Leap Heroes, Season 1 Protected MPEG-4 video file Drama \N 2607649 521616246 1.99 2842 Collision Heroes, Season 1 Protected MPEG-4 video file Drama \N 2605480 526182322 1.99 2843 Hiros Heroes, Season 1 Protected MPEG-4 video file Drama \N 2533575 488835454 1.99 2844 Better Halves Heroes, Season 1 Protected MPEG-4 video file Drama \N 2573031 549353481 1.99 2845 Nothing to Hide Heroes, Season 1 Protected MPEG-4 video file TV Shows \N 2605647 510058181 1.99 2846 Seven Minutes to Midnight Heroes, Season 1 Protected MPEG-4 video file Drama \N 2613988 515590682 1.99 2847 Homecoming Heroes, Season 1 Protected MPEG-4 video file Drama \N 2601351 516015339 1.99 2848 Six Months Ago Heroes, Season 1 Protected MPEG-4 video file TV Shows \N 2602852 505133869 1.99 2849 Fallout Heroes, Season 1 Protected MPEG-4 video file Drama \N 2594761 501145440 1.99 2850 The Fix Heroes, Season 1 Protected MPEG-4 video file Drama \N 2600266 507026323 1.99 2851 Distractions Heroes, Season 1 Protected MPEG-4 video file Drama \N 2590382 537111289 1.99 2852 Run! Heroes, Season 1 Protected MPEG-4 video file Drama \N 2602602 542936677 1.99 2853 Unexpected Heroes, Season 1 Protected MPEG-4 video file Drama \N 2598139 511777758 1.99 2854 Company Man Heroes, Season 1 Protected MPEG-4 video file Drama \N 2601226 493168135 1.99 2855 Company Man Heroes, Season 1 Protected MPEG-4 video file Drama \N 2601101 503786316 1.99 2856 Parasite Heroes, Season 1 Protected MPEG-4 video file Drama \N 2602727 487461520 1.99 2857 A Tale of Two Cities Lost, Season 3 Protected MPEG-4 video file TV Shows \N 2636970 513691652 1.99 2858 Lost (Pilot, Part 1) [Premiere] Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2548875 217124866 1.99 2859 Man of Science, Man of Faith (Premiere) Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2612250 543342028 1.99 2860 Adrift Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2564958 502663995 1.99 2861 Lost (Pilot, Part 2) Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2436583 204995876 1.99 2862 The Glass Ballerina Lost, Season 3 Protected MPEG-4 video file Drama \N 2637458 535729216 1.99 2863 Further Instructions Lost, Season 3 Protected MPEG-4 video file TV Shows \N 2563980 502041019 1.99 2864 Orientation Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2609083 500600434 1.99 2865 Tabula Rasa Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2627105 210526410 1.99 2866 Every Man for Himself Lost, Season 3 Protected MPEG-4 video file Drama \N 2637387 513803546 1.99 2867 Everybody Hates Hugo Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2609192 498163145 1.99 2868 Walkabout Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2587370 207748198 1.99 2869 ...And Found Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2563833 500330548 1.99 2870 The Cost of Living Lost, Season 3 Protected MPEG-4 video file TV Shows \N 2637500 505647192 1.99 2871 White Rabbit Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2571965 201654606 1.99 2872 Abandoned Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2587041 537348711 1.99 2873 House of the Rising Sun Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2590032 210379525 1.99 2874 I Do Lost, Season 3 Protected MPEG-4 video file TV Shows \N 2627791 504676825 1.99 2875 Not In Portland Lost, Season 3 Protected MPEG-4 video file Drama \N 2637303 499061234 1.99 2876 Not In Portland Lost, Season 3 Protected MPEG-4 video file Drama \N 2637345 510546847 1.99 2877 The Moth Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2631327 228896396 1.99 2878 The Other 48 Days Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2610625 535256753 1.99 2879 Collision Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2564916 475656544 1.99 2880 Confidence Man Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2615244 223756475 1.99 2881 Flashes Before Your Eyes Lost, Season 3 Protected MPEG-4 video file Drama \N 2636636 537760755 1.99 2882 Lost Survival Guide Lost, Season 3 Protected MPEG-4 video file Drama \N 2632590 486675063 1.99 2883 Solitary Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2612894 207045178 1.99 2884 What Kate Did Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2610250 484583988 1.99 2885 Raised By Another Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2590459 223623810 1.99 2886 Stranger In a Strange Land Lost, Season 3 Protected MPEG-4 video file Drama \N 2636428 505056021 1.99 2887 The 23rd Psalm Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2610416 487401604 1.99 2888 All the Best Cowboys Have Daddy Issues Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2555492 211743651 1.99 2889 The Hunting Party Lost, Season 2 Protected MPEG-4 video file Drama \N 2611333 520350364 1.99 2890 Tricia Tanaka Is Dead Lost, Season 3 Protected MPEG-4 video file Drama \N 2635010 548197162 1.99 2891 Enter 77 Lost, Season 3 Protected MPEG-4 video file Drama \N 2629796 517521422 1.99 2892 Fire + Water Lost, Season 2 Protected MPEG-4 video file Drama \N 2600333 488458695 1.99 2893 Whatever the Case May Be Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2616410 183867185 1.99 2894 Hearts and Minds Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2619462 207607466 1.99 2895 Par Avion Lost, Season 3 Protected MPEG-4 video file Drama \N 2629879 517079642 1.99 2896 The Long Con Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2679583 518376636 1.99 2897 One of Them Lost, Season 2 Protected MPEG-4 video file Drama \N 2698791 542332389 1.99 2898 Special Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2618530 219961967 1.99 2899 The Man from Tallahassee Lost, Season 3 Protected MPEG-4 video file Drama \N 2637637 550893556 1.99 2900 Exposé Lost, Season 3 Protected MPEG-4 video file Drama \N 2593760 511338017 1.99 2901 Homecoming Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2515882 210675221 1.99 2902 Maternity Leave Lost, Season 2 Protected MPEG-4 video file Drama \N 2780416 555244214 1.99 2903 Left Behind Lost, Season 3 Protected MPEG-4 video file Drama \N 2635343 538491964 1.99 2904 Outlaws Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2619887 206500939 1.99 2905 The Whole Truth Lost, Season 2 Protected MPEG-4 video file Drama \N 2610125 495487014 1.99 2906 ...In Translation Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2604575 215441983 1.99 2907 Lockdown Lost, Season 2 Protected MPEG-4 video file Drama \N 2610250 543886056 1.99 2908 One of Us Lost, Season 3 Protected MPEG-4 video file Drama \N 2638096 502387276 1.99 2909 Catch-22 Lost, Season 3 Protected MPEG-4 video file Drama \N 2561394 489773399 1.99 2910 Dave Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2825166 574325829 1.99 2911 Numbers Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2609772 214709143 1.99 2912 D.O.C. Lost, Season 3 Protected MPEG-4 video file Drama \N 2616032 518556641 1.99 2913 Deus Ex Machina Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2582009 214996732 1.99 2914 S.O.S. Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2639541 517979269 1.99 2915 Do No Harm Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2618487 212039309 1.99 2916 Two for the Road Lost, Season 2 Protected MPEG-4 video file Drama \N 2610958 502404558 1.99 2917 The Greater Good Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2617784 214130273 1.99 2918 "?" Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2782333 528227089 1.99 2919 Born to Run Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2618619 213772057 1.99 2920 Three Minutes Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2763666 531556853 1.99 2921 Exodus (Part 1) Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2620747 213107744 1.99 2922 Live Together, Die Alone, Pt. 1 Lost, Season 2 Protected MPEG-4 video file Drama \N 2478041 457364940 1.99 2923 Exodus (Part 2) [Season Finale] Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2605557 208667059 1.99 2924 Live Together, Die Alone, Pt. 2 Lost, Season 2 Protected MPEG-4 video file TV Shows \N 2656531 503619265 1.99 2925 Exodus (Part 3) [Season Finale] Lost, Season 1 Protected MPEG-4 video file TV Shows \N 2619869 197937785 1.99 2926 Zoo Station Achtung Baby MPEG audio file Rock U2 276349 9056902 0.99 2927 Even Better Than The Real Thing Achtung Baby MPEG audio file Rock U2 221361 7279392 0.99 2928 One Achtung Baby MPEG audio file Rock U2 276192 9158892 0.99 2929 Until The End Of The World Achtung Baby MPEG audio file Rock U2 278700 9132485 0.99 2930 Who's Gonna Ride Your Wild Horses Achtung Baby MPEG audio file Rock U2 316551 10304369 0.99 2931 So Cruel Achtung Baby MPEG audio file Rock U2 349492 11527614 0.99 2932 The Fly Achtung Baby MPEG audio file Rock U2 268982 8825399 0.99 2933 Mysterious Ways Achtung Baby MPEG audio file Rock U2 243826 8062057 0.99 2934 Tryin' To Throw Your Arms Around The World Achtung Baby MPEG audio file Rock U2 232463 7612124 0.99 2935 Ultraviolet (Light My Way) Achtung Baby MPEG audio file Rock U2 330788 10754631 0.99 2936 Acrobat Achtung Baby MPEG audio file Rock U2 270288 8824723 0.99 2937 Love Is Blindness Achtung Baby MPEG audio file Rock U2 263497 8531766 0.99 2938 Beautiful Day All That You Can't Leave Behind MPEG audio file Rock Adam Clayton, Bono, Larry Mullen, The Edge 248163 8056723 0.99 2939 Stuck In A Moment You Can't Get Out Of All That You Can't Leave Behind MPEG audio file Rock Adam Clayton, Bono, Larry Mullen, The Edge 272378 8997366 0.99 2940 Elevation All That You Can't Leave Behind MPEG audio file Rock Adam Clayton, Bono, Larry Mullen, The Edge 227552 7479414 0.99 2941 Walk On All That You Can't Leave Behind MPEG audio file Rock Adam Clayton, Bono, Larry Mullen, The Edge 296280 9800861 0.99 2942 Kite All That You Can't Leave Behind MPEG audio file Rock Adam Clayton, Bono, Larry Mullen, The Edge 266893 8765761 0.99 2943 In A Little While All That You Can't Leave Behind MPEG audio file Rock Adam Clayton, Bono, Larry Mullen, The Edge 219271 7189647 0.99 2944 Wild Honey All That You Can't Leave Behind MPEG audio file Rock Adam Clayton, Bono, Larry Mullen, The Edge 226768 7466069 0.99 2945 Peace On Earth All That You Can't Leave Behind MPEG audio file Rock Adam Clayton, Bono, Larry Mullen, The Edge 288496 9476171 0.99 2946 When I Look At The World All That You Can't Leave Behind MPEG audio file Rock Adam Clayton, Bono, Larry Mullen, The Edge 257776 8500491 0.99 2947 New York All That You Can't Leave Behind MPEG audio file Rock Adam Clayton, Bono, Larry Mullen, The Edge 330370 10862323 0.99 2948 Grace All That You Can't Leave Behind MPEG audio file Rock Adam Clayton, Bono, Larry Mullen, The Edge 330657 10877148 0.99 2949 The Three Sunrises B-Sides 1980-1990 MPEG audio file Rock U2 234788 7717990 0.99 2950 Spanish Eyes B-Sides 1980-1990 MPEG audio file Rock U2 196702 6392710 0.99 2951 Sweetest Thing B-Sides 1980-1990 MPEG audio file Rock U2 185103 6154896 0.99 2952 Love Comes Tumbling B-Sides 1980-1990 MPEG audio file Rock U2 282671 9328802 0.99 2953 Bass Trap B-Sides 1980-1990 MPEG audio file Rock U2 213289 6834107 0.99 2954 Dancing Barefoot B-Sides 1980-1990 MPEG audio file Rock Ivan Kral/Patti Smith 287895 9488294 0.99 2955 Everlasting Love B-Sides 1980-1990 MPEG audio file Rock Buzz Cason/Mac Gayden 202631 6708932 0.99 2956 Unchained Melody B-Sides 1980-1990 MPEG audio file Rock Alex North/Hy Zaret 294164 9597568 0.99 2957 Walk To The Water B-Sides 1980-1990 MPEG audio file Rock U2 289253 9523336 0.99 2958 Luminous Times (Hold On To Love) B-Sides 1980-1990 MPEG audio file Rock Brian Eno/U2 277760 9015513 0.99 2959 Hallelujah Here She Comes B-Sides 1980-1990 MPEG audio file Rock U2 242364 8027028 0.99 2960 Silver And Gold B-Sides 1980-1990 MPEG audio file Rock Bono 279875 9199746 0.99 2961 Endless Deep B-Sides 1980-1990 MPEG audio file Rock U2 179879 5899070 0.99 2962 A Room At The Heartbreak Hotel B-Sides 1980-1990 MPEG audio file Rock U2 274546 9015416 0.99 2963 Trash, Trampoline And The Party Girl B-Sides 1980-1990 MPEG audio file Rock U2 153965 5083523 0.99 2964 Vertigo How To Dismantle An Atomic Bomb MPEG audio file Rock Adam Clayton, Bono, Larry Mullen & The Edge 194612 6329502 0.99 2965 Miracle Drug How To Dismantle An Atomic Bomb MPEG audio file Rock Adam Clayton, Bono, Larry Mullen & The Edge 239124 7760916 0.99 2966 Sometimes You Can't Make It On Your Own How To Dismantle An Atomic Bomb MPEG audio file Rock Adam Clayton, Bono, Larry Mullen & The Edge 308976 10112863 0.99 2967 Love And Peace Or Else How To Dismantle An Atomic Bomb MPEG audio file Rock Adam Clayton, Bono, Larry Mullen & The Edge 290690 9476723 0.99 2968 City Of Blinding Lights How To Dismantle An Atomic Bomb MPEG audio file Rock Adam Clayton, Bono, Larry Mullen & The Edge 347951 11432026 0.99 2969 All Because Of You How To Dismantle An Atomic Bomb MPEG audio file Rock Adam Clayton, Bono, Larry Mullen & The Edge 219141 7198014 0.99 2970 A Man And A Woman How To Dismantle An Atomic Bomb MPEG audio file Rock Adam Clayton, Bono, Larry Mullen & The Edge 270132 8938285 0.99 2971 Crumbs From Your Table How To Dismantle An Atomic Bomb MPEG audio file Rock Adam Clayton, Bono, Larry Mullen & The Edge 303568 9892349 0.99 2972 One Step Closer How To Dismantle An Atomic Bomb MPEG audio file Rock Adam Clayton, Bono, Larry Mullen & The Edge 231680 7512912 0.99 2973 Original Of The Species How To Dismantle An Atomic Bomb MPEG audio file Rock Adam Clayton, Bono, Larry Mullen & The Edge 281443 9230041 0.99 2974 Yahweh How To Dismantle An Atomic Bomb MPEG audio file Rock Adam Clayton, Bono, Larry Mullen & The Edge 262034 8636998 0.99 2975 Discotheque Pop MPEG audio file Rock Bono, The Edge, Adam Clayton, and Larry Mullen 319582 10442206 0.99 2976 Do You Feel Loved Pop MPEG audio file Rock Bono, The Edge, Adam Clayton, and Larry Mullen 307539 10122694 0.99 2977 Mofo Pop MPEG audio file Rock Bono, The Edge, Adam Clayton, and Larry Mullen 349178 11583042 0.99 2978 If God Will Send His Angels Pop MPEG audio file Rock Bono, The Edge, Adam Clayton, and Larry Mullen 322533 10563329 0.99 2979 Staring At The Sun Pop MPEG audio file Rock Bono, The Edge, Adam Clayton, and Larry Mullen 276924 9082838 0.99 2980 Last Night On Earth Pop MPEG audio file Rock Bono, The Edge, Adam Clayton, and Larry Mullen 285753 9401017 0.99 2981 Gone Pop MPEG audio file Rock Bono, The Edge, Adam Clayton, and Larry Mullen 266866 8746301 0.99 2982 Miami Pop MPEG audio file Rock Bono, The Edge, Adam Clayton, and Larry Mullen 293041 9741603 0.99 2983 The Playboy Mansion Pop MPEG audio file Rock Bono, The Edge, Adam Clayton, and Larry Mullen 280555 9274144 0.99 2984 If You Wear That Velvet Dress Pop MPEG audio file Rock Bono, The Edge, Adam Clayton, and Larry Mullen 315167 10227333 0.99 2985 Please Pop MPEG audio file Rock Bono, The Edge, Adam Clayton, and Larry Mullen 302602 9909484 0.99 2986 Wake Up Dead Man Pop MPEG audio file Rock Bono, The Edge, Adam Clayton, and Larry Mullen 292832 9515903 0.99 2987 Helter Skelter Rattle And Hum MPEG audio file Rock Lennon, John/McCartney, Paul 187350 6097636 0.99 2988 Van Diemen's Land Rattle And Hum MPEG audio file Rock Bono/Clayton, Adam/Mullen Jr., Larry/The Edge 186044 5990280 0.99 2989 Desire Rattle And Hum MPEG audio file Rock Bono/Clayton, Adam/Mullen Jr., Larry/The Edge 179226 5874535 0.99 2990 Hawkmoon 269 Rattle And Hum MPEG audio file Rock Bono/Clayton, Adam/Mullen Jr., Larry/The Edge 382458 12494987 0.99 2991 All Along The Watchtower Rattle And Hum MPEG audio file Rock Dylan, Bob 264568 8623572 0.99 2992 I Still Haven't Found What I'm Looking for Rattle And Hum MPEG audio file Rock Bono/Clayton, Adam/Mullen Jr., Larry/The Edge 353567 11542247 0.99 2993 Freedom For My People Rattle And Hum MPEG audio file Rock Mabins, Macie/Magee, Sterling/Robinson, Bobby 38164 1249764 0.99 2994 Silver And Gold Rattle And Hum MPEG audio file Rock Bono/Clayton, Adam/Mullen Jr., Larry/The Edge 349831 11450194 0.99 2995 Pride (In The Name Of Love) Rattle And Hum MPEG audio file Rock Bono/Clayton, Adam/Mullen Jr., Larry/The Edge 267807 8806361 0.99 2996 Angel Of Harlem Rattle And Hum MPEG audio file Rock Bono/Clayton, Adam/Mullen Jr., Larry/The Edge 229276 7498022 0.99 2997 Love Rescue Me Rattle And Hum MPEG audio file Rock Bono/Clayton, Adam/Dylan, Bob/Mullen Jr., Larry/The Edge 384522 12508716 0.99 2998 When Love Comes To Town Rattle And Hum MPEG audio file Rock Bono/Clayton, Adam/Mullen Jr., Larry/The Edge 255869 8340954 0.99 2999 Heartland Rattle And Hum MPEG audio file Rock Bono/Clayton, Adam/Mullen Jr., Larry/The Edge 303360 9867748 0.99 3000 God Part II Rattle And Hum MPEG audio file Rock Bono/Clayton, Adam/Mullen Jr., Larry/The Edge 195604 6497570 0.99 3001 The Star Spangled Banner Rattle And Hum MPEG audio file Rock Hendrix, Jimi 43232 1385810 0.99 3002 Bullet The Blue Sky Rattle And Hum MPEG audio file Rock Bono/Clayton, Adam/Mullen Jr., Larry/The Edge 337005 10993607 0.99 3003 All I Want Is You Rattle And Hum MPEG audio file Rock Bono/Clayton, Adam/Mullen Jr., Larry/The Edge 390243 12729820 0.99 3004 Pride (In The Name Of Love) The Best Of 1980-1990 MPEG audio file Rock U2 230243 7549085 0.99 3005 New Year's Day The Best Of 1980-1990 MPEG audio file Rock U2 258925 8491818 0.99 3006 With Or Without You The Best Of 1980-1990 MPEG audio file Rock U2 299023 9765188 0.99 3007 I Still Haven't Found What I'm Looking For The Best Of 1980-1990 MPEG audio file Rock U2 280764 9306737 0.99 3008 Sunday Bloody Sunday The Best Of 1980-1990 MPEG audio file Rock U2 282174 9269668 0.99 3009 Bad The Best Of 1980-1990 MPEG audio file Rock U2 351817 11628058 0.99 3010 Where The Streets Have No Name The Best Of 1980-1990 MPEG audio file Rock U2 276218 9042305 0.99 3011 I Will Follow The Best Of 1980-1990 MPEG audio file Rock U2 218253 7184825 0.99 3012 The Unforgettable Fire The Best Of 1980-1990 MPEG audio file Rock U2 295183 9684664 0.99 3013 Sweetest Thing The Best Of 1980-1990 MPEG audio file Rock U2 & Daragh O'Toole 183066 6071385 0.99 3014 Desire The Best Of 1980-1990 MPEG audio file Rock U2 179853 5893206 0.99 3015 When Love Comes To Town The Best Of 1980-1990 MPEG audio file Rock U2 258194 8479525 0.99 3016 Angel Of Harlem The Best Of 1980-1990 MPEG audio file Rock U2 230217 7527339 0.99 3017 All I Want Is You The Best Of 1980-1990 MPEG audio file Rock U2 & Van Dyke Parks 591986 19202252 0.99 3018 Sunday Bloody Sunday War MPEG audio file Rock U2 278204 9140849 0.99 3019 Seconds War MPEG audio file Rock U2 191582 6352121 0.99 3020 New Year's Day War MPEG audio file Rock U2 336274 11054732 0.99 3021 Like A Song... War MPEG audio file Rock U2 287294 9365379 0.99 3022 Drowning Man War MPEG audio file Rock U2 254458 8457066 0.99 3023 The Refugee War MPEG audio file Rock U2 221283 7374043 0.99 3024 Two Hearts Beat As One War MPEG audio file Rock U2 243487 7998323 0.99 3025 Red Light War MPEG audio file Rock U2 225854 7453704 0.99 3026 Surrender War MPEG audio file Rock U2 333505 11221406 0.99 3027 "40" War MPEG audio file Rock U2 157962 5251767 0.99 3028 Zooropa Zooropa MPEG audio file Rock U2; Bono 392359 12807979 0.99 3029 Babyface Zooropa MPEG audio file Rock U2; Bono 241998 7942573 0.99 3030 Numb Zooropa MPEG audio file Rock U2; Edge, The 260284 8577861 0.99 3031 Lemon Zooropa MPEG audio file Rock U2; Bono 418324 13988878 0.99 3032 Stay (Faraway, So Close!) Zooropa MPEG audio file Rock U2; Bono 298475 9785480 0.99 3033 Daddy's Gonna Pay For Your Crashed Car Zooropa MPEG audio file Rock U2; Bono 320287 10609581 0.99 3034 Some Days Are Better Than Others Zooropa MPEG audio file Rock U2; Bono 257436 8417690 0.99 3035 The First Time Zooropa MPEG audio file Rock U2; Bono 225697 7247651 0.99 3036 Dirty Day Zooropa MPEG audio file Rock U2; Bono & Edge, The 324440 10652877 0.99 3037 The Wanderer Zooropa MPEG audio file Rock U2; Bono 283951 9258717 0.99 3038 Breakfast In Bed UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 196179 6513325 0.99 3039 Where Did I Go Wrong UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 226742 7485054 0.99 3040 I Would Do For You UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 334524 11193602 0.99 3041 Homely Girl UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 203833 6790788 0.99 3042 Here I Am (Come And Take Me) UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 242102 8106249 0.99 3043 Kingston Town UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 226951 7638236 0.99 3044 Wear You To The Ball UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 213342 7159527 0.99 3045 (I Can't Help) Falling In Love With You UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 207568 6905623 0.99 3046 Higher Ground UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 260179 8665244 0.99 3047 Bring Me Your Cup UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 341498 11346114 0.99 3048 C'est La Vie UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 270053 9031661 0.99 3049 Reggae Music UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 245106 8203931 0.99 3050 Superstition UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 319582 10728099 0.99 3051 Until My Dying Day UB40 The Best Of - Volume Two [UK] MPEG audio file Reggae \N 235807 7886195 0.99 3052 Where Have All The Good Times Gone? Diver Down MPEG audio file Rock Ray Davies 186723 6063937 0.99 3053 Hang 'Em High Diver Down MPEG audio file Rock Alex Van Halen/David Lee Roth/Edward Van Halen/Michael Anthony 210259 6872314 0.99 3054 Cathedral Diver Down MPEG audio file Rock Alex Van Halen/David Lee Roth/Edward Van Halen/Michael Anthony 82860 2650998 0.99 3055 Secrets Diver Down MPEG audio file Rock Alex Van Halen/David Lee Roth/Edward Van Halen/Michael Anthony 206968 6803255 0.99 3056 Intruder Diver Down MPEG audio file Rock Alex Van Halen/David Lee Roth/Edward Van Halen/Michael Anthony 100153 3282142 0.99 3057 (Oh) Pretty Woman Diver Down MPEG audio file Rock Bill Dees/Roy Orbison 174680 5665828 0.99 3058 Dancing In The Street Diver Down MPEG audio file Rock Ivy Jo Hunter/Marvin Gaye/William Stevenson 225985 7461499 0.99 3059 Little Guitars (Intro) Diver Down MPEG audio file Rock Alex Van Halen/David Lee Roth/Edward Van Halen/Michael Anthony 42240 1439530 0.99 3060 Little Guitars Diver Down MPEG audio file Rock Alex Van Halen/David Lee Roth/Edward Van Halen/Michael Anthony 228806 7453043 0.99 3061 Big Bad Bill (Is Sweet William Now) Diver Down MPEG audio file Rock Jack Yellen/Milton Ager 165146 5489609 0.99 3062 The Full Bug Diver Down MPEG audio file Rock Alex Van Halen/David Lee Roth/Edward Van Halen/Michael Anthony 201116 6551013 0.99 3063 Happy Trails Diver Down MPEG audio file Rock Dale Evans 65488 2111141 0.99 3064 Eruption The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, David Lee Roth, Michael Anthony 102164 3272891 0.99 3065 Ain't Talkin' 'bout Love The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, David Lee Roth, Michael Anthony 228336 7569506 0.99 3066 Runnin' With The Devil The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, David Lee Roth, Michael Anthony 215902 7061901 0.99 3067 Dance the Night Away The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, David Lee Roth, Michael Anthony 185965 6087433 0.99 3068 And the Cradle Will Rock... The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, David Lee Roth, Michael Anthony 213968 7011402 0.99 3069 Unchained The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, David Lee Roth, Michael Anthony 208953 6777078 0.99 3070 Jump The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, David Lee Roth 241711 7911090 0.99 3071 Panama The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, David Lee Roth 211853 6921784 0.99 3072 Why Can't This Be Love The Best Of Van Halen, Vol. I MPEG audio file Rock Van Halen 227761 7457655 0.99 3073 Dreams The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony,/Edward Van Halen, Alex Van Halen, Michael Anthony, Sammy Hagar 291813 9504119 0.99 3074 When It's Love The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony,/Edward Van Halen, Alex Van Halen, Michael Anthony, Sammy Hagar 338991 11049966 0.99 3075 Poundcake The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony,/Edward Van Halen, Alex Van Halen, Michael Anthony, Sammy Hagar 321854 10366978 0.99 3076 Right Now The Best Of Van Halen, Vol. I MPEG audio file Rock Van Halen 321828 10503352 0.99 3077 Can't Stop Loving You The Best Of Van Halen, Vol. I MPEG audio file Rock Van Halen 248502 8107896 0.99 3078 Humans Being The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony,/Edward Van Halen, Alex Van Halen, Michael Anthony, Sammy Hagar 308950 10014683 0.99 3079 Can't Get This Stuff No More The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony,/Edward Van Halen, Alex Van Halen, Michael Anthony, David Lee Roth 315376 10355753 0.99 3080 Me Wise Magic The Best Of Van Halen, Vol. I MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony,/Edward Van Halen, Alex Van Halen, Michael Anthony, David Lee Roth 366053 12013467 0.99 3081 Runnin' With The Devil Van Halen MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony and David Lee Roth 216032 7056863 0.99 3082 Eruption Van Halen MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony and David Lee Roth 102556 3286026 0.99 3083 You Really Got Me Van Halen MPEG audio file Rock Ray Davies 158589 5194092 0.99 3084 Ain't Talkin' 'Bout Love Van Halen MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony and David Lee Roth 230060 7617284 0.99 3085 I'm The One Van Halen MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony and David Lee Roth 226507 7373922 0.99 3086 Jamie's Cryin' Van Halen MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony and David Lee Roth 210546 6946086 0.99 3087 Atomic Punk Van Halen MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony and David Lee Roth 182073 5908861 0.99 3088 Feel Your Love Tonight Van Halen MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony and David Lee Roth 222850 7293608 0.99 3089 Little Dreamer Van Halen MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony and David Lee Roth 203258 6648122 0.99 3090 Ice Cream Man Van Halen MPEG audio file Rock John Brim 200306 6573145 0.99 3091 On Fire Van Halen MPEG audio file Rock Edward Van Halen, Alex Van Halen, Michael Anthony and David Lee Roth 180636 5879235 0.99 3092 Neworld Van Halen III MPEG audio file Rock Van Halen 105639 3495897 0.99 3093 Without You Van Halen III MPEG audio file Rock Van Halen 390295 12619558 0.99 3094 One I Want Van Halen III MPEG audio file Rock Van Halen 330788 10743970 0.99 3095 From Afar Van Halen III MPEG audio file Rock Van Halen 324414 10524554 0.99 3096 Dirty Water Dog Van Halen III MPEG audio file Rock Van Halen 327392 10709202 0.99 3097 Once Van Halen III MPEG audio file Rock Van Halen 462837 15378082 0.99 3098 Fire in the Hole Van Halen III MPEG audio file Rock Van Halen 331728 10846768 0.99 3099 Josephina Van Halen III MPEG audio file Rock Van Halen 342491 11161521 0.99 3100 Year to the Day Van Halen III MPEG audio file Rock Van Halen 514612 16621333 0.99 3101 Primary Van Halen III MPEG audio file Rock Van Halen 86987 2812555 0.99 3102 Ballot or the Bullet Van Halen III MPEG audio file Rock Van Halen 342282 11212955 0.99 3103 How Many Say I Van Halen III MPEG audio file Rock Van Halen 363937 11716855 0.99 3104 Sucker Train Blues Contraband MPEG audio file Rock Dave Kushner, Duff, Matt Sorum, Scott Weiland & Slash 267859 8738780 0.99 3105 Do It For The Kids Contraband MPEG audio file Rock Dave Kushner, Duff, Matt Sorum, Scott Weiland & Slash 235911 7693331 0.99 3106 Big Machine Contraband MPEG audio file Rock Dave Kushner, Duff, Matt Sorum, Scott Weiland & Slash 265613 8673442 0.99 3107 Illegal I Song Contraband MPEG audio file Rock Dave Kushner, Duff, Matt Sorum, Scott Weiland & Slash 257750 8483347 0.99 3108 Spectacle Contraband MPEG audio file Rock Dave Kushner, Duff, Matt Sorum, Scott Weiland & Slash 221701 7252876 0.99 3109 Fall To Pieces Contraband MPEG audio file Rock Dave Kushner, Duff, Matt Sorum, Scott Weiland & Slash 270889 8823096 0.99 3110 Headspace Contraband MPEG audio file Rock Dave Kushner, Duff, Matt Sorum, Scott Weiland & Slash 223033 7237986 0.99 3111 Superhuman Contraband MPEG audio file Rock Dave Kushner, Duff, Matt Sorum, Scott Weiland & Slash 255921 8365328 0.99 3112 Set Me Free Contraband MPEG audio file Rock Dave Kushner, Duff, Matt Sorum, Scott Weiland & Slash 247954 8053388 0.99 3113 You Got No Right Contraband MPEG audio file Rock Dave Kushner, Duff, Matt Sorum, Scott Weiland & Slash 335412 10991094 0.99 3114 Slither Contraband MPEG audio file Rock Dave Kushner, Duff, Matt Sorum, Scott Weiland & Slash 248398 8118785 0.99 3115 Dirty Little Thing Contraband MPEG audio file Rock Dave Kushner, Duff, Keith Nelson, Matt Sorum, Scott Weiland & Slash 237844 7732982 0.99 3116 Loving The Alien Contraband MPEG audio file Rock Dave Kushner, Duff, Matt Sorum, Scott Weiland & Slash 348786 11412762 0.99 3117 Pela Luz Dos Olhos Teus Vinicius De Moraes MPEG audio file Latin \N 119196 3905715 0.99 3118 A Bencao E Outros Vinicius De Moraes MPEG audio file Latin \N 421093 14234427 0.99 3119 Tudo Na Mais Santa Paz Vinicius De Moraes MPEG audio file Latin \N 222406 7426757 0.99 3120 O Velho E Aflor Vinicius De Moraes MPEG audio file Latin \N 275121 9126828 0.99 3121 Cotidiano N 2 Vinicius De Moraes MPEG audio file Latin \N 55902 1805797 0.99 3122 Adeus Vinicius De Moraes MPEG audio file Latin \N 221884 7259351 0.99 3123 Samba Pra Endrigo Vinicius De Moraes MPEG audio file Latin \N 259265 8823551 0.99 3124 So Por Amor Vinicius De Moraes MPEG audio file Latin \N 236591 7745764 0.99 3125 Meu Pranto Rolou Vinicius De Moraes MPEG audio file Latin \N 181760 6003345 0.99 3126 Mulher Carioca Vinicius De Moraes MPEG audio file Latin \N 191686 6395048 0.99 3127 Um Homem Chamado Alfredo Vinicius De Moraes MPEG audio file Latin \N 151640 4976227 0.99 3128 Samba Do Jato Vinicius De Moraes MPEG audio file Latin \N 220813 7357840 0.99 3129 Oi, La Vinicius De Moraes MPEG audio file Latin \N 167053 5562700 0.99 3130 Vinicius, Poeta Do Encontro Vinicius De Moraes MPEG audio file Latin \N 336431 10858776 0.99 3131 Soneto Da Separacao Vinicius De Moraes MPEG audio file Latin \N 193880 6277511 0.99 3132 Still Of The Night Greatest Hits MPEG audio file Metal Sykes 398210 13043817 0.99 3133 Here I Go Again Greatest Hits MPEG audio file Metal Marsden 233874 7652473 0.99 3134 Is This Love Greatest Hits MPEG audio file Metal Sykes 283924 9262360 0.99 3135 Love Ain't No Stranger Greatest Hits MPEG audio file Metal Galley 259395 8490428 0.99 3136 Looking For Love Greatest Hits MPEG audio file Metal Sykes 391941 12769847 0.99 3137 Now You're Gone Greatest Hits MPEG audio file Metal Vandenberg 251141 8162193 0.99 3138 Slide It In Greatest Hits MPEG audio file Metal Coverdale 202475 6615152 0.99 3139 Slow An' Easy Greatest Hits MPEG audio file Metal Moody 367255 11961332 0.99 3140 Judgement Day Greatest Hits MPEG audio file Metal Vandenberg 317074 10326997 0.99 3141 You're Gonna Break My Hart Again Greatest Hits MPEG audio file Metal Sykes 250853 8176847 0.99 3142 The Deeper The Love Greatest Hits MPEG audio file Metal Vandenberg 262791 8606504 0.99 3143 Crying In The Rain Greatest Hits MPEG audio file Metal Coverdale 337005 10931921 0.99 3144 Fool For Your Loving Greatest Hits MPEG audio file Metal Marsden/Moody 250801 8129820 0.99 3145 Sweet Lady Luck Greatest Hits MPEG audio file Metal Vandenberg 273737 8919163 0.99 3146 Faixa Amarela Ao Vivo [IMPORT] MPEG audio file Latin Beto Gogo/Jessé Pai/Luiz Carlos/Zeca Pagodinho 240692 8082036 0.99 3147 Posso Até Me Apaixonar Ao Vivo [IMPORT] MPEG audio file Latin Dudu Nobre 200698 6735526 0.99 3148 Não Sou Mais Disso Ao Vivo [IMPORT] MPEG audio file Latin Jorge Aragão/Zeca Pagodinho 225985 7613817 0.99 3149 Vivo Isolado Do Mundo Ao Vivo [IMPORT] MPEG audio file Latin Alcides Dias Lopes 180035 6073995 0.99 3150 Coração Em Desalinho Ao Vivo [IMPORT] MPEG audio file Latin Mauro Diniz/Ratino Sigem 185208 6225948 0.99 3151 Seu Balancê Ao Vivo [IMPORT] MPEG audio file Latin Paulinho Rezende/Toninho Geraes 219454 7311219 0.99 3152 Vai Adiar Ao Vivo [IMPORT] MPEG audio file Latin Alcino Corrêa/Monarco 270393 9134882 0.99 3153 Rugas Ao Vivo [IMPORT] MPEG audio file Latin Augusto Garcez/Nelson Cavaquinho 140930 4703182 0.99 3154 Feirinha da Pavuna/Luz do Repente/Bagaço da Laranja Ao Vivo [IMPORT] MPEG audio file Latin Arlindo Cruz/Franco/Marquinhos PQD/Negro, Jovelina Pérolo/Zeca Pagodinho 107206 3593684 0.99 3155 Sem Essa de Malandro Agulha Ao Vivo [IMPORT] MPEG audio file Latin Aldir Blanc/Jayme Vignoli 158484 5332668 0.99 3156 Chico Não Vai na Corimba Ao Vivo [IMPORT] MPEG audio file Latin Dudu Nobre/Zeca Pagodinho 269374 9122188 0.99 3157 Papel Principal Ao Vivo [IMPORT] MPEG audio file Latin Almir Guineto/Dedé Paraiso/Luverci Ernesto 217495 7325302 0.99 3158 Saudade Louca Ao Vivo [IMPORT] MPEG audio file Latin Acyr Marques/Arlindo Cruz/Franco 243591 8136475 0.99 3159 Camarão que Dorme e Onda Leva Ao Vivo [IMPORT] MPEG audio file Latin Acyi Marques/Arlindo Bruz/Braço, Beto Sem/Zeca Pagodinho 299102 10012231 0.99 3160 Sapopemba e Maxambomba Ao Vivo [IMPORT] MPEG audio file Latin Nei Lopes/Wilson Moreira 245394 8268712 0.99 3161 Minha Fé Ao Vivo [IMPORT] MPEG audio file Latin Murilão 206994 6981474 0.99 3162 Lua de Ogum Ao Vivo [IMPORT] MPEG audio file Latin Ratinho/Zeca Pagodinho 168463 5719129 0.99 3163 Samba pras moças Ao Vivo [IMPORT] MPEG audio file Latin Grazielle/Roque Ferreira 152816 5121366 0.99 3164 Verdade Ao Vivo [IMPORT] MPEG audio file Latin Carlinhos Santana/Nelson Rufino 332826 11120708 0.99 3165 The Brig Lost, Season 3 Protected MPEG-4 video file Drama \N 2617325 488919543 1.99 3166 .07% Heroes, Season 1 Protected MPEG-4 video file Drama \N 2585794 541715199 1.99 3167 Five Years Gone Heroes, Season 1 Protected MPEG-4 video file Drama \N 2587712 530551890 1.99 3168 The Hard Part Heroes, Season 1 Protected MPEG-4 video file Drama \N 2601017 475996611 1.99 3169 The Man Behind the Curtain Lost, Season 3 Protected MPEG-4 video file Drama \N 2615990 493951081 1.99 3170 Greatest Hits Lost, Season 3 Protected MPEG-4 video file Drama \N 2617117 522102916 1.99 3171 Landslide Heroes, Season 1 Protected MPEG-4 video file Drama \N 2600725 518677861 1.99 3172 The Office: An American Workplace (Pilot) The Office, Season 1 Protected MPEG-4 video file TV Shows \N 1380833 290482361 1.99 3173 Diversity Day The Office, Season 1 Protected MPEG-4 video file TV Shows \N 1306416 257879716 1.99 3174 Health Care The Office, Season 1 Protected MPEG-4 video file TV Shows \N 1321791 260493577 1.99 3175 The Alliance The Office, Season 1 Protected MPEG-4 video file TV Shows \N 1317125 266203162 1.99 3176 Basketball The Office, Season 1 Protected MPEG-4 video file TV Shows \N 1323541 267464180 1.99 3177 Hot Girl The Office, Season 1 Protected MPEG-4 video file TV Shows \N 1325458 267836576 1.99 3178 The Dundies The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1253541 246845576 1.99 3179 Sexual Harassment The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1294541 273069146 1.99 3180 Office Olympics The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1290458 256247623 1.99 3181 The Fire The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1288166 266856017 1.99 3182 Halloween The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1315333 249205209 1.99 3183 The Fight The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1320028 277149457 1.99 3184 The Client The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1299341 253836788 1.99 3185 Performance Review The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1292458 256143822 1.99 3186 Email Surveillance The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1328870 265101113 1.99 3187 Christmas Party The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1282115 260891300 1.99 3188 Booze Cruise The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1267958 252518021 1.99 3189 The Injury The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1275275 253912762 1.99 3190 The Secret The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1264875 253143200 1.99 3191 The Carpet The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1264375 256477011 1.99 3192 Boys and Girls The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1278333 255245729 1.99 3193 Valentine's Day The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1270375 253552710 1.99 3194 Dwight's Speech The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1278041 255001728 1.99 3195 Take Your Daughter to Work Day The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1268333 253451012 1.99 3196 Michael's Birthday The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1237791 247238398 1.99 3197 Drug Testing The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1278625 244626927 1.99 3198 Conflict Resolution The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1274583 253808658 1.99 3199 Casino Night - Season Finale The Office, Season 2 Protected MPEG-4 video file TV Shows \N 1712791 327642458 1.99 3200 Gay Witch Hunt The Office, Season 3 Protected MPEG-4 video file TV Shows \N 1326534 276942637 1.99 3201 The Convention The Office, Season 3 Protected MPEG-4 video file TV Shows \N 1297213 255117055 1.99 3202 The Coup The Office, Season 3 Protected MPEG-4 video file TV Shows \N 1276526 267205501 1.99 3203 Grief Counseling The Office, Season 3 Protected MPEG-4 video file TV Shows \N 1282615 256912833 1.99 3204 The Initiation The Office, Season 3 Protected MPEG-4 video file TV Shows \N 1280113 251728257 1.99 3205 Diwali The Office, Season 3 Protected MPEG-4 video file TV Shows \N 1279904 252726644 1.99 3206 Branch Closing The Office, Season 3 Protected MPEG-4 video file TV Shows \N 1822781 358761786 1.99 3207 The Merger The Office, Season 3 Protected MPEG-4 video file TV Shows \N 1801926 345960631 1.99 3208 The Convict The Office, Season 3 Protected MPEG-4 video file Comedy \N 1273064 248863427 1.99 3209 A Benihana Christmas, Pts. 1 & 2 The Office, Season 3 Protected MPEG-4 video file Comedy \N 2519436 515301752 1.99 3210 Back from Vacation The Office, Season 3 Protected MPEG-4 video file Comedy \N 1271688 245378749 1.99 3211 Traveling Salesmen The Office, Season 3 Protected MPEG-4 video file Comedy \N 1289039 250822697 1.99 3212 Producer's Cut: The Return The Office, Season 3 Protected MPEG-4 video file Comedy \N 1700241 337219980 1.99 3213 Ben Franklin The Office, Season 3 Protected MPEG-4 video file Comedy \N 1271938 264168080 1.99 3214 Phyllis's Wedding The Office, Season 3 Protected MPEG-4 video file Comedy \N 1271521 258561054 1.99 3215 Business School The Office, Season 3 Protected MPEG-4 video file Comedy \N 1302093 254402605 1.99 3216 Cocktails The Office, Season 3 Protected MPEG-4 video file Comedy \N 1272522 259011909 1.99 3217 The Negotiation The Office, Season 3 Protected MPEG-4 video file Comedy \N 1767851 371663719 1.99 3218 Safety Training The Office, Season 3 Protected MPEG-4 video file Comedy \N 1271229 253054534 1.99 3219 Product Recall The Office, Season 3 Protected MPEG-4 video file Comedy \N 1268268 251208610 1.99 3220 Women's Appreciation The Office, Season 3 Protected MPEG-4 video file Comedy \N 1732649 338778844 1.99 3221 Beach Games The Office, Season 3 Protected MPEG-4 video file Comedy \N 1676134 333671149 1.99 3222 The Job The Office, Season 3 Protected MPEG-4 video file Comedy \N 2541875 501060138 1.99 3223 How to Stop an Exploding Man Heroes, Season 1 Protected MPEG-4 video file Drama \N 2687103 487881159 1.99 3224 Through a Looking Glass Lost, Season 3 Protected MPEG-4 video file Drama \N 5088838 1059546140 1.99 3225 Your Time Is Gonna Come Un-Led-Ed Protected AAC audio file Rock Page, Jones 310774 5126563 0.99 3226 Battlestar Galactica, Pt. 1 Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2952702 541359437 1.99 3227 Battlestar Galactica, Pt. 2 Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2956081 521387924 1.99 3228 Battlestar Galactica, Pt. 3 Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2927802 554509033 1.99 3229 Lost Planet of the Gods, Pt. 1 Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2922547 537812711 1.99 3230 Lost Planet of the Gods, Pt. 2 Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2914664 534343985 1.99 3231 The Lost Warrior Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2920045 558872190 1.99 3232 The Long Patrol Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2925008 513122217 1.99 3233 The Gun On Ice Planet Zero, Pt. 1 Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2907615 540980196 1.99 3234 The Gun On Ice Planet Zero, Pt. 2 Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2924341 546542281 1.99 3235 The Magnificent Warriors Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2924716 570152232 1.99 3236 The Young Lords Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2863571 587051735 1.99 3237 The Living Legend, Pt. 1 Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2924507 503641007 1.99 3238 The Living Legend, Pt. 2 Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2923298 515632754 1.99 3239 Fire In Space Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2926593 536784757 1.99 3240 War of the Gods, Pt. 1 Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2922630 505761343 1.99 3241 War of the Gods, Pt. 2 Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2923381 487899692 1.99 3242 The Man With Nine Lives Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2956998 577829804 1.99 3243 Murder On the Rising Star Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2935894 551759986 1.99 3244 Greetings from Earth, Pt. 1 Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2960293 536824558 1.99 3245 Greetings from Earth, Pt. 2 Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2903778 527842860 1.99 3246 Baltar's Escape Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2922088 525564224 1.99 3247 Experiment In Terra Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2923548 547982556 1.99 3248 Take the Celestra Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2927677 512381289 1.99 3249 The Hand of God Battlestar Galactica (Classic), Season 1 Protected MPEG-4 video file Sci Fi & Fantasy \N 2924007 536583079 1.99 3250 Pilot Aquaman Protected MPEG-4 video file TV Shows \N 2484567 492670102 1.99 3251 Through the Looking Glass, Pt. 2 Lost, Season 3 Protected MPEG-4 video file Drama \N 2617117 550943353 1.99 3252 Through the Looking Glass, Pt. 1 Lost, Season 3 Protected MPEG-4 video file Drama \N 2610860 493211809 1.99 3253 Instant Karma Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 193188 3150090 0.99 3254 #9 Dream Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 278312 4506425 0.99 3255 Mother Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 287740 4656660 0.99 3256 Give Peace a Chance Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 274644 4448025 0.99 3257 Cold Turkey Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 281424 4556003 0.99 3258 Whatever Gets You Thru the Night Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 215084 3499018 0.99 3259 I'm Losing You Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 240719 3907467 0.99 3260 Gimme Some Truth Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 232778 3780807 0.99 3261 Oh, My Love Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 159473 2612788 0.99 3262 Imagine Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 192329 3136271 0.99 3263 Nobody Told Me Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 210348 3423395 0.99 3264 Jealous Guy Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 239094 3881620 0.99 3265 Working Class Hero Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 265449 4301430 0.99 3266 Power to the People Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 213018 3466029 0.99 3267 Imagine Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 219078 3562542 0.99 3268 Beautiful Boy Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 227995 3704642 0.99 3269 Isolation Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 156059 2558399 0.99 3270 Watching the Wheels Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 198645 3237063 0.99 3271 Grow Old With Me Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 149093 2447453 0.99 3272 Gimme Some Truth Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 187546 3060083 0.99 3273 [Just Like] Starting Over Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 215549 3506308 0.99 3274 God Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 260410 4221135 0.99 3275 Real Love Instant Karma: The Amnesty International Campaign to Save Darfur Protected AAC audio file Pop \N 236911 3846658 0.99 3276 Sympton of the Universe Speak of the Devil Protected AAC audio file Rock \N 340890 5489313 0.99 3277 Snowblind Speak of the Devil Protected AAC audio file Rock \N 295960 4773171 0.99 3278 Black Sabbath Speak of the Devil Protected AAC audio file Rock \N 364180 5860455 0.99 3279 Fairies Wear Boots Speak of the Devil Protected AAC audio file Rock \N 392764 6315916 0.99 3280 War Pigs Speak of the Devil Protected AAC audio file Rock \N 515435 8270194 0.99 3281 The Wizard Speak of the Devil Protected AAC audio file Rock \N 282678 4561796 0.99 3282 N.I.B. Speak of the Devil Protected AAC audio file Rock \N 335248 5399456 0.99 3283 Sweet Leaf Speak of the Devil Protected AAC audio file Rock \N 354706 5709700 0.99 3284 Never Say Die Speak of the Devil Protected AAC audio file Rock \N 258343 4173799 0.99 3285 Sabbath, Bloody Sabbath Speak of the Devil Protected AAC audio file Rock \N 333622 5373633 0.99 3286 Iron Man/Children of the Grave Speak of the Devil Protected AAC audio file Rock \N 552308 8858616 0.99 3287 Paranoid Speak of the Devil Protected AAC audio file Rock \N 189171 3071042 0.99 3288 Rock You Like a Hurricane 20th Century Masters - The Millennium Collection: The Best of Scorpions Protected AAC audio file Rock \N 255766 4300973 0.99 3289 No One Like You 20th Century Masters - The Millennium Collection: The Best of Scorpions Protected AAC audio file Rock \N 240325 4050259 0.99 3290 The Zoo 20th Century Masters - The Millennium Collection: The Best of Scorpions Protected AAC audio file Rock \N 332740 5550779 0.99 3291 Loving You Sunday Morning 20th Century Masters - The Millennium Collection: The Best of Scorpions Protected AAC audio file Rock \N 339125 5654493 0.99 3292 Still Loving You 20th Century Masters - The Millennium Collection: The Best of Scorpions Protected AAC audio file Rock \N 390674 6491444 0.99 3293 Big City Nights 20th Century Masters - The Millennium Collection: The Best of Scorpions Protected AAC audio file Rock \N 251865 4237651 0.99 3294 Believe in Love 20th Century Masters - The Millennium Collection: The Best of Scorpions Protected AAC audio file Rock \N 325774 5437651 0.99 3295 Rhythm of Love 20th Century Masters - The Millennium Collection: The Best of Scorpions Protected AAC audio file Rock \N 231246 3902834 0.99 3296 I Can't Explain 20th Century Masters - The Millennium Collection: The Best of Scorpions Protected AAC audio file Rock \N 205332 3482099 0.99 3297 Tease Me Please Me 20th Century Masters - The Millennium Collection: The Best of Scorpions Protected AAC audio file Rock \N 287229 4811894 0.99 3298 Wind of Change 20th Century Masters - The Millennium Collection: The Best of Scorpions Protected AAC audio file Rock \N 315325 5268002 0.99 3299 Send Me an Angel 20th Century Masters - The Millennium Collection: The Best of Scorpions Protected AAC audio file Rock \N 273041 4581492 0.99 3300 Jump Around House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Muggerud 217835 8715653 0.99 3301 Salutations House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Dimant 69120 2767047 0.99 3302 Put Your Head Out House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Freese/L. Muggerud 182230 7291473 0.99 3303 Top O' The Morning To Ya House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Dimant 216633 8667599 0.99 3304 Commercial 1 House of Pain MPEG audio file Hip Hop/Rap L. Muggerud 7941 319888 0.99 3305 House And The Rising Sun House of Pain MPEG audio file Hip Hop/Rap E. Schrody/J. Vasquez/L. Dimant 219402 8778369 0.99 3306 Shamrocks And Shenanigans House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Dimant 218331 8735518 0.99 3307 House Of Pain Anthem House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Dimant 155611 6226713 0.99 3308 Danny Boy, Danny Boy House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Muggerud 114520 4583091 0.99 3309 Guess Who's Back House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Muggerud 238393 9537994 0.99 3310 Commercial 2 House of Pain MPEG audio file Hip Hop/Rap L. Muggerud 21211 850698 0.99 3311 Put On Your Shit Kickers House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Muggerud 190432 7619569 0.99 3312 Come And Get Some Of This House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Muggerud/R. Medrano 170475 6821279 0.99 3313 Life Goes On House of Pain MPEG audio file Hip Hop/Rap E. Schrody/R. Medrano 163030 6523458 0.99 3314 One For The Road House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Dimant/L. Muggerud 170213 6810820 0.99 3315 Feel It House of Pain MPEG audio file Hip Hop/Rap E. Schrody/R. Medrano 239908 9598588 0.99 3316 All My Love House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Dimant 200620 8027065 0.99 3317 Jump Around (Pete Rock Remix) House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Muggerud 236120 9447101 0.99 3318 Shamrocks And Shenanigans (Boom Shalock Lock Boom/Butch Vig Mix) House of Pain MPEG audio file Hip Hop/Rap E. Schrody/L. Dimant 237035 9483705 0.99 3319 Instinto Colectivo Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 300564 12024875 0.99 3320 Chapa o Coco Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 143830 5755478 0.99 3321 Prostituta Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 359000 14362307 0.99 3322 Eu So Queria Sumir Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 269740 10791921 0.99 3323 Tres Reis Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 304143 12168015 0.99 3324 Um Lugar ao Sol Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 212323 8495217 0.99 3325 Batalha Naval Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 285727 11431382 0.99 3326 Todo o Carnaval tem seu Fim Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 237426 9499371 0.99 3327 O Misterio do Samba Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 226142 9047970 0.99 3328 Armadura Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 232881 9317533 0.99 3329 Na Ladeira Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 221570 8865099 0.99 3330 Carimbo Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 328751 13152314 0.99 3331 Catimbo Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 254484 10181692 0.99 3332 Funk de Bamba Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 237322 9495184 0.99 3333 Chega no Suingue Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 221805 8874509 0.99 3334 Mun-Ra Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 274651 10988338 0.99 3335 Freestyle Love Radio Brasil (O Som da Jovem Vanguarda) - Seleccao de Henrique Amaro MPEG audio file Electronica/Dance \N 318484 12741680 0.99 3336 War Pigs Cake: B-Sides and Rarities Purchased AAC audio file Alternative \N 234013 8052374 0.99 3337 Past, Present, and Future LOST, Season 4 Protected MPEG-4 video file Drama \N 2492867 490796184 1.99 3338 The Beginning of the End LOST, Season 4 Protected MPEG-4 video file Drama \N 2611903 526865050 1.99 3339 LOST Season 4 Trailer LOST, Season 4 Protected MPEG-4 video file Drama \N 112712 20831818 1.99 3340 LOST In 8:15 LOST, Season 4 Protected MPEG-4 video file Drama \N 497163 98460675 1.99 3341 Confirmed Dead LOST, Season 4 Protected MPEG-4 video file Drama \N 2611986 512168460 1.99 3342 The Economist LOST, Season 4 Protected MPEG-4 video file Drama \N 2609025 516934914 1.99 3343 Eggtown LOST, Season 4 Protected MPEG-4 video file TV Shows \N 2608817 501061240 1.99 3344 The Constant LOST, Season 4 Protected MPEG-4 video file Drama \N 2611569 520209363 1.99 3345 The Other Woman LOST, Season 4 Protected MPEG-4 video file Drama \N 2605021 513246663 1.99 3346 Ji Yeon LOST, Season 4 Protected MPEG-4 video file TV Shows \N 2588797 506458858 1.99 3347 Meet Kevin Johnson LOST, Season 4 Protected MPEG-4 video file TV Shows \N 2612028 504132981 1.99 3348 The Shape of Things to Come LOST, Season 4 Protected MPEG-4 video file Drama \N 2591299 502284266 1.99 3349 Amanda Quiet Songs AAC audio file Jazz Luca Gusella 246503 4011615 0.99 3350 Despertar Quiet Songs AAC audio file Jazz Andrea Dulbecco 307385 4821485 0.99 3351 Din Din Wo (Little Child) Muso Ko AAC audio file World Habib Koité 285837 4615841 0.99 3352 Distance Realize AAC audio file Electronica/Dance Karsh Kale/Vishal Vaid 327122 5327463 0.99 3353 I Guess You're Right Every Kind of Light AAC audio file Rock Darius "Take One" Minwalla/Jon Auer/Ken Stringfellow/Matt Harris 212044 3453849 0.99 3354 I Ka Barra (Your Work) Muso Ko AAC audio file World Habib Koité 300605 4855457 0.99 3355 Love Comes Every Kind of Light AAC audio file Rock Darius "Take One" Minwalla/Jon Auer/Ken Stringfellow/Matt Harris 199923 3240609 0.99 3356 Muita Bobeira Duos II AAC audio file Latin Luciana Souza 172710 2775071 0.99 3357 OAM's Blues Worlds AAC audio file Jazz Aaron Goldberg 266936 4292028 0.99 3358 One Step Beyond Realize AAC audio file Electronica/Dance Karsh Kale 366085 6034098 0.99 3359 Symphony No. 3 in E-flat major, Op. 55, "Eroica" - Scherzo: Allegro Vivace The Best of Beethoven AAC audio file Classical Ludwig van Beethoven 356426 5817216 0.99 3360 Something Nice Back Home LOST, Season 4 Protected MPEG-4 video file Drama \N 2612779 484711353 1.99 3361 Cabin Fever LOST, Season 4 Protected MPEG-4 video file Drama \N 2612028 477733942 1.99 3362 There's No Place Like Home, Pt. 1 LOST, Season 4 Protected MPEG-4 video file Drama \N 2609526 522919189 1.99 3363 There's No Place Like Home, Pt. 2 LOST, Season 4 Protected MPEG-4 video file Drama \N 2497956 523748920 1.99 3364 There's No Place Like Home, Pt. 3 LOST, Season 4 Protected MPEG-4 video file Drama \N 2582957 486161766 1.99 3365 Say Hello 2 Heaven Temple of the Dog Protected AAC audio file Alternative \N 384497 6477217 0.99 3366 Reach Down Temple of the Dog Protected AAC audio file Alternative \N 672773 11157785 0.99 3367 Hunger Strike Temple of the Dog Protected AAC audio file Alternative \N 246292 4233212 0.99 3368 Pushin Forward Back Temple of the Dog Protected AAC audio file Alternative \N 225278 3892066 0.99 3369 Call Me a Dog Temple of the Dog Protected AAC audio file Alternative \N 304458 5177612 0.99 3370 Times of Trouble Temple of the Dog Protected AAC audio file Alternative \N 342539 5795951 0.99 3371 Wooden Jesus Temple of the Dog Protected AAC audio file Alternative \N 250565 4302603 0.99 3372 Your Savior Temple of the Dog Protected AAC audio file Alternative \N 244226 4199626 0.99 3373 Four Walled World Temple of the Dog Protected AAC audio file Alternative \N 414474 6964048 0.99 3374 All Night Thing Temple of the Dog Protected AAC audio file Alternative \N 231803 3997982 0.99 3375 No Such Thing Carry On Protected AAC audio file Alternative Chris Cornell 224837 3691272 0.99 3376 Poison Eye Carry On Protected AAC audio file Alternative Chris Cornell 237120 3890037 0.99 3377 Arms Around Your Love Carry On Protected AAC audio file Alternative Chris Cornell 214016 3516224 0.99 3378 Safe and Sound Carry On Protected AAC audio file Alternative Chris Cornell 256764 4207769 0.99 3379 She'll Never Be Your Man Carry On Protected AAC audio file Alternative Chris Cornell 204078 3355715 0.99 3380 Ghosts Carry On Protected AAC audio file Alternative Chris Cornell 231547 3799745 0.99 3381 Killing Birds Carry On Protected AAC audio file Alternative Chris Cornell 218498 3588776 0.99 3382 Billie Jean Carry On Protected AAC audio file Alternative Michael Jackson 281401 4606408 0.99 3383 Scar On the Sky Carry On Protected AAC audio file Alternative Chris Cornell 220193 3616618 0.99 3384 Your Soul Today Carry On Protected AAC audio file Alternative Chris Cornell 205959 3385722 0.99 3385 Finally Forever Carry On Protected AAC audio file Alternative Chris Cornell 217035 3565098 0.99 3386 Silence the Voices Carry On Protected AAC audio file Alternative Chris Cornell 267376 4379597 0.99 3387 Disappearing Act Carry On Protected AAC audio file Alternative Chris Cornell 273320 4476203 0.99 3388 You Know My Name Carry On Protected AAC audio file Alternative Chris Cornell 240255 3940651 0.99 3389 Revelations Revelations Protected AAC audio file Alternative \N 252376 4111051 0.99 3390 One and the Same Revelations Protected AAC audio file Alternative \N 217732 3559040 0.99 3391 Sound of a Gun Revelations Protected AAC audio file Alternative \N 260154 4234990 0.99 3392 Until We Fall Revelations Protected AAC audio file Alternative \N 230758 3766605 0.99 3393 Original Fire Revelations Protected AAC audio file Alternative \N 218916 3577821 0.99 3394 Broken City Revelations Protected AAC audio file Alternative \N 228366 3728955 0.99 3395 Somedays Revelations Protected AAC audio file Alternative \N 213831 3497176 0.99 3396 Shape of Things to Come Revelations Protected AAC audio file Alternative \N 274597 4465399 0.99 3397 Jewel of the Summertime Revelations Protected AAC audio file Alternative \N 233242 3806103 0.99 3398 Wide Awake Revelations Protected AAC audio file Alternative \N 266308 4333050 0.99 3399 Nothing Left to Say But Goodbye Revelations Protected AAC audio file Alternative \N 213041 3484335 0.99 3400 Moth Revelations Protected AAC audio file Alternative \N 298049 4838884 0.99 3401 Show Me How to Live (Live at the Quart Festival) Revelations Protected AAC audio file Alternative \N 301974 4901540 0.99 3402 Band Members Discuss Tracks from "Revelations" Revelations Protected MPEG-4 video file Alternative \N 294294 61118891 0.99 3403 Intoitus: Adorate Deum Adorate Deum: Gregorian Chant from the Proper of the Mass Protected AAC audio file Classical Anonymous 245317 4123531 0.99 3404 Miserere mei, Deus Allegri: Miserere Protected AAC audio file Classical Gregorio Allegri 501503 8285941 0.99 3405 Canon and Gigue in D Major: I. Canon Pachelbel: Canon & Gigue Protected AAC audio file Classical Johann Pachelbel 271788 4438393 0.99 3406 Concerto No. 1 in E Major, RV 269 "Spring": I. Allegro Vivaldi: The Four Seasons Protected AAC audio file Classical Antonio Vivaldi 199086 3347810 0.99 3407 Concerto for 2 Violins in D Minor, BWV 1043: I. Vivace Bach: Violin Concertos Protected AAC audio file Classical Johann Sebastian Bach 193722 3192890 0.99 3408 Aria Mit 30 Veränderungen, BWV 988 "Goldberg Variations": Aria Bach: Goldberg Variations Protected AAC audio file Classical Johann Sebastian Bach 120463 2081895 0.99 3409 Suite for Solo Cello No. 1 in G Major, BWV 1007: I. Prélude Bach: The Cello Suites Protected AAC audio file Classical Johann Sebastian Bach 143288 2315495 0.99 3410 The Messiah: Behold, I Tell You a Mystery... The Trumpet Shall Sound Handel: The Messiah (Highlights) Protected AAC audio file Classical George Frideric Handel 582029 9553140 0.99 3411 Solomon HWV 67: The Arrival of the Queen of Sheba The World of Classical Favourites Protected AAC audio file Classical George Frideric Handel 197135 3247914 0.99 3412 "Eine Kleine Nachtmusik" Serenade In G, K. 525: I. Allegro Sir Neville Marriner: A Celebration Protected AAC audio file Classical Wolfgang Amadeus Mozart 348971 5760129 0.99 3413 Concerto for Clarinet in A Major, K. 622: II. Adagio Mozart: Wind Concertos Protected AAC audio file Classical Wolfgang Amadeus Mozart 394482 6474980 0.99 3414 Symphony No. 104 in D Major "London": IV. Finale: Spiritoso Haydn: Symphonies 99 - 104 Purchased AAC audio file Classical Franz Joseph Haydn 306687 10085867 0.99 3415 Symphony No.5 in C Minor: I. Allegro con brio Beethoven: Symhonies Nos. 5 & 6 Protected AAC audio file Classical Ludwig van Beethoven 392462 6419730 0.99 3416 Ave Maria A Soprano Inspired Protected AAC audio file Classical Franz Schubert 338243 5605648 0.99 3417 Nabucco: Chorus, "Va, Pensiero, Sull'ali Dorate" Great Opera Choruses Protected AAC audio file Classical Giuseppe Verdi 274504 4498583 0.99 3418 Die Walküre: The Ride of the Valkyries Wagner: Favourite Overtures Protected AAC audio file Classical Richard Wagner 189008 3114209 0.99 3419 Requiem, Op.48: 4. Pie Jesu Fauré: Requiem, Ravel: Pavane & Others Protected AAC audio file Classical Gabriel Fauré 258924 4314850 0.99 3420 The Nutcracker, Op. 71a, Act II: Scene 14: Pas de deux: Dance of the Prince & the Sugar-Plum Fairy Tchaikovsky: The Nutcracker Protected AAC audio file Classical Peter Ilyich Tchaikovsky 304226 5184289 0.99 3421 Nimrod (Adagio) from Variations On an Original Theme, Op. 36 "Enigma" The Last Night of the Proms Protected AAC audio file Classical Edward Elgar 250031 4124707 0.99 3422 Madama Butterfly: Un Bel Dì Vedremo Puccini: Madama Butterfly - Highlights Protected AAC audio file Classical Giacomo Puccini 277639 4588197 0.99 3423 Jupiter, the Bringer of Jollity Holst: The Planets, Op. 32 & Vaughan Williams: Fantasies Protected AAC audio file Classical Gustav Holst 522099 8547876 0.99 3424 Turandot, Act III, Nessun dorma! Pavarotti's Opera Made Easy Protected AAC audio file Classical Giacomo Puccini 176911 2920890 0.99 3425 Adagio for Strings from the String Quartet, Op. 11 Great Performances - Barber's Adagio and Other Romantic Favorites for Strings Protected AAC audio file Classical Samuel Barber 596519 9585597 0.99 3426 Carmina Burana: O Fortuna Carmina Burana Protected AAC audio file Classical Carl Orff 156710 2630293 0.99 3427 Fanfare for the Common Man A Copland Celebration, Vol. I Protected AAC audio file Classical Aaron Copland 198064 3211245 0.99 3428 Branch Closing The Office, Season 3 Protected MPEG-4 video file Comedy \N 1814855 360331351 1.99 3429 The Return The Office, Season 3 Protected MPEG-4 video file Comedy \N 1705080 343877320 1.99 3430 Toccata and Fugue in D Minor, BWV 565: I. Toccata Bach: Toccata & Fugue in D Minor Protected AAC audio file Classical Johann Sebastian Bach 153901 2649938 0.99 3431 Symphony No.1 in D Major, Op.25 "Classical", Allegro Con Brio Prokofiev: Symphony No.1 Protected AAC audio file Classical Sergei Prokofiev 254001 4195542 0.99 3432 Scheherazade, Op. 35: I. The Sea and Sindbad's Ship Scheherazade Protected AAC audio file Classical Nikolai Rimsky-Korsakov 545203 8916313 0.99 3433 Concerto No.2 in F Major, BWV1047, I. Allegro Bach: The Brandenburg Concertos Protected AAC audio file Classical Johann Sebastian Bach 307244 5064553 0.99 3434 Concerto for Piano No. 2 in F Minor, Op. 21: II. Larghetto Chopin: Piano Concertos Nos. 1 & 2 Protected AAC audio file Classical Frédéric Chopin 560342 9160082 0.99 3435 Cavalleria Rusticana \\ Act \\ Intermezzo Sinfonico Mascagni: Cavalleria Rusticana Protected AAC audio file Classical Pietro Mascagni 243436 4001276 0.99 3436 Karelia Suite, Op.11: 2. Ballade (Tempo Di Menuetto) Sibelius: Finlandia Protected AAC audio file Classical Jean Sibelius 406000 5908455 0.99 3437 Piano Sonata No. 14 in C Sharp Minor, Op. 27, No. 2, "Moonlight": I. Adagio sostenuto Beethoven Piano Sonatas: Moonlight & Pastorale Protected AAC audio file Classical Ludwig van Beethoven 391000 6318740 0.99 3438 Fantasia On Greensleeves The World of Classical Favourites Protected AAC audio file Classical Ralph Vaughan Williams 268066 4513190 0.99 3439 Das Lied Von Der Erde, Von Der Jugend Great Recordings of the Century - Mahler: Das Lied von der Erde Protected AAC audio file Classical Gustav Mahler 223583 3700206 0.99 3440 Concerto for Cello and Orchestra in E minor, Op. 85: I. Adagio - Moderato Elgar: Cello Concerto & Vaughan Williams: Fantasias Protected AAC audio file Classical Edward Elgar 483133 7865479 0.99 3441 Two Fanfares for Orchestra: II. Short Ride in a Fast Machine Adams, John: The Chairman Dances Protected AAC audio file Classical John Adams 254930 4310896 0.99 3442 Wellington's Victory or the Battle Symphony, Op.91: 2. Symphony of Triumph Tchaikovsky: 1812 Festival Overture, Op.49, Capriccio Italien & Beethoven: Wellington's Victory Protected AAC audio file Classical Ludwig van Beethoven 412000 6965201 0.99 3443 Missa Papae Marcelli: Kyrie Palestrina: Missa Papae Marcelli & Allegri: Miserere Protected AAC audio file Classical Giovanni Pierluigi da Palestrina 240666 4244149 0.99 3444 Romeo et Juliette: No. 11 - Danse des Chevaliers Prokofiev: Romeo & Juliet Protected AAC audio file Classical \N 275015 4519239 0.99 3445 On the Beautiful Blue Danube Strauss: Waltzes Protected AAC audio file Classical Johann Strauss II 526696 8610225 0.99 3446 Symphonie Fantastique, Op. 14: V. Songe d'une nuit du sabbat Berlioz: Symphonie Fantastique Protected AAC audio file Classical Hector Berlioz 561967 9173344 0.99 3447 Carmen: Overture Bizet: Carmen Highlights Protected AAC audio file Classical Georges Bizet 132932 2189002 0.99 3448 Lamentations of Jeremiah, First Set \\ Incipit Lamentatio English Renaissance Protected AAC audio file Classical Thomas Tallis 69194 1208080 0.99 3449 Music for the Royal Fireworks, HWV351 (1749): La Réjouissance Handel: Music for the Royal Fireworks (Original Version 1749) Protected AAC audio file Classical George Frideric Handel 120000 2193734 0.99 3450 Peer Gynt Suite No.1, Op.46: 1. Morning Mood Grieg: Peer Gynt Suites & Sibelius: Pelléas et Mélisande Protected AAC audio file Classical Edvard Grieg 253422 4298769 0.99 3451 Die Zauberflöte, K.620: "Der Hölle Rache Kocht in Meinem Herze" Mozart Gala: Famous Arias Protected AAC audio file Opera Wolfgang Amadeus Mozart 174813 2861468 0.99 3452 SCRIABIN: Prelude in B Major, Op. 11, No. 11 SCRIABIN: Vers la flamme Purchased AAC audio file Classical \N 101293 3819535 0.99 3453 Pavan, Lachrimae Antiquae Armada: Music from the Courts of England and Spain Protected AAC audio file Classical John Dowland 253281 4211495 0.99 3454 Symphony No. 41 in C Major, K. 551, "Jupiter": IV. Molto allegro Mozart: Symphonies Nos. 40 & 41 Protected AAC audio file Classical Wolfgang Amadeus Mozart 362933 6173269 0.99 3455 Rehab Back to Black Protected AAC audio file R&B/Soul \N 213240 3416878 0.99 3456 You Know I'm No Good Back to Black Protected AAC audio file R&B/Soul \N 256946 4133694 0.99 3457 Me & Mr. Jones Back to Black Protected AAC audio file R&B/Soul \N 151706 2449438 0.99 3458 Just Friends Back to Black Protected AAC audio file R&B/Soul \N 191933 3098906 0.99 3459 Back to Black Back to Black Protected AAC audio file R&B/Soul Mark Ronson 240320 3852953 0.99 3460 Love Is a Losing Game Back to Black Protected AAC audio file R&B/Soul \N 154386 2509409 0.99 3461 Tears Dry On Their Own Back to Black Protected AAC audio file R&B/Soul Nickolas Ashford & Valerie Simpson 185293 2996598 0.99 3462 Wake Up Alone Back to Black Protected AAC audio file R&B/Soul Paul O'duffy 221413 3576773 0.99 3463 Some Unholy War Back to Black Protected AAC audio file R&B/Soul \N 141520 2304465 0.99 3464 He Can Only Hold Her Back to Black Protected AAC audio file R&B/Soul Richard Poindexter & Robert Poindexter 166680 2666531 0.99 3465 You Know I'm No Good (feat. Ghostface Killah) Back to Black Protected AAC audio file R&B/Soul \N 202320 3260658 0.99 3466 Rehab (Hot Chip Remix) Back to Black Protected AAC audio file R&B/Soul \N 418293 6670600 0.99 3467 Intro / Stronger Than Me Frank Protected AAC audio file Pop \N 234200 3832165 0.99 3468 You Sent Me Flying / Cherry Frank Protected AAC audio file Pop \N 409906 6657517 0.99 3469 F**k Me Pumps Frank Protected AAC audio file Pop Salaam Remi 200253 3324343 0.99 3470 I Heard Love Is Blind Frank Protected AAC audio file Pop \N 129666 2190831 0.99 3471 (There Is) No Greater Love (Teo Licks) Frank Protected AAC audio file Pop Isham Jones & Marty Symes 167933 2773507 0.99 3472 In My Bed Frank Protected AAC audio file Pop Salaam Remi 315960 5211774 0.99 3473 Take the Box Frank Protected AAC audio file Pop Luke Smith 199160 3281526 0.99 3474 October Song Frank Protected AAC audio file Pop Matt Rowe & Stefan Skarbek 204846 3358125 0.99 3475 What Is It About Men Frank Protected AAC audio file Pop Delroy "Chris" Cooper, Donovan Jackson, Earl Chinna Smith, Felix Howard, Gordon Williams, Luke Smith, Paul Watson & Wilburn Squiddley Cole 209573 3426106 0.99 3476 Help Yourself Frank Protected AAC audio file Pop Freddy James, Jimmy hogarth & Larry Stock 300884 5029266 0.99 3477 Amy Amy Amy (Outro) Frank Protected AAC audio file Pop Astor Campbell, Delroy "Chris" Cooper, Donovan Jackson, Dorothy Fields, Earl Chinna Smith, Felix Howard, Gordon Williams, James Moody, Jimmy McHugh, Matt Rowe, Salaam Remi & Stefan Skarbek 663426 10564704 0.99 3478 Slowness Carried to Dust (Bonus Track Version) Protected AAC audio file Alternative \N 215386 3644793 0.99 3479 Prometheus Overture, Op. 43 Beethoven: Symphony No. 6 'Pastoral' Etc. Purchased AAC audio file Classical Ludwig van Beethoven 339567 10887931 0.99 3480 Sonata for Solo Violin: IV: Presto Bartok: Violin & Viola Concertos Purchased AAC audio file Classical Béla Bartók 299350 9785346 0.99 3481 A Midsummer Night's Dream, Op.61 Incidental Music: No.7 Notturno Mendelssohn: A Midsummer Night's Dream Protected AAC audio file Classical \N 387826 6497867 0.99 3482 Suite No. 3 in D, BWV 1068: III. Gavotte I & II Bach: Orchestral Suites Nos. 1 - 4 Protected AAC audio file Classical Johann Sebastian Bach 225933 3847164 0.99 3483 Concert pour 4 Parties de V**les, H. 545: I. Prelude Charpentier: Divertissements, Airs & Concerts Protected AAC audio file Classical Marc-Antoine Charpentier 110266 1973559 0.99 3484 Adios nonino South American Getaway Protected AAC audio file Classical Astor Piazzolla 289388 4781384 0.99 3485 Symphony No. 3 Op. 36 for Orchestra and Soprano "Symfonia Piesni Zalosnych" \\ Lento E Largo - Tranquillissimo Górecki: Symphony No. 3 Protected AAC audio file Classical Henryk Górecki 567494 9273123 0.99 3486 Act IV, Symphony Purcell: The Fairy Queen Protected AAC audio file Classical Henry Purcell 364296 5987695 0.99 3487 3 Gymnopédies: No.1 - Lent Et Grave, No.3 - Lent Et Douloureux The Ultimate Relexation Album Protected AAC audio file Classical Erik Satie 385506 6458501 0.99 3488 Music for the Funeral of Queen Mary: VI. "Thou Knowest, Lord, the Secrets of Our Hearts" Purcell: Music for the Queen Mary Protected AAC audio file Classical Henry Purcell 142081 2365930 0.99 3489 Symphony No. 2: III. Allegro vivace Weill: The Seven Deadly Sins Protected AAC audio file Classical Kurt Weill 376510 6129146 0.99 3490 Partita in E Major, BWV 1006A: I. Prelude J.S. Bach: Chaconne, Suite in E Minor, Partita in E Major & Prelude, Fugue and Allegro Protected AAC audio file Classical Johann Sebastian Bach 285673 4744929 0.99 3491 Le Sacre Du Printemps: I.iv. Spring Rounds Prokofiev: Symphony No.5 & Stravinksy: Le Sacre Du Printemps Protected AAC audio file Classical Igor Stravinsky 234746 4072205 0.99 3492 Sing Joyfully English Renaissance Protected AAC audio file Classical William Byrd 133768 2256484 0.99 3493 Metopes, Op. 29: Calypso Szymanowski: Piano Works, Vol. 1 Protected AAC audio file Classical Karol Szymanowski 333669 5548755 0.99 3494 Symphony No. 2, Op. 16 - "The Four Temperaments": II. Allegro Comodo e Flemmatico Nielsen: The Six Symphonies Protected AAC audio file Classical Carl Nielsen 286998 4834785 0.99 3495 24 Caprices, Op. 1, No. 24, for Solo Violin, in A Minor Great Recordings of the Century: Paganini's 24 Caprices Protected AAC audio file Classical Niccolò Paganini 265541 4371533 0.99 3496 Étude 1, In C Major - Preludio (Presto) - Liszt Liszt - 12 Études D'Execution Transcendante Purchased AAC audio file Classical \N 51780 2229617 0.99 3497 Erlkonig, D.328 Great Recordings of the Century - Shubert: Schwanengesang, 4 Lieder Protected AAC audio file Classical \N 261849 4307907 0.99 3498 Concerto for Violin, Strings and Continuo in G Major, Op. 3, No. 9: I. Allegro Locatelli: Concertos for Violin, Strings and Continuo, Vol. 3 Purchased AAC audio file Classical Pietro Antonio Locatelli 493573 16454937 0.99 3499 Pini Di Roma (Pinien Von Rom) \\ I Pini Della Via Appia Respighi:Pines of Rome Protected AAC audio file Classical \N 286741 4718950 0.99 3500 String Quartet No. 12 in C Minor, D. 703 "Quartettsatz": II. Andante - Allegro assai Schubert: The Late String Quartets & String Quintet (3 CD's) Protected AAC audio file Classical Franz Schubert 139200 2283131 0.99 3501 L'orfeo, Act 3, Sinfonia (Orchestra) Monteverdi: L'Orfeo Protected AAC audio file Classical Claudio Monteverdi 66639 1189062 0.99 3502 Quintet for Horn, Violin, 2 Violas, and Cello in E Flat Major, K. 407/386c: III. Allegro Mozart: Chamber Music Protected AAC audio file Classical Wolfgang Amadeus Mozart 221331 3665114 0.99 3503 Koyaanisqatsi Koyaanisqatsi (Soundtrack from the Motion Picture) Protected AAC audio file Soundtrack Philip Glass 206005 3305164 0.99 pgloader/test/data/nsitra.test4.ixf0000644000175000017500000001246513047375022017516 0ustar vagrantvagrant000051HIXF0002DB2 02.0020140713121449000060081900000 001604T008tab4.ixf 000 CMPC I00004 000872C007TIMECOL YNYNR3880081900000 001000001 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000872C015TIMECOL_NOTNULL NNYNR3880081900000 001000011 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000872C007DATECOL YNYNR3840081900000 001000019 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000872C015DATECOL_NOTNULL NNYNR3840081900000 001000031 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048D001 12.08.5912.08.592014-07-132014-07-13000048D001 12.08.5912.08.592014-07-132014-07-13000048D001 12.08.5912.08.592014-07-132014-07-13000048D001 12.08.5912.08.592014-07-132014-07-13000028ADB2 02.00E20140713121449pgloader/test/udc.load0000644000175000017500000000174213047375022015143 0ustar vagrantvagrant/* * This test is ported from pgloader 2.x where it was defined as: * * [udc] * table = udc * format = text * filename = udc/udc.data * input_encoding = 'latin1' * field_sep = % * columns = b:2, d:1, x:3, y:4 * udc_c = constant value * copy_columns = b, c, d * */ LOAD CSV FROM inline WITH ENCODING latin1 (d, b, x, y) INTO postgresql:///pgloader?udc ( b , c text using "constant value" , d ) WITH fields optionally enclosed by '"', fields escaped by double-quote, fields terminated by '%' SET client_encoding to 'latin1', work_mem to '12MB', standard_conforming_strings to 'on' BEFORE LOAD DO $$ drop table if exists udc; $$, $$ create table udc ( b integer primary key, c text, d integer ); $$; 1%5%foo%bar 2%10%bar%toto 3%4%toto%titi 4%18%titi%baz 5%2%baz%foo pgloader/test/ixf.load0000644000175000017500000000044613114020727015150 0ustar vagrantvagrantLOAD IXF FROM data/nsitra.test1.ixf INTO postgresql:///pgloader?nsitra.test1 WITH on error stop, truncate, create table, timezone UTC BEFORE LOAD DO $$ drop schema if exists nsitra cascade; $$, $$ create schema nsitra; $$, $$ drop table if exists nsitra.test1; $$; pgloader/test/census-places.load0000644000175000017500000000246113047375022017134 0ustar vagrantvagrantLOAD ARCHIVE FROM -- http://www.census.gov/geo/maps-data/data/docs/gazetteer/places2k.zip http://www2.census.gov/geo/docs/maps-data/data/gazetteer/places2k.zip INTO postgresql:///pgloader BEFORE LOAD DO $$ drop table if exists places; $$, $$ create table places ( usps char(2) not null, fips char(2) not null, fips_code char(5), "LocationName" varchar(64) ); $$ LOAD FIXED FROM FILENAME MATCHING ~/places2k.txt/ WITH ENCODING latin1 ( usps from 0 for 2, fips from 2 for 2, fips_code from 4 for 5, "LocationName" from 9 for 64 [trim right whitespace], p from 73 for 9, h from 82 for 9, land from 91 for 14, water from 105 for 14, ldm from 119 for 14, wtm from 131 for 14, lat from 143 for 10, long from 153 for 11 ) INTO postgresql:///pgloader?places ( usps, fips, fips_code, "LocationName" ); pgloader/test/csv-non-printable.load0000644000175000017500000000145013047375022017725 0ustar vagrantvagrant-- -- From https://github.com/dimitri/pgloader/issues/275 -- LOAD CSV FROM inline with encoding 'LATIN1' HAVING FIELDS ("Some-Field", c2, c3) INTO postgresql:///pgloader?tab_csv ( c1 text using "Some-Field", c2, c3 ) WITH truncate, skip header = 0, fields terminated by ',', fields optionally enclosed by '"' BEFORE LOAD DO $$ drop table if exists tab_csv; $$, $$ create table tab_csv (c1 varchar(100), c2 varchar(100), c3 varchar(100)); $$ ; col1, 45, "005 45 works" col1, 44, "006 44 Fails 0xa5" col1, 45, "006 45 Fails 0xa6" col1, "45", "006 45 Fails using escape 0xa6" col1, 46, "006 46 Fails 0xa7" col1, 47, "006 47 Fails 0xa8" col1, 4T works, "006 followed by 4 works ? why"pgloader/test/xzero.load0000644000175000017500000000237313047375022015540 0ustar vagrantvagrant/* * This test is ported from pgloader 2.x where it was defined as: * * [simple_tmpl] * template = True * format = text * datestyle = dmy * field_sep = | * trailing_sep = True * * [xzero] * use_template = simple_tmpl * table = xzero * filename = xzero/xzero.data * columns = a:1, b:3, c:2 * skip_head_lines = 2 * null = */ LOAD CSV FROM inline (a, c, b [ null if '' ], trailing) INTO postgresql:///pgloader?xzero (a, b, c) WITH skip header = 2, fields optionally enclosed by '"', fields escaped by double-quote, fields terminated by '|' SET client_encoding to 'latin1', datestyle to 'dmy', work_mem to '12MB', standard_conforming_strings to 'on' BEFORE LOAD DO $$ drop table if exists xzero; $$, $$ create table xzero ( a integer primary key, b date, c text ); $$; This is a stupid useless header like you sometime find in CSV files id|data|date| 1|some first row text|2006-11-11| 2|some second row text|13/11/2006| 3|some third row text|12-10-2006| 4|\ |2006-10-4| 5|some fifth row text|2006-5-12| 6|some sixth row text|10/7/6| 7|some null date to play with|| pgloader/test/csv-missing-col.load0000644000175000017500000000151213047375022017400 0ustar vagrantvagrantLOAD CSV FROM inline (a, b, c, d, e, f, g) INTO postgresql:///pgloader?missingcol (a, b, c, d, e, f, g) WITH truncate, fields optionally enclosed by '"', fields escaped by double-quote, fields terminated by ',' BEFORE LOAD DO $$ drop table if exists missingcol; $$, $$ create table missingcol ( a text, b text, x text, d text, e text, f text, g text ); $$; "2.6.190.56","2.6.190.63","33996344","33996351","GB","United Kingdom" "3.0.0.0","4.17.135.31","50331648","68257567","US","United States" "4.17.135.32","4.17.135.63","68257568","68257599","CA","Canada" "4.17.135.64","4.17.142.255","68257600","68259583","US","United States" "4.17.143.0","4.17.143.15","68259584","68259599","CA","Canada" "4.17.143.16","4.18.32.71","68259600","68296775","US","United States" pgloader/test/simple.load0000644000175000017500000000253513047375022015662 0ustar vagrantvagrant/* * This test is ported from pgloader 2.x where it was defined as: * * [simple_tmpl] * template = True * format = text * datestyle = dmy * field_sep = | * trailing_sep = True * * [simple] * use_template = simple_tmpl * table = simple * filename = simple/simple.data * columns = a:1, b:3, c:2 * skip_head_lines = 2 * * # those reject settings are defaults one * reject_log = /tmp/simple.rej.log * reject_data = /tmp/simple.rej */ LOAD CSV FROM inline (a, c, b, trailing) INTO postgresql:///pgloader?simple (a, b, c) WITH truncate, skip header = 2, fields optionally enclosed by '"', fields escaped by double-quote, fields terminated by '|' SET client_encoding to 'latin1', datestyle to 'dmy', work_mem to '12MB', standard_conforming_strings to 'on' BEFORE LOAD DO $$ drop table if exists simple; $$, $$ create table simple ( a integer primary key, b date, c text ); $$; This is a stupid useless header like you sometime find in CSV files id|data|date| 1|some first row text|2006-11-11| 2|some second row text|13/11/2006| 3|some third row text|12-10-2006| 4|\ |2006-10-4| 5|some fifth row text|2006-5-12| 6|some sixth row text|10/7/6| 7|some null date to play with|| pgloader/test/dbf-zip.load0000644000175000017500000000032313047375022015715 0ustar vagrantvagrantLOAD DBF FROM http://www.insee.fr/fr/methodes/nomenclatures/cog/telechargement/2013/dbf/historiq2013.zip INTO postgresql:///pgloader WITH truncate, create table SET client_encoding TO 'latin1'; pgloader/test/fixed.load0000644000175000017500000000225713047375022015471 0ustar vagrantvagrant/* * This test is ported from pgloader 2.x where it was defined as: * * [fixed] * table = fixed * format = fixed * filename = fixed/fixed.data * columns = * * fixed_specs = a:0:10, b:10:8, c:18:8, d:26:17 * reformat = c:pgtime:time * */ LOAD FIXED FROM inline ( a from 0 for 10, b from 10 for 8, c from 18 for 8, d from 26 for 17 [null if blanks, trim right whitespace] ) INTO postgresql:///pgloader?fixed ( a, b, c time using (time-with-no-separator c), d ) WITH truncate, drop indexes SET client_encoding to 'latin1', work_mem to '14MB', standard_conforming_strings to 'on' BEFORE LOAD DO $$ drop table if exists fixed; $$, $$ create table fixed ( a integer primary key, b date, c time, d text ); $$; 01234567892008052011431250firstline 01234562008052115182300left blank-padded 12345678902008052208231560another line 2345609872014092914371500 2345678902014092914371520 pgloader/.dockerignore0000644000175000017500000000002413047375022015214 0ustar vagrantvagrant.git .vagrant build pgloader/Dockerfile0000644000175000017500000000070513047375022014540 0ustar vagrantvagrantFROM debian:jessie MAINTAINER Dimitri Fontaine RUN apt-get update RUN apt-get install -y wget curl make git bzip2 time libzip-dev libssl1.0.0 openssl RUN apt-get install -y patch unzip libsqlite3-dev gawk freetds-dev sbcl ADD ./ /opt/src/pgloader WORKDIR /opt/src/pgloader # build/ is in the .dockerignore file, but we actually need it now RUN mkdir -p build/bin RUN make RUN cp /opt/src/pgloader/build/bin/pgloader /usr/local/bin pgloader/.DS_Store0000644000175000017500000001400413113536356014231 0ustar vagrantvagrantBud1dvSrnlongbuildvSrnlong  @ @ @ @ EDSDB ` @ @ @pgloader/Vagrantfile0000644000175000017500000000301413047375022014727 0ustar vagrantvagrant# -*- mode: ruby -*- # vi: set ft=ruby : # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! VAGRANTFILE_API_VERSION = "2" Vagrant.configure("2") do |config| config.vm.define "wheezy" do |wheezy| wheezy.vm.box = "wheezy64" config.vm.provision :file do |file| file.source = 'conf/gpg-agent.conf' file.destination = '/home/vagrant/.gnupg/gpg-agent.conf' end config.vm.provision :file do |file| file.source = 'conf/gpg.conf' file.destination = '/home/vagrant/.gnupg/gpg.conf' end config.vm.provision :file do |file| file.source = 'conf/devscripts' file.destination = '/home/vagrant/.devscripts' end config.vm.provision "shell" do |s| s.path = "bootstrap-debian.sh" s.privileged = false end config.vm.network :forwarded_port, guest: 4505, host: 4505 end config.vm.define "centos" do |centos| centos.vm.box = "CentOS64" config.vm.provision "shell" do |s| s.path = "bootstrap-centos.sh" s.privileged = false end end config.vm.define "w7" do |centos| centos.vm.box = "w7" config.vm.communicator = "winrm" config.vm.network :forwarded_port, guest: 5985, host: 5985, id: "winrm", auto_correct: true config.vm.network :forwarded_port, guest: 3389, host: 3389, id: "rdp", auto_correct: true config.vm.network :forwarded_port, guest: 1433, host: 1433, id: "mssql", auto_correct: true end end pgloader/.travis.sh0000755000175000017500000000475213117235342014477 0ustar vagrantvagrant#!/bin/bash set -eu lisp_install() { case "$LISP" in ccl) ccl_checksum='08e885e8c2bb6e4abd42b8e8e2b60f257c6929eb34b8ec87ca1ecf848fac6d70' ccl_version='1.11' remote_file "/tmp/ccl-${ccl_version}.tgz" "https://github.com/Clozure/ccl/releases/download/v${ccl_version}/ccl-${ccl_version}-linuxx86.tar.gz" "$ccl_checksum" tar --file "/tmp/ccl-${ccl_version}.tgz" --extract --exclude='.svn' --directory '/tmp' sudo mv --no-target-directory '/tmp/ccl' '/usr/local/src/ccl' sudo ln --no-dereference --force --symbolic "/usr/local/src/ccl/scripts/ccl64" '/usr/local/bin/ccl' ;; sbcl) sbcl_checksum='eb44d9efb4389f71c05af0327bab7cd18f8bb221fb13a6e458477a9194853958' sbcl_version='1.3.18' remote_file "/tmp/sbcl-${sbcl_version}.tgz" "http://prdownloads.sourceforge.net/sbcl/sbcl-${sbcl_version}-x86-64-linux-binary.tar.bz2" "$sbcl_checksum" tar --file "/tmp/sbcl-${sbcl_version}.tgz" --extract --directory '/tmp' ( cd "/tmp/sbcl-${sbcl_version}-x86-64-linux" && sudo ./install.sh ) ;; *) echo "Unrecognized Lisp: '$LISP'" exit 1 ;; esac } pgdg_repositories() { local sourcelist='sources.list.d/pgdg.list' sudo tee "/etc/apt/$sourcelist" <<-repositories deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg-testing main 10 repositories sudo apt-key adv --keyserver 'hkp://ha.pool.sks-keyservers.net' --recv-keys 'ACCC4CF8' sudo apt-get -o Dir::Etc::sourcelist="$sourcelist" -o Dir::Etc::sourceparts='-' -o APT::Get::List-Cleanup='0' update } postgresql_install() { if [ -z "${PGVERSION:-}" ]; then PGVERSION="$( psql -d postgres -XAtc "select regexp_replace(current_setting('server_version'), '[.][0-9]+$', '')" )" else sudo service postgresql stop xargs sudo apt-get -y --purge remove <<-packages libpq-dev libpq5 postgresql postgresql-client-common postgresql-common packages sudo rm -rf /var/lib/postgresql fi xargs sudo apt-get -y install <<-packages postgresql-${PGVERSION} postgresql-${PGVERSION}-ip4r packages sudo tee /etc/postgresql/${PGVERSION}/main/pg_hba.conf > /dev/null <<-config local all all trust host all all 127.0.0.1/32 trust config sudo service postgresql restart } remote_file() { local target="$1" origin="$2" sum="$3" local check="shasum --algorithm $(( 4 * ${#sum} )) --check" local filesum="$sum $target" curl --location --output "$target" "$origin" && $check <<< "$filesum" } $1 pgloader/INSTALL.md0000644000175000017500000000722113122544661014177 0ustar vagrantvagrant# Installing pgloader pgloader version 3.x is written in Common Lisp. ## Dependencies The steps depend on the OS you are currently using. ### debian If you're using debian, it's quite simple actually, see the file `bootstrap-debian.sh` within the main pgloader distribution to get yourself started. You will note in particular: sudo apt-get install -y sbcl \ git curl patch unzip \ devscripts pandoc \ libsqlite3-dev \ freetds-dev We need a recent enough [SBCL](http://sbcl.org/) version and that means backporting the one found in `sid` rather than using the very old one found in current *stable* debian release. See `bootstrap-debian.sh` for details about how to backport a recent enough SBCL here (1.2.5 or newer). ### Redhat / CentOS You will need to install the Steel Bank Common Lisp package (sbcl) from EPEL, as well as the freetds-devel package for some shared libraries. With RHEL/CentOS 6, if the packaged version isn't >=1.3.6, you'll need to build it from source. With v7, after installing freetds, you also need to create a softlink from the versioned shared library `libsybdb.so.5` to `libsybdb.so`. The above steps are prepared for you with `boostrap-centos.sh` and `bootstrap-centos7.sh` respectively. Please report to us if your standard RHEL/CentOS installation required additional steps. ### Mac OS X We suppose you already have `git` and `make` available, if that's not the case now is the time to install those tools. The SQLite lib that comes in MacOSX is fine, no need for extra software here. You will need to install either SBCL or CCL separately, and when using [brew](http://brew.sh/) it's as simple as: brew install sbcl brew install clozure-cl NOTE: Make sure you installed the universal binaries of Freetds, so that they can be loaded correctly. brew install freetds --universal --build-from-source ### Compiling SBCL by yourself If you ended up building SBCL yourself or you just want to do that, you can download the source from http://www.sbcl.org/ . You will need to build SBCL with the following command and options: sh make.sh --with-sb-core-compression --with-sb-thread NOTE: You could also remove the --compress-core option. ## Building pgloader Now that the dependences are installed, just type make. make If your `SBCL` supports core compression, the make process will use it to generate a smaller binary. To force disabling core compression, you may use: make COMPRESS_CORE=no Then you will have a new tool to play with: ./build/bin/pgloader --help This command should spit out the *usage* information on which parameters are accepted in the command line actually. ## Building pgloader with CCL It's possible to pick [ccl](http://ccl.clozure.com/) rather than SBCL when compiling pgloader: make CL=ccl ## Building pgloader for use in low RAM environments It's possible to tweak the size of RAM pgloader will use in its binary image, at compile time. This defaults to 4 GB. make DYNSIZE=1024 Now the `./build/bin/pgloader` that you get only uses 1GB. ## Building a docker image A `Dockerfile` is provided, to use it: docker build -t pgloader:debian . docker run --rm --name pgloader pgloader:debian bash -c "pgloader --version" The `build` step install build dependencies in a debian jessie container, then `git clone` and build `pgloader` in `/opt/src/pgloader` and finally copy the resulting binary image in `/usr/local/bin/pgloader` so that it's easily available. pgloader/pgloader.spec0000644000175000017500000000414413101406116015206 0ustar vagrantvagrantSummary: extract, transform and load data into PostgreSQL Name: pgloader Version: 3.3.2 Release: 22%{?dist} License: The PostgreSQL Licence Group: System Environment/Base Source: %{name}-%{version}.tar.gz URL: https://github.com/dimitri/pgloader %description pgloader imports data from different kind of sources and COPY it into PostgreSQL. The command language is described in the manual page and allows to describe where to find the data source, its format, and to describe data processing and transformation. Supported source formats include CSV, fixed width flat files, dBase3 files (DBF), and SQLite and MySQL databases. In most of those formats, pgloader is able to auto-discover the schema and create the tables and the indexes in PostgreSQL. In the MySQL case it's possible to edit CASTing rules from the pgloader command directly. %prep %setup -q -n %{name} %build %define debug_package %{nil} make pgloader %install install -m 755 -d %{buildroot}/%{_bindir} cp build/bin/pgloader %{buildroot}/%{_bindir}/pgloader mkdir -p $RPM_BUILD_ROOT/etc/prelink.conf.d echo '-b /usr/bin/pgloader' > $RPM_BUILD_ROOT/etc/prelink.conf.d/%{name}.conf %files %doc README.md pgloader.1.md %{_bindir}/* /etc/prelink.conf.d/%{name}.conf %changelog * Thu Jan 22 2015 Dimitri Fontaine - 3.2.1.preview-22 - Release 3.2.1.preview * Thu Jan 15 2015 Dimitri Fontaine - 3.2.0-22 - Release 3.2.0 * Wed Nov 5 2014 Dimitri Fontaine - 3.1.1-22 - Release 3.1.1 * Wed Sep 10 2014 Dimitri Fontaine - 3.1.0-22 - Release 3.1.0 * Tue Apr 29 2014 Dimitri Fontaine 3.0.99 - Assorted fixes, release candidate 9 * Mon Dec 23 2013 Dimitri Fontaine 3.0.98 - Assorted fixes, release candidate 8 * Sun Dec 15 2013 Dimitri Fontaine 3.0.97 - Assorted fixes, release candidate 7 * Tue Dec 10 2013 Dimitri Fontaine 3.0.96 - Package as an RPM %global __os_install_post %{nil} pgloader/bundle/0000755000175000017500000000000013047375022014015 5ustar vagrantvagrantpgloader/bundle/README.md0000644000175000017500000000162513047375022015300 0ustar vagrantvagrant# pgloader source bundle In order to ease building pgloader for non-lisp users, the *bundle* distribution is a tarball containing pgloader and its build dependencies. See the the following documentation for more details: The *bundle* comes with a specific `Makefile` so that building it is as simple as the following (which includes testing the resulting binary): make LANG=en_US.UTF-8 make test The compilation might takes a while, it's because SBCL is trying hard to generate run-time binary code that is fast and efficient. Yes you need to be in a unicide environment to run the test suite, so that it matches with the encoding of the test *.load files. You can then package or use the pgloader binary: ./bin/pgloader --version ./bin/pgloader --help Note that the SQLite test files are not included in the bundle, for weithing too much here. pgloader/bundle/Makefile0000644000175000017500000000420513047375022015456 0ustar vagrantvagrant# pgloader build tool for bundle tarball # only supports SBCL CL = sbcl APP_NAME = pgloader VERSION = %VERSION% ifeq ($(OS),Windows_NT) EXE = .exe COMPRESS_CORE = no DYNSIZE = 1024 # support for windows 32 bits else DYNSIZE = 4096 EXE = endif BUILDDIR = bin BUILDAPP = $(BUILDDIR)/buildapp$(EXE) PGLOADER = ./bin/pgloader SRCDIR = local-projects/pgloader-$(VERSION) BUILDAPP_OPTS = --require sb-posix \ --require sb-bsd-sockets \ --require sb-rotate-byte CL_OPTS = --noinform --no-sysinit --no-userinit COMPRESS_CORE ?= $(shell $(CL) --noinform \ --quit \ --eval '(when (member :sb-core-compression cl:*features*) (write-string "yes"))') ifeq ($(COMPRESS_CORE),yes) COMPRESS_CORE_OPT = --compress-core endif pgloader: $(PGLOADER) ; buildapp: $(BUILDAPP) ; $(BUILDAPP): mkdir -p $(BUILDDIR) $(CL) $(CL_OPTS) --load bundle.lisp \ --eval '(asdf:load-system :buildapp)' \ --eval '(buildapp:build-buildapp "$@")' \ --eval '(quit)' $(PGLOADER): $(BUILDAPP) $(BUILDAPP) --logfile /tmp/pgloader-bundle-build.log \ $(BUILDAPP_OPTS) \ --sbcl $(CL) \ --asdf-tree . \ --load-system $(APP_NAME) \ --eval '(setf pgloader.params::*version-string* "$(VERSION)")' \ --load $(SRCDIR)/src/hooks.lisp \ --entry pgloader:main \ --dynamic-space-size $(DYNSIZE) \ $(COMPRESS_CORE_OPT) \ --output $@.tmp # that's ugly, but necessary when building on Windows :( mv $@.tmp $@ test: $(PGLOADER) $(MAKE) PGLOADER=$(realpath $(PGLOADER)) -C $(SRCDIR)/test regress check: test ; pgloader/conf/0000755000175000017500000000000013047375022013471 5ustar vagrantvagrantpgloader/conf/sources.list0000644000175000017500000000042313047375022016050 0ustar vagrantvagrantdeb http://ftp.fr.debian.org/debian sid main non-free contrib deb-src http://ftp.fr.debian.org/debian sid main non-free contrib # deb http://security.debian.org/ wheezy/updates main contrib non-free # deb-src http://security.debian.org/ wheezy/updates main contrib non-free pgloader/conf/gpg.conf0000644000175000017500000000034213047375022015114 0ustar vagrantvagrantdefault-key 60B1CB4E keyserver hkp://keys.gnupg.net use-agent personal-digest-preferences SHA512 cert-digest-algo SHA512 default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed pgloader/conf/gpg-agent.conf0000644000175000017500000000013213047375022016205 0ustar vagrantvagrant# Keyboard control no-grab # PIN entry program pinentry-program /usr/bin/pinentry-curses pgloader/conf/devscripts0000644000175000017500000000012313047375022015576 0ustar vagrantvagrantDEBEMAIL="dim@tapoueh.org" DEBFULLNAME="Dimitri Fontaine" DEBSIGN_KEYID="60B1CB4E" pgloader/conf/bashrc.sh0000644000175000017500000000026313047375022015270 0ustar vagrantvagrant # GnuPG Agent export GPG_TTY=`tty` eval "$(gpg-agent --daemon)" # DEBIAN export DEBEMAIL="dim@tapoueh.org" export DEBFULLNAME="Dimitri Fontaine" export DEBSIGN_KEYID="60B1CB4E" pgloader/bootstrap-centos.sh0000644000175000017500000000124113047375022016404 0ustar vagrantvagrant#!/usr/bin/env bash sudo yum -y install yum-utils rpmdevtools @"Development Tools" \ sqlite-devel zlib-devel # SBCL 1.3, we'll overwrite the repo version of sbcl with a more recent one sudo yum -y install epel-release sudo yum install -y sbcl.x86_64 --enablerepo=epel wget http://downloads.sourceforge.net/project/sbcl/sbcl/1.3.6/sbcl-1.3.6-source.tar.bz2 tar xfj sbcl-1.3.6-source.tar.bz2 cd sbcl-1.3.6 ./make.sh --with-sb-thread --with-sb-core-compression --prefix=/usr > /dev/null 2>&1 sudo sh install.sh cd # Missing dependencies sudo yum -y install freetds-devel # prepare the rpmbuild setup rpmdev-setuptree # pgloader #make -C /vagrant rpm pgloader/Makefile0000644000175000017500000001763113127440075014214 0ustar vagrantvagrant# pgloader build tool APP_NAME = pgloader VERSION = 3.4.1 # use either sbcl or ccl CL = sbcl # default to 4096 MB of RAM size in the image DYNSIZE = 4096 LISP_SRC = $(wildcard src/*lisp) \ $(wildcard src/monkey/*lisp) \ $(wildcard src/utils/*lisp) \ $(wildcard src/parsers/*lisp) \ $(wildcard src/pgsql/*lisp) \ $(wildcard src/sources/*lisp) \ pgloader.asd BUILDDIR = build LIBS = $(BUILDDIR)/libs.stamp QLDIR = $(BUILDDIR)/quicklisp MANIFEST = $(BUILDDIR)/manifest.ql LATEST = $(BUILDDIR)/pgloader-latest.tgz BUNDLENAME = pgloader-bundle-$(VERSION) BUNDLEDIR = $(BUILDDIR)/bundle/$(BUNDLENAME) BUNDLE = $(BUILDDIR)/$(BUNDLENAME).tgz ifeq ($(OS),Windows_NT) EXE = .exe COMPRESS_CORE = no DYNSIZE = 1024 # support for windows 32 bits else EXE = endif PGLOADER = $(BUILDDIR)/bin/$(APP_NAME)$(EXE) BUILDAPP_CCL = $(BUILDDIR)/bin/buildapp.ccl$(EXE) BUILDAPP_SBCL = $(BUILDDIR)/bin/buildapp.sbcl$(EXE) ifeq ($(CL),sbcl) BUILDAPP = $(BUILDAPP_SBCL) BUILDAPP_OPTS = --require sb-posix \ --require sb-bsd-sockets \ --require sb-rotate-byte CL_OPTS = --noinform --no-sysinit --no-userinit else BUILDAPP = $(BUILDAPP_CCL) CL_OPTS = --no-init endif ifeq ($(CL),sbcl) COMPRESS_CORE ?= $(shell $(CL) --noinform \ --quit \ --eval '(when (member :sb-core-compression cl:*features*) (write-string "yes"))') endif # note: on Windows_NT, we never core-compress; see above. ifeq ($(COMPRESS_CORE),yes) COMPRESS_CORE_OPT = --compress-core endif DEBUILD_ROOT = /tmp/pgloader all: $(PGLOADER) clean: rm -rf $(LIBS) $(QLDIR) $(MANIFEST) $(BUILDAPP) $(PGLOADER) docs: ronn -roff pgloader.1.md $(QLDIR)/local-projects/qmynd: git clone --depth 1 https://github.com/qitab/qmynd.git $@ $(QLDIR)/local-projects/cl-ixf: git clone --depth 1 https://github.com/dimitri/cl-ixf.git $@ $(QLDIR)/local-projects/cl-db3: git clone --depth 1 https://github.com/dimitri/cl-db3.git $@ $(QLDIR)/local-projects/cl-csv: git clone --depth 1 https://github.com/AccelerationNet/cl-csv.git $@ $(QLDIR)/setup.lisp: mkdir -p $(BUILDDIR) curl -o $(BUILDDIR)/quicklisp.lisp http://beta.quicklisp.org/quicklisp.lisp $(CL) $(CL_OPTS) --load $(BUILDDIR)/quicklisp.lisp \ --load src/getenv.lisp \ --eval '(quicklisp-quickstart:install :path "$(BUILDDIR)/quicklisp" :proxy (getenv "http_proxy"))' \ --eval '(quit)' quicklisp: $(QLDIR)/setup.lisp ; clones: $(QLDIR)/local-projects/cl-ixf \ $(QLDIR)/local-projects/cl-db3 \ $(QLDIR)/local-projects/cl-csv \ $(QLDIR)/local-projects/qmynd ; $(LIBS): $(QLDIR)/setup.lisp clones $(CL) $(CL_OPTS) --load $(QLDIR)/setup.lisp \ --eval '(push "$(PWD)/" asdf:*central-registry*)' \ --eval '(ql:quickload "pgloader")' \ --eval '(quit)' touch $@ libs: $(LIBS) ; $(MANIFEST): $(LIBS) $(CL) $(CL_OPTS) --load $(QLDIR)/setup.lisp \ --eval '(ql:write-asdf-manifest-file "$(MANIFEST)")' \ --eval '(quit)' manifest: $(MANIFEST) ; $(BUILDAPP_CCL): $(QLDIR)/setup.lisp mkdir -p $(BUILDDIR)/bin $(CL) $(CL_OPTS) --load $(QLDIR)/setup.lisp \ --eval '(ql:quickload "buildapp")' \ --eval '(buildapp:build-buildapp "$@")' \ --eval '(quit)' $(BUILDAPP_SBCL): $(QLDIR)/setup.lisp mkdir -p $(BUILDDIR)/bin $(CL) $(CL_OPTS) --load $(QLDIR)/setup.lisp \ --eval '(ql:quickload "buildapp")' \ --eval '(buildapp:build-buildapp "$@")' \ --eval '(quit)' buildapp: $(BUILDAPP) ; $(PGLOADER): $(MANIFEST) $(BUILDAPP) $(LISP_SRC) mkdir -p $(BUILDDIR)/bin $(BUILDAPP) --logfile /tmp/build.log \ $(BUILDAPP_OPTS) \ --sbcl $(CL) \ --asdf-path . \ --asdf-tree $(QLDIR)/local-projects \ --manifest-file $(MANIFEST) \ --asdf-tree $(QLDIR)/dists \ --asdf-path . \ --load-system $(APP_NAME) \ --load src/hooks.lisp \ --entry pgloader:main \ --dynamic-space-size $(DYNSIZE) \ $(COMPRESS_CORE_OPT) \ --output $@.tmp # that's ugly, but necessary when building on Windows :( mv $@.tmp $@ pgloader: $(PGLOADER) ; pgloader-standalone: $(BUILDAPP) $(BUILDAPP_OPTS) \ --sbcl $(CL) \ --load-system $(APP_NAME) \ --load src/hooks.lisp \ --entry pgloader:main \ --dynamic-space-size $(DYNSIZE) \ $(COMPRESS_CORE_OPT) \ --output $(PGLOADER) test: $(PGLOADER) $(MAKE) PGLOADER=$(realpath $(PGLOADER)) CL=$(CL) -C test regress clean-bundle: rm -rf $(BUNDLEDIR) $(BUNDLEDIR): mkdir -p $@ $(CL) $(CL_OPTS) --load $(QLDIR)/setup.lisp \ --eval '(ql:bundle-systems (list "pgloader" "buildapp") :to "$@")' \ --eval '(quit)' $(BUNDLE): $(BUNDLEDIR) cp bundle/README.md $(BUNDLEDIR) sed -e s/%VERSION%/$(VERSION)/ < bundle/Makefile > $(BUNDLEDIR)/Makefile git archive --format=tar --prefix=pgloader-$(VERSION)/ master \ | tar -C $(BUNDLEDIR)/local-projects/ -xf - make QLDIR=$(BUNDLEDIR) clones tar -C build/bundle \ --exclude bin \ --exclude test/sqlite \ -czf $@ pgloader-bundle-$(VERSION) bundle: $(BUNDLE) test-bundle: $(MAKE) -C $(BUNDLEDIR) test deb: # intended for use on a debian system mkdir -p $(DEBUILD_ROOT) && rm -rf $(DEBUILD_ROOT)/* rsync -Ca --exclude 'build' \ --exclude '.vagrant' \ --exclude 'test/sqlite-chinook.load' \ --exclude 'test/sqlite' \ --exclude 'test/data/2013_Gaz_113CDs_national.txt' \ --exclude 'test/data/reg2013.dbf' \ --exclude 'test/data/sakila-db.zip' \ ./ $(DEBUILD_ROOT)/ cd $(DEBUILD_ROOT) && make -f debian/rules orig cd $(DEBUILD_ROOT) && debuild -us -uc -sa cp -a /tmp/pgloader_* /tmp/cl-pgloader* build/ rpm: # intended for use on a CentOS or other RPM based system mkdir -p $(DEBUILD_ROOT) && rm -rf $(DEBUILD_ROOT) rsync -Ca --exclude=build/* ./ $(DEBUILD_ROOT)/ cd /tmp && tar czf $(HOME)/rpmbuild/SOURCES/pgloader-$(VERSION).tar.gz pgloader cd $(DEBUILD_ROOT) && rpmbuild -ba pgloader.spec cp -a $(HOME)/rpmbuild/SRPMS/*rpm build cp -a $(HOME)/rpmbuild/RPMS/x86_64/*rpm build pkg: # intended for use on a MacOSX system mkdir -p $(DEBUILD_ROOT) && rm -rf $(DEBUILD_ROOT)/* mkdir -p $(DEBUILD_ROOT)/usr/local/bin/ mkdir -p $(DEBUILD_ROOT)/usr/local/share/man/man1/ cp ./pgloader.1 $(DEBUILD_ROOT)/usr/local/share/man/man1/ cp ./build/bin/pgloader $(DEBUILD_ROOT)/usr/local/bin/ pkgbuild --identifier org.tapoueh.pgloader \ --root $(DEBUILD_ROOT) \ --version $(VERSION) \ ./build/pgloader-$(VERSION).pkg latest: git archive --format=tar --prefix=pgloader-$(VERSION)/ v$(VERSION) \ | gzip -9 > $(LATEST) check: test ; .PHONY: test pgloader-standalone docs pgloader/bootstrap-debian.sh0000644000175000017500000000354513047375022016344 0ustar vagrantvagrant#!/usr/bin/env bash if [ ! -f /etc/apt/sources.list.old ] then sudo mv /etc/apt/sources.list /etc/apt/sources.list.old sudo cp /vagrant/conf/sources.list /etc/apt/sources.list fi sudo apt-get update sudo apt-get dist-upgrade -y cat /vagrant/conf/bashrc.sh >> ~/.bashrc # PostgreSQL sidsrc=/etc/apt/sources.list.d/sid-src.list echo "deb-src http://ftp.fr.debian.org/debian/ sid main" | sudo tee $sidsrc pgdg=/etc/apt/sources.list.d/pgdg.list pgdgkey=https://www.postgresql.org/media/keys/ACCC4CF8.asc echo "deb http://apt.postgresql.org/pub/repos/apt/ wheezy-pgdg main" | sudo tee $pgdg wget --quiet -O - ${pgdgkey} | sudo apt-key add - # MariaDB sudo apt-get install -y python-software-properties sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db sudo add-apt-repository 'deb http://mirrors.linsrv.net/mariadb/repo/10.0/debian wheezy main' sudo apt-get update sudo apt-get install -y postgresql-9.3 postgresql-contrib-9.3 \ postgresql-9.3-ip4r \ sbcl \ git patch unzip \ devscripts pandoc \ freetds-dev libsqlite3-dev \ gnupg gnupg-agent sudo DEBIAN_FRONTEND=noninteractive \ apt-get install -y --allow-unauthenticated mariadb-server # SBCL # # we used to need to backport SBCL, it's only the case now in wheezy, all # the later distributions are uptodate enough for our needs here. sudo apt-get -y install sbcl HBA=/etc/postgresql/9.3/main/pg_hba.conf echo "local all all trust" | sudo tee $HBA echo "host all all 127.0.0.1/32 trust" | sudo tee -a $HBA sudo pg_ctlcluster 9.3 main reload createuser -U postgres -SdR `whoami` make -C /vagrant pgloader make -C /vagrant test pgloader/.travis.yml0000644000175000017500000000141313117235342014652 0ustar vagrantvagrantlanguage: common-lisp sudo: required env: matrix: - LISP=ccl - LISP=ccl PGVERSION=9.6 - LISP=sbcl - LISP=sbcl PGVERSION=9.6 install: - ./.travis.sh lisp_install - ./.travis.sh pgdg_repositories - ./.travis.sh postgresql_install - sudo apt-get install -y unzip libsqlite3-dev gawk freetds-dev before_script: - PGUSER=postgres createuser -S -R -D -E -l pgloader - PGUSER=postgres createdb -E UTF8 -O pgloader pgloader - PGUSER=postgres psql -d pgloader -c "create extension ip4r;" - PGUSER=pgloader psql -d pgloader -c "create schema expected;" - PGUSER=pgloader psql -d pgloader -c "create schema err;" - make --version - make "CL=$LISP" script: - PGUSER=pgloader make "CL=$LISP" check notifications: email: - dim@tapoueh.org pgloader/TODO.md0000644000175000017500000000413613047375022013637 0ustar vagrantvagrant# TODO Some notes about what I intend to be working on next. You can sponsor any and all of those ideas if you actually need them today, and you can also sponsor new ideas not on the list yet. ## New Features ### Filtering Add commands to pick different target tables depending on the data found when reading from the source. ## Data Formats ### CSV - see about schema discovery (column names and types) ### JSON Propose to load JSON either in a "document" column, or to normalize it by applying some advanced filtering. Implement PostgreSQL JSON operators and functions in pgloader to help setup the normalisation steps: [PostgreSQL JSON Functions and Operators](http://www.postgresql.org/docs/9.3/interactive/functions-json.html). ### XML Add an XML reader to load XML documents into the database as a column value, and XSLT capabilities to normalize the XML contents into a proper relational model. ### Other databases Add support for full data and schema migrations for the following: - SQL Server - Sybase - Oracle ## User Interface, User Experience ### Improve parse error messages WIP, see https://github.com/nikodemus/esrap/issues/26 ### Graphical User Interface Most probably a web based tool, with guidance to setup the migration, maybe not even something very sophisticated, but making the simple cases way simpler. ## Database support ### MySQL Support - Convert SQL dialect for SQL views - Triggers and Stored Procedures ### SQLite support - implement CAST rules support ## Compat - add parsing for SQL*Loader file format ## Other ### error management - add input line number to log file? ### data output - PostgreSQL COPY Text format output for any supported input ### performances - some more parallelizing options - support for partitioning in pgloader itself ### UI - add a web controller with pretty monitoring - launch new jobs from the web controller ### crazy ideas - MySQL replication, reading from the binlog directly - plproxy (re-)sharding support - partitioning support - remote archiving support (with (delete returning *) insert into) pgloader/Dockerfile.ccl0000644000175000017500000000117713047375022015304 0ustar vagrantvagrantFROM debian:jessie MAINTAINER Dimitri Fontaine RUN apt-get update RUN apt-get install -y wget curl make git bzip2 time libzip-dev libssl1.0.0 openssl RUN apt-get install -y patch unzip libsqlite3-dev gawk freetds-dev subversion WORKDIR /usr/local/src RUN svn co http://svn.clozure.com/publicsvn/openmcl/release/1.11/linuxx86/ccl RUN cp /usr/local/src/ccl/scripts/ccl64 /usr/local/bin/ccl ADD ./ /opt/src/pgloader WORKDIR /opt/src/pgloader # build/ is in the .dockerignore file, but we actually need it now RUN mkdir -p build/bin RUN make CL=ccl DYNSIZE=256 RUN cp /opt/src/pgloader/build/bin/pgloader /usr/local/bin pgloader/pgloader.1.md0000644000175000017500000026612313126540457015040 0ustar vagrantvagrant# pgloader(1) -- PostgreSQL data loader ## SYNOPSIS pgloader [] []... pgloader [] SOURCE TARGET ## DESCRIPTION pgloader loads data from various sources into PostgreSQL. It can transform the data it reads on the fly and submit raw SQL before and after the loading. It uses the `COPY` PostgreSQL protocol to stream the data into the server, and manages errors by filling a pair of *reject.dat* and *reject.log* files. pgloader operates either using commands which are read from files: pgloader commands.load or by using arguments and options all provided on the command line: pgloader SOURCE TARGET ## ARGUMENTS The pgloader arguments can be as many load files as needed, or a couple of connection strings to a specific input file. ### SOURCE CONNECTION STRING The source connection string format is as follows: format:///absolute/path/to/file.ext format://./relative/path/to/file.ext Where format might be one of `csv`, `fixed`, `copy`, `dbf`, `db3` or `ixf`. db://user:pass@host:port/dbname Where db might be of `sqlite`, `mysql` or `mssql`. When using a file based source format, pgloader also support natively fetching the file from an http location and decompressing an archive if needed. In that case it's necessary to use the `--type` option to specify the expected format of the file. See the examples below. Also note that some file formats require describing some implementation details such as columns to be read and delimiters and quoting when loading from csv. For more complex loading scenarios, you will need to write a full fledge load command in the syntax described later in this document. ### TARGET CONNECTION STRING The target connection string format is described in details later in this document, see Section Connection String. ## OPTIONS ### INQUIRY OPTIONS Use these options when you want to know more about how to use `pgloader`, as those options will cause `pgloader` not to load any data. * `-h`, `--help`: Show command usage summary and exit. * `-V`, `--version`: Show pgloader version string and exit. * `-E`, `--list-encodings`: List known encodings in this version of pgloader. * `-U`, `--upgrade-config`: Parse given files in the command line as `pgloader.conf` files with the `INI` syntax that was in use in pgloader versions 2.x, and output the new command syntax for pgloader on standard output. ### GENERAL OPTIONS Those options are meant to tweak `pgloader` behavior when loading data. * `-v`, `--verbose`: Be verbose. * `-q`, `--quiet`: Be quiet. * `-d`, `--debug`: Show debug level information messages. * `-D`, `--root-dir`: Set the root working directory (default to "/tmp/pgloader"). * `-L`, `--logfile`: Set the pgloader log file (default to "/tmp/pgloader.log"). * `--log-min-messages`: Minimum level of verbosity needed for log message to make it to the logfile. One of critical, log, error, warning, notice, info or debug. * `--client-min-messages`: Minimum level of verbosity needed for log message to make it to the console. One of critical, log, error, warning, notice, info or debug. * `-S`, `--summary`: A filename where to copy the summary output. When relative, the filename is expanded into `*root-dir*`. The format of the filename defaults to being *human readable*. It is possible to have the output in machine friendly formats such as *CSV*, *COPY* (PostgreSQL's own COPY format) or *JSON* by specifying a filename with the extension resp. `.csv`, `.copy` or `.json`. * `-l `, `--load-lisp-file `: Specify a lisp to compile and load into the pgloader image before reading the commands, allowing to define extra transformation function. Those functions should be defined in the `pgloader.transforms` package. This option can appear more than once in the command line. * `--dry-run`: Allow testing a `.load` file without actually trying to load any data. It's useful to debug it until it's ok, in particular to fix connection strings. * `--on-error-stop` Alter pgloader behavior: rather than trying to be smart about error handling and continue loading good data, separating away the bad one, just stop as soon as PostgreSQL refuses anything sent to it. Useful to debug data processing, transformation function and specific type casting. * `--self-upgrade `: Specify a where to find pgloader sources so that one of the very first things it does is dynamically loading-in (and compiling to machine code) another version of itself, usually a newer one like a very recent git checkout. ### COMMAND LINE ONLY OPERATIONS Those options are meant to be used when using `pgloader` from the command line only, rather than using a command file and the rich command clauses and parser. In simple cases, it can be much easier to use the *SOURCE* and *TARGET* directly on the command line, then tweak the loading with those options: * `--with "option"`: Allows setting options from the command line. You can use that option as many times as you want. The option arguments must follow the *WITH* clause for the source type of the `SOURCE` specification, as described later in this document. * `--set "guc_name='value'"` Allows setting PostgreSQL configuration from the command line. Note that the option parsing is the same as when used from the *SET* command clause, in particular you must enclose the guc value with single-quotes. * `--field "..."` Allows setting a source field definition. Fields are accumulated in the order given on the command line. It's possible to either use a `--field` option per field in the source file, or to separate field definitions by a comma, as you would do in the *HAVING FIELDS* clause. * `--cast "..."` Allows setting a specific casting rule for loading the data. * `--type csv|fixed|db3|ixf|sqlite|mysql|mssql` Allows forcing the source type, in case when the *SOURCE* parsing isn't satisfying. * `--encoding ` Set the encoding of the source file to load data from. * `--before ` Parse given filename for SQL queries and run them against the target database before loading the data from the source. The queries are parsed by pgloader itself: they need to be terminated by a semi-colon (;) and the file may include `\i` or `\ir` commands to *include* another file. * `--after ` Parse given filename for SQL queries and run them against the target database after having loaded the data from the source. The queries are parsed in the same way as with the `--before` option, see above. ### MORE DEBUG INFORMATION To get the maximum amount of debug information, you can use both the `--verbose` and the `--debug` switches at the same time, which is equivalent to saying `--client-min-messages data`. Then the log messages will show the data being processed, in the cases where the code has explicit support for it. ## USAGE EXAMPLES Review the command line options and pgloader's version: pgloader --help pgloader --version ### Loading from a complex command Use the command file as the pgloader command argument, pgloader will parse that file and execute the commands found in it: pgloader --verbose ./test/csv-districts.load ### CSV Load data from a CSV file into a pre-existing table in your database: pgloader --type csv \ --field id --field field \ --with truncate \ --with "fields terminated by ','" \ ./test/data/matching-1.csv \ postgres:///pgloader?tablename=matching In that example the whole loading is driven from the command line, bypassing the need for writing a command in the pgloader command syntax entirely. As there's no command though, the extra inforamtion needed must be provided on the command line using the `--type` and `--field` and `--with` switches. For documentation about the available syntaxes for the `--field` and `--with` switches, please refer to the CSV section later in the man page. Note also that the PostgreSQL URI includes the target *tablename*. ### Reading from STDIN File based pgloader sources can be loaded from the standard input, as in the following example: pgloader --type csv \ --field "usps,geoid,aland,awater,aland_sqmi,awater_sqmi,intptlat,intptlong" \ --with "skip header = 1" \ --with "fields terminated by '\t'" \ - \ postgresql:///pgloader?districts_longlat \ < test/data/2013_Gaz_113CDs_national.txt The dash (`-`) character as a source is used to mean *standard input*, as usual in Unix command lines. It's possible to stream compressed content to pgloader with this technique, using the Unix pipe: gunzip -c source.gz | pgloader --type csv ... - pgsql:///target?foo ### Loading from CSV available through HTTP The same command as just above can also be run if the CSV file happens to be found on a remote HTTP location: pgloader --type csv \ --field "usps,geoid,aland,awater,aland_sqmi,awater_sqmi,intptlat,intptlong" \ --with "skip header = 1" \ --with "fields terminated by '\t'" \ http://pgsql.tapoueh.org/temp/2013_Gaz_113CDs_national.txt \ postgresql:///pgloader?districts_longlat Some more options have to be used in that case, as the file contains a one-line header (most commonly that's column names, could be a copyright notice). Also, in that case, we specify all the fields right into a single `--field` option argument. Again, the PostgreSQL target connection string must contain the *tablename* option and you have to ensure that the target table exists and may fit the data. Here's the SQL command used in that example in case you want to try it yourself: create table districts_longlat ( usps text, geoid text, aland bigint, awater bigint, aland_sqmi double precision, awater_sqmi double precision, intptlat double precision, intptlong double precision ); Also notice that the same command will work against an archived version of the same data, e.g. http://pgsql.tapoueh.org/temp/2013_Gaz_113CDs_national.txt.gz. Finally, it's important to note that pgloader first fetches the content from the HTTP URL it to a local file, then expand the archive when it's recognized to be one, and only then processes the locally expanded file. In some cases, either because pgloader has no direct support for your archive format or maybe because expanding the archive is not feasible in your environment, you might want to *stream* the content straight from its remote location into PostgreSQL. Here's how to do that, using the old battle tested Unix Pipes trick: curl http://pgsql.tapoueh.org/temp/2013_Gaz_113CDs_national.txt.gz \ | gunzip -c \ | pgloader --type csv \ --field "usps,geoid,aland,awater,aland_sqmi,awater_sqmi,intptlat,intptlong" --with "skip header = 1" \ --with "fields terminated by '\t'" \ - \ postgresql:///pgloader?districts_longlat Now the OS will take care of the streaming and buffering between the network and the commands and pgloader will take care of streaming the data down to PostgreSQL. ### Migrating from SQLite The following command will open the SQLite database, discover its tables definitions including indexes and foreign keys, migrate those definitions while *casting* the data type specifications to their PostgreSQL equivalent and then migrate the data over: createdb newdb pgloader ./test/sqlite/sqlite.db postgresql:///newdb ### Migrating from MySQL Just create a database where to host the MySQL data and definitions and have pgloader do the migration for you in a single command line: createdb pagila pgloader mysql://user@localhost/sakila postgresql:///pagila ### Fetching an archived DBF file from a HTTP remote location It's possible for pgloader to download a file from HTTP, unarchive it, and only then open it to discover the schema then load the data: createdb foo pgloader --type dbf http://www.insee.fr/fr/methodes/nomenclatures/cog/telechargement/2013/dbf/historiq2013.zip postgresql:///foo Here it's not possible for pgloader to guess the kind of data source it's being given, so it's necessary to use the `--type` command line switch. ## BATCHES AND RETRY BEHAVIOUR To load data to PostgreSQL, pgloader uses the `COPY` streaming protocol. While this is the faster way to load data, `COPY` has an important drawback: as soon as PostgreSQL emits an error with any bit of data sent to it, whatever the problem is, the whole data set is rejected by PostgreSQL. To work around that, pgloader cuts the data into *batches* of 25000 rows each, so that when a problem occurs it's only impacting that many rows of data. Each batch is kept in memory while the `COPY` streaming happens, in order to be able to handle errors should some happen. When PostgreSQL rejects the whole batch, pgloader logs the error message then isolates the bad row(s) from the accepted ones by retrying the batched rows in smaller batches. To do that, pgloader parses the *CONTEXT* error message from the failed COPY, as the message contains the line number where the error was found in the batch, as in the following example: CONTEXT: COPY errors, line 3, column b: "2006-13-11" Using that information, pgloader will reload all rows in the batch before the erroneous one, log the erroneous one as rejected, then try loading the remaining of the batch in a single attempt, which may or may not contain other erroneous data. At the end of a load containing rejected rows, you will find two files in the *root-dir* location, under a directory named the same as the target database of your setup. The filenames are the target table, and their extensions are `.dat` for the rejected data and `.log` for the file containing the full PostgreSQL client side logs about the rejected data. The `.dat` file is formatted in PostgreSQL the text COPY format as documented in [http://www.postgresql.org/docs/9.2/static/sql-copy.html#AEN66609](). ## A NOTE ABOUT PERFORMANCE pgloader has been developed with performance in mind, to be able to cope with ever growing needs in loading large amounts of data into PostgreSQL. The basic architecture it uses is the old Unix pipe model, where a thread is responsible for loading the data (reading a CSV file, querying MySQL, etc) and fills pre-processed data into a queue. Another threads feeds from the queue, apply some more *transformations* to the input data and stream the end result to PostgreSQL using the COPY protocol. When given a file that the PostgreSQL `COPY` command knows how to parse, and if the file contains no erroneous data, then pgloader will never be as fast as just using the PostgreSQL `COPY` command. Note that while the `COPY` command is restricted to read either from its standard input or from a local file on the server's file system, the command line tool `psql` implements a `\copy` command that knows how to stream a file local to the client over the network and into the PostgreSQL server, using the same protocol as pgloader uses. ## A NOTE ABOUT PARALLELISM pgloader uses several concurrent tasks to process the data being loaded: - a reader task reads the data in and pushes it to a queue, - at last one write task feeds from the queue and formats the raw into the PostgreSQL COPY format in batches (so that it's possible to then retry a failed batch without reading the data from source again), and then sends the data to PostgreSQL using the COPY protocol. The parameter *workers* allows to control how many worker threads are allowed to be active at any time (that's the parallelism level); and the parameter *concurrency* allows to control how many tasks are started to handle the data (they may not all run at the same time, depending on the *workers* setting). We allow *workers* simultaneous workers to be active at the same time in the context of a single table. A single unit of work consist of several kinds of workers: - a reader getting raw data from the source, - N writers preparing and sending the data down to PostgreSQL. The N here is setup to the *concurrency* parameter: with a *CONCURRENCY* of 2, we start (+ 1 2) = 3 concurrent tasks, with a *concurrency* of 4 we start (+ 1 4) = 9 concurrent tasks, of which only *workers* may be active simultaneously. The defaults are `workers = 4, concurrency = 1` when loading from a database source, and `workers = 8, concurrency = 2` when loading from something else (currently, a file). Those defaults are arbitrary and waiting for feedback from users, so please consider providing feedback if you play with the settings. As the `CREATE INDEX` threads started by pgloader are only waiting until PostgreSQL is done with the real work, those threads are *NOT* counted into the concurrency levels as detailed here. By default, as many `CREATE INDEX` threads as the maximum number of indexes per table are found in your source schema. It is possible to set the `max parallel create index` *WITH* option to another number in case there's just too many of them to create. ## SOURCE FORMATS pgloader supports the following input formats: - csv, which includes also tsv and other common variants where you can change the *separator* and the *quoting* rules and how to *escape* the *quotes* themselves; - fixed columns file, where pgloader is flexible enough to accomodate with source files missing columns (*ragged fixed length column files* do exist); - PostgreSLQ COPY formatted files, following the COPY TEXT documentation of PostgreSQL, such as the reject files prepared by pgloader; - dbase files known as db3 or dbf file; - ixf formated files, ixf being a binary storage format from IBM; - sqlite databases with fully automated discovery of the schema and advanced cast rules; - mysql databases with fully automated discovery of the schema and advanced cast rules; - MS SQL databases with fully automated discovery of the schema and advanced cast rules. ## PGLOADER COMMANDS SYNTAX pgloader implements a Domain Specific Language allowing to setup complex data loading scripts handling computed columns and on-the-fly sanitization of the input data. For more complex data loading scenarios, you will be required to learn that DSL's syntax. It's meant to look familiar to DBA by being inspired by SQL where it makes sense, which is not that much after all. The pgloader commands follow the same global grammar rules. Each of them might support only a subset of the general options and provide specific options. LOAD FROM [ HAVING FIELDS ] INTO [ TARGET COLUMNS ] [ WITH ] [ SET ] [ BEFORE LOAD [ DO | EXECUTE ] ... ] [ AFTER LOAD [ DO | EXECUTE ] ... ] ; The main clauses are the `LOAD`, `FROM`, `INTO` and `WITH` clauses that each command implements. Some command then implement the `SET` command, or some specific clauses such as the `CAST` clause. ## COMMON CLAUSES Some clauses are common to all commands: - *FROM* The *FROM* clause specifies where to read the data from, and each command introduces its own variant of sources. For instance, the *CSV* source supports `inline`, `stdin`, a filename, a quoted filename, and a *FILENAME MATCHING* clause (see above); whereas the *MySQL* source only supports a MySQL database URI specification. In all cases, the *FROM* clause is able to read its value from an environment variable when using the form `GETENV 'varname'`. - *INTO* The PostgreSQL connection URI must contains the name of the target table where to load the data into. That table must have already been created in PostgreSQL, and the name might be schema qualified. The *INTO* target database connection URI can be parsed from the value of an environment variable when using the form `GETENV 'varname'`. Then *INTO* option also supports an optional comma separated list of target columns, which are either the name of an input *field* or the white space separated list of the target column name, its PostgreSQL data type and a *USING* expression. The *USING* expression can be any valid Common Lisp form and will be read with the current package set to `pgloader.transforms`, so that you can use functions defined in that package, such as functions loaded dynamically with the `--load` command line parameter. Each *USING* expression is compiled at runtime to native code. This feature allows pgloader to load any number of fields in a CSV file into a possibly different number of columns in the database, using custom code for that projection. - *WITH* Set of options to apply to the command, using a global syntax of either: - *key = value* - *use option* - *do not use option* See each specific command for details. All data sources specific commands support the following options: - *on error stop* - *batch rows = R* - *batch size = ... MB* - *prefetch rows = ...* See the section BATCH BEHAVIOUR OPTIONS for more details. In addition, the following settings are available: - *workers = W* - *concurrency = C* - *max parallel create index = I* See section A NOTE ABOUT PARALLELISM for more details. - *SET* This clause allows to specify session parameters to be set for all the sessions opened by pgloader. It expects a list of parameter name, the equal sign, then the single-quoted value as a comma separated list. The names and values of the parameters are not validated by pgloader, they are given as-is to PostgreSQL. - *BEFORE LOAD DO* You can run SQL queries against the database before loading the data from the `CSV` file. Most common SQL queries are `CREATE TABLE IF NOT EXISTS` so that the data can be loaded. Each command must be *dollar-quoted*: it must begin and end with a double dollar sign, `$$`. Dollar-quoted queries are then comma separated. No extra punctuation is expected after the last SQL query. - *BEFORE LOAD EXECUTE* Same behaviour as in the *BEFORE LOAD DO* clause. Allows you to read the SQL queries from a SQL file. Implements support for PostgreSQL dollar-quoting and the `\i` and `\ir` include facilities as in `psql` batch mode (where they are the same thing). - *AFTER LOAD DO* Same format as *BEFORE LOAD DO*, the dollar-quoted queries found in that section are executed once the load is done. That's the right time to create indexes and constraints, or re-enable triggers. - *AFTER LOAD EXECUTE* Same behaviour as in the *AFTER LOAD DO* clause. Allows you to read the SQL queries from a SQL file. Implements support for PostgreSQL dollar-quoting and the `\i` and `\ir` include facilities as in `psql` batch mode (where they are the same thing). ### Connection String The `` parameter is expected to be given as a *Connection URI* as documented in the PostgreSQL documentation at http://www.postgresql.org/docs/9.3/static/libpq-connect.html#LIBPQ-CONNSTRING. postgresql://[user[:password]@][netloc][:port][/dbname][?option=value&...] Where: - *user* Can contain any character, including colon (`:`) which must then be doubled (`::`) and at-sign (`@`) which must then be doubled (`@@`). When omitted, the *user* name defaults to the value of the `PGUSER` environment variable, and if it is unset, the value of the `USER` environment variable. - *password* Can contain any character, including the at sign (`@`) which must then be doubled (`@@`). To leave the password empty, when the *user* name ends with at at sign, you then have to use the syntax user:@. When omitted, the *password* defaults to the value of the `PGPASSWORD` environment variable if it is set, otherwise the password is left unset. - *netloc* Can be either a hostname in dotted notation, or an ipv4, or an Unix domain socket path. Empty is the default network location, under a system providing *unix domain socket* that method is preferred, otherwise the *netloc* default to `localhost`. It's possible to force the *unix domain socket* path by using the syntax `unix:/path/to/where/the/socket/file/is`, so to force a non default socket path and a non default port, you would have: postgresql://unix:/tmp:54321/dbname The *netloc* defaults to the value of the `PGHOST` environment variable, and if it is unset, to either the default `unix` socket path when running on a Unix system, and `localhost` otherwise. - *dbname* Should be a proper identifier (letter followed by a mix of letters, digits and the punctuation signs comma (`,`), dash (`-`) and underscore (`_`). When omitted, the *dbname* defaults to the value of the environment variable `PGDATABASE`, and if that is unset, to the *user* value as determined above. - *options* The optional parameters must be supplied with the form `name=value`, and you may use several parameters by separating them away using an ampersand (`&`) character. Only some options are supported here, *tablename* (which might be qualified with a schema name) *sslmode*, *host*, *port*, *dbname*, *user* and *password*. The *sslmode* parameter values can be one of `disable`, `allow`, `prefer` or `require`. For backward compatibility reasons, it's possible to specify the *tablename* option directly, without spelling out the `tablename=` parts. The options override the main URI components when both are given, and using the percent-encoded option parameters allow using passwords starting with a colon and bypassing other URI components parsing limitations. ### Regular Expressions Several clauses listed in the following accept *regular expressions* with the following input rules: - A regular expression begins with a tilde sign (`~`), - is then followed with an opening sign, - then any character is allowed and considered part of the regular expression, except for the closing sign, - then a closing sign is expected. The opening and closing sign are allowed by pair, here's the complete list of allowed delimiters: ~// ~[] ~{} ~() ~<> ~"" ~'' ~|| ~## Pick the set of delimiters that don't collide with the *regular expression* you're trying to input. If your expression is such that none of the solutions allow you to enter it, the places where such expressions are allowed should allow for a list of expressions. ### Comments Any command may contain comments, following those input rules: - the `--` delimiter begins a comment that ends with the end of the current line, - the delimiters `/*` and `*/` respectively start and end a comment, which can be found in the middle of a command or span several lines. Any place where you could enter a *whitespace* will accept a comment too. ### Batch behaviour options All pgloader commands have support for a *WITH* clause that allows for specifying options. Some options are generic and accepted by all commands, such as the *batch behaviour options*, and some options are specific to a data source kind, such as the CSV *skip header* option. The global batch behaviour options are: - *batch rows* Takes a numeric value as argument, used as the maximum number of rows allowed in a batch. The default is `25 000` and can be changed to try having better performance characteristics or to control pgloader memory usage; - *batch size* Takes a memory unit as argument, such as *20 MB*, its default value. Accepted multipliers are *kB*, *MB*, *GB*, *TB* and *PB*. The case is important so as not to be confused about bits versus bytes, we're only talking bytes here. - *prefetch rows* Takes a numeric value as argument, defaults to `100000`. That's the number of rows that pgloader is allowed to read in memory in each reader thread. See the *workers* setting for how many reader threads are allowed to run at the same time. Other options are specific to each input source, please refer to specific parts of the documentation for their listing and covering. A batch is then closed as soon as either the *batch rows* or the *batch size* threshold is crossed, whichever comes first. In cases when a batch has to be closed because of the *batch size* setting, a *debug* level log message is printed with how many rows did fit in the *oversized* batch. ## LOAD CSV This command instructs pgloader to load data from a `CSV` file. Here's an example: LOAD CSV FROM 'GeoLiteCity-Blocks.csv' WITH ENCODING iso-646-us HAVING FIELDS ( startIpNum, endIpNum, locId ) INTO postgresql://user@localhost:54393/dbname?geolite.blocks TARGET COLUMNS ( iprange ip4r using (ip-range startIpNum endIpNum), locId ) WITH truncate, skip header = 2, fields optionally enclosed by '"', fields escaped by backslash-quote, fields terminated by '\t' SET work_mem to '32 MB', maintenance_work_mem to '64 MB'; The `csv` format command accepts the following clauses and options: - *FROM* Filename where to load the data from. Accepts an *ENCODING* option. Use the `--list-encodings` option to know which encoding names are supported. The filename may be enclosed by single quotes, and could be one of the following special values: - *inline* The data is found after the end of the parsed commands. Any number of empty lines between the end of the commands and the beginning of the data is accepted. - *stdin* Reads the data from the standard input stream. - *FILENAMES MATCHING* The whole *matching* clause must follow the following rule: [ ALL FILENAMES | [ FIRST ] FILENAME ] MATCHING regexp [ IN DIRECTORY '...' ] The *matching* clause applies given *regular expression* (see above for exact syntax, several options can be used here) to filenames. It's then possible to load data from only the first match of all of them. The optional *IN DIRECTORY* clause allows specifying which directory to walk for finding the data files, and can be either relative to where the command file is read from, or absolute. The given directory must exists. The *FROM* option also supports an optional comma separated list of *field* names describing what is expected in the `CSV` data file, optionally introduced by the clause `HAVING FIELDS`. Each field name can be either only one name or a name following with specific reader options for that field, enclosed in square brackets and comma-separated. Supported per-field reader options are: - *terminated by* See the description of *field terminated by* below. The processing of this option is not currently implemented. - *date format* When the field is expected of the date type, then this option allows to specify the date format used in the file. Date format string are template strings modeled against the PostgreSQL `to_char` template strings support, limited to the following patterns: - YYYY, YYY, YY for the year part - MM for the numeric month part - DD for the numeric day part - HH, HH12, HH24 for the hour part - am, AM, a.m., A.M. - pm, PM, p.m., P.M. - MI for the minutes part - SS for the seconds part - MS for the milliseconds part (4 digits) - US for the microseconds part (6 digits) - unparsed punctuation signs: - . * # @ T / \ and space Here's an example of a *date format* specification: column-name [date format 'YYYY-MM-DD HH24-MI-SS.US'] - *null if* This option takes an argument which is either the keyword *blanks* or a double-quoted string. When *blanks* is used and the field value that is read contains only space characters, then it's automatically converted to an SQL `NULL` value. When a double-quoted string is used and that string is read as the field value, then the field value is automatically converted to an SQL `NULL` value. - *trim both whitespace*, *trim left whitespace*, *trim right whitespace* This option allows to trim whitespaces in the read data, either from both sides of the data, or only the whitespace characters found on the left of the streaing, or only those on the right of the string. - *WITH* When loading from a `CSV` file, the following options are supported: - *truncate* When this option is listed, pgloader issues a `TRUNCATE` command against the PostgreSQL target table before reading the data file. - *drop indexes* When this option is listed, pgloader issues `DROP INDEX` commands against all the indexes defined on the target table before copying the data, then `CREATE INDEX` commands once the `COPY` is done. In order to get the best performance possible, all the indexes are created in parallel and when done the primary keys are built again from the unique indexes just created. This two step process allows creating the primary key index in parallel with the other indexes, as only the `ALTER TABLE` command needs an *access exclusive lock* on the target table. - *disable triggers* When this option is listed, pgloader issues an `ALTER TABLE ... DISABLE TRIGGER ALL` command against the PostgreSQL target table before copying the data, then the command `ALTER TABLE ... ENABLE TRIGGER ALL` once the `COPY` is done. This option allows loading data into a pre-existing table ignoring the *foreign key constraints* and user defined triggers and may result in invalid *foreign key constraints* once the data is loaded. Use with care. - *skip header* Takes a numeric value as argument. Instruct pgloader to skip that many lines at the beginning of the input file. - *csv header* Use the first line read after *skip header* as the list of csv field names to be found in the CSV file, using the same CSV parameters as for the CSV data. - *trim unquoted blanks* When reading unquoted values in the `CSV` file, remove the blanks found in between the separator and the value. That behaviour is the default. - *keep unquoted blanks* When reading unquoted values in the `CSV` file, keep blanks found in between the separator and the value. - *fields optionally enclosed by* Takes a single character as argument, which must be found inside single quotes, and might be given as the printable character itself, the special value \t to denote a tabulation character, or `0x` then an hexadecimal value read as the ASCII code for the character. This character is used as the quoting character in the `CSV` file, and defaults to double-quote. - *fields not enclosed* By default, pgloader will use the double-quote character as the enclosing character. If you have a CSV file where fields are not enclosed and are using double-quote as an expected ordinary character, then use the option *fields not enclosed* for the CSV parser to accept those values. - *fields escaped by* Takes either the special value *backslash-quote* or *double-quote*, or any value supported by the *fields terminated by* option (see below). This value is used to recognize escaped field separators when they are to be found within the data fields themselves. Defaults to *double-quote*. - *csv escape mode* Takes either the special value *quote* (the default) or *following* and allows the CSV parser to parse either only escaped field separator or any character (including CSV data) when using the *following* value. - *fields terminated by* Takes a single character as argument, which must be found inside single quotes, and might be given as the printable character itself, the special value \t to denote a tabulation character, or `0x` then an hexadecimal value read as the ASCII code for the character. This character is used as the *field separator* when reading the `CSV` data. - *lines terminated by* Takes a single character as argument, which must be found inside single quotes, and might be given as the printable character itself, the special value \t to denote a tabulation character, or `0x` then an hexadecimal value read as the ASCII code for the character. This character is used to recognize *end-of-line* condition when reading the `CSV` data. ## LOAD FIXED COLS This command instructs pgloader to load data from a text file containing columns arranged in a *fixed size* manner. Here's an example: LOAD FIXED FROM inline ( a from 0 for 10, b from 10 for 8, c from 18 for 8, d from 26 for 17 [null if blanks, trim right whitespace] ) INTO postgresql:///pgloader?fixed ( a, b, c time using (time-with-no-separator c), d ) WITH truncate SET work_mem to '14MB', standard_conforming_strings to 'on' BEFORE LOAD DO $$ drop table if exists fixed; $$, $$ create table fixed ( a integer, b date, c time, d text ); $$; 01234567892008052011431250firstline 01234562008052115182300left blank-padded 12345678902008052208231560another line 2345609872014092914371500 2345678902014092914371520 The `fixed` format command accepts the following clauses and options: - *FROM* Filename where to load the data from. Accepts an *ENCODING* option. Use the `--list-encodings` option to know which encoding names are supported. The filename may be enclosed by single quotes, and could be one of the following special values: - *inline* The data is found after the end of the parsed commands. Any number of empty lines between the end of the commands and the beginning of the data is accepted. - *stdin* Reads the data from the standard input stream. - *FILENAMES MATCHING* The whole *matching* clause must follow the following rule: [ ALL FILENAMES | [ FIRST ] FILENAME ] MATCHING regexp [ IN DIRECTORY '...' ] The *matching* clause applies given *regular expression* (see above for exact syntax, several options can be used here) to filenames. It's then possible to load data from only the first match of all of them. The optional *IN DIRECTORY* clause allows specifying which directory to walk for finding the data files, and can be either relative to where the command file is read from, or absolute. The given directory must exists. The *FROM* option also supports an optional comma separated list of *field* names describing what is expected in the `FIXED` data file. Each field name is composed of the field name followed with specific reader options for that field. Supported per-field reader options are the following, where only *start* and *length* are required. - *start* Position in the line where to start reading that field's value. Can be entered with decimal digits or `0x` then hexadecimal digits. - *length* How many bytes to read from the *start* position to read that field's value. Same format as *start*. Those optional parameters must be enclosed in square brackets and comma-separated: - *terminated by* See the description of *field terminated by* below. The processing of this option is not currently implemented. - *date format* When the field is expected of the date type, then this option allows to specify the date format used in the file. Date format string are template strings modeled against the PostgreSQL `to_char` template strings support, limited to the following patterns: - YYYY, YYY, YY for the year part - MM for the numeric month part - DD for the numeric day part - HH, HH12, HH24 for the hour part - am, AM, a.m., A.M. - pm, PM, p.m., P.M. - MI for the minutes part - SS for the seconds part - MS for the milliseconds part (4 digits) - US for the microseconds part (6 digits) - unparsed punctuation signs: - . * # @ T / \ and space Here's an example of a *date format* specification: column-name [date format 'YYYY-MM-DD HH24-MI-SS.US'] - *null if* This option takes an argument which is either the keyword *blanks* or a double-quoted string. When *blanks* is used and the field value that is read contains only space characters, then it's automatically converted to an SQL `NULL` value. When a double-quoted string is used and that string is read as the field value, then the field value is automatically converted to an SQL `NULL` value. - *trim both whitespace*, *trim left whitespace*, *trim right whitespace* This option allows to trim whitespaces in the read data, either from both sides of the data, or only the whitespace characters found on the left of the streaing, or only those on the right of the string. - *WITH* When loading from a `FIXED` file, the following options are supported: - *truncate* When this option is listed, pgloader issues a `TRUNCATE` command against the PostgreSQL target table before reading the data file. - *disable triggers* When this option is listed, pgloader issues an `ALTER TABLE ... DISABLE TRIGGER ALL` command against the PostgreSQL target table before copying the data, then the command `ALTER TABLE ... ENABLE TRIGGER ALL` once the `COPY` is done. This option allows loading data into a pre-existing table ignoring the *foreign key constraints* and user defined triggers and may result in invalid *foreign key constraints* once the data is loaded. Use with care. - *skip header* Takes a numeric value as argument. Instruct pgloader to skip that many lines at the beginning of the input file. ## LOAD COPY FORMATTED FILES This commands instructs pgloader to load from a file containing COPY TEXT data as described in the PostgreSQL documentation. Here's an example: LOAD COPY FROM copy://./data/track.copy ( trackid, track, album, media, genre, composer, milliseconds, bytes, unitprice ) INTO postgresql:///pgloader?track_full WITH truncate SET work_mem to '14MB', standard_conforming_strings to 'on' BEFORE LOAD DO $$ drop table if exists track_full; $$, $$ create table track_full ( trackid bigserial, track text, album text, media text, genre text, composer text, milliseconds bigint, bytes bigint, unitprice numeric ); $$; The `COPY` format command accepts the following clauses and options: - *FROM* Filename where to load the data from. This support local files, HTTP URLs and zip files containing a single dbf file of the same name. Fetch such a zip file from an HTTP address is of course supported. - *inline* The data is found after the end of the parsed commands. Any number of empty lines between the end of the commands and the beginning of the data is accepted. - *stdin* Reads the data from the standard input stream. - *FILENAMES MATCHING* The whole *matching* clause must follow the following rule: [ ALL FILENAMES | [ FIRST ] FILENAME ] MATCHING regexp [ IN DIRECTORY '...' ] The *matching* clause applies given *regular expression* (see above for exact syntax, several options can be used here) to filenames. It's then possible to load data from only the first match of all of them. The optional *IN DIRECTORY* clause allows specifying which directory to walk for finding the data files, and can be either relative to where the command file is read from, or absolute. The given directory must exists. - *WITH* When loading from a `COPY` file, the following options are supported: - *delimiter* Takes a single character as argument, which must be found inside single quotes, and might be given as the printable character itself, the special value \t to denote a tabulation character, or `0x` then an hexadecimal value read as the ASCII code for the character. This character is used as the *delimiter* when reading the data, in a similar way to the PostgreSQL `COPY` option. - *null* Takes a quoted string as an argument (quotes can be either double quotes or single quotes) and uses that string as the `NULL` representation in the data. This is similar to the *null* `COPY` option in PostgreSQL. - *truncate* When this option is listed, pgloader issues a `TRUNCATE` command against the PostgreSQL target table before reading the data file. - *disable triggers* When this option is listed, pgloader issues an `ALTER TABLE ... DISABLE TRIGGER ALL` command against the PostgreSQL target table before copying the data, then the command `ALTER TABLE ... ENABLE TRIGGER ALL` once the `COPY` is done. This option allows loading data into a pre-existing table ignoring the *foreign key constraints* and user defined triggers and may result in invalid *foreign key constraints* once the data is loaded. Use with care. - *skip header* Takes a numeric value as argument. Instruct pgloader to skip that many lines at the beginning of the input file. ## LOAD DBF This command instructs pgloader to load data from a `DBF` file. Here's an example: LOAD DBF FROM http://www.insee.fr/fr/methodes/nomenclatures/cog/telechargement/2013/dbf/reg2013.dbf INTO postgresql://user@localhost/dbname WITH truncate, create table; The `dbf` format command accepts the following clauses and options: - *FROM* Filename where to load the data from. This support local files, HTTP URLs and zip files containing a single dbf file of the same name. Fetch such a zip file from an HTTP address is of course supported. - *WITH* When loading from a `DBF` file, the following options are supported: - *truncate* When this option is listed, pgloader issues a `TRUNCATE` command against the PostgreSQL target table before reading the data file. - *disable triggers* When this option is listed, pgloader issues an `ALTER TABLE ... DISABLE TRIGGER ALL` command against the PostgreSQL target table before copying the data, then the command `ALTER TABLE ... ENABLE TRIGGER ALL` once the `COPY` is done. This option allows loading data into a pre-existing table ignoring the *foreign key constraints* and user defined triggers and may result in invalid *foreign key constraints* once the data is loaded. Use with care. - *create table* When this option is listed, pgloader creates the table using the meta data found in the `DBF` file, which must contain a list of fields with their data type. A standard data type conversion from DBF to PostgreSQL is done. - *table name* This options expects as its value the possibly qualified name of the table to create. ## LOAD IXF This command instructs pgloader to load data from an IBM `IXF` file. Here's an example: LOAD IXF FROM data/nsitra.test1.ixf INTO postgresql:///pgloader?nsitra.test1 WITH truncate, create table, timezone UTC BEFORE LOAD DO $$ create schema if not exists nsitra; $$, $$ drop table if exists nsitra.test1; $$; The `ixf` format command accepts the following clauses and options: - *FROM* Filename where to load the data from. This support local files, HTTP URLs and zip files containing a single ixf file of the same name. Fetch such a zip file from an HTTP address is of course supported. - *WITH* When loading from a `IXF` file, the following options are supported: - *truncate* When this option is listed, pgloader issues a `TRUNCATE` command against the PostgreSQL target table before reading the data file. - *disable triggers* When this option is listed, pgloader issues an `ALTER TABLE ... DISABLE TRIGGER ALL` command against the PostgreSQL target table before copying the data, then the command `ALTER TABLE ... ENABLE TRIGGER ALL` once the `COPY` is done. This option allows loading data into a pre-existing table ignoring the *foreign key constraints* and user defined triggers and may result in invalid *foreign key constraints* once the data is loaded. Use with care. - *create table* When this option is listed, pgloader creates the table using the meta data found in the `DBF` file, which must contain a list of fields with their data type. A standard data type conversion from DBF to PostgreSQL is done. - *table name* This options expects as its value the possibly qualified name of the table to create. - *timezone* This options allows to specify which timezone is used when parsing timestamps from an IXF file, and defaults to *UTC*. Expected values are either `UTC`, `GMT` or a single quoted location name such as `'Universal'` or `'Europe/Paris'`. ## LOAD ARCHIVE This command instructs pgloader to load data from one or more files contained in an archive. Currently the only supported archive format is *ZIP*, and the archive might be downloaded from an *HTTP* URL. Here's an example: LOAD ARCHIVE FROM /Users/dim/Downloads/GeoLiteCity-latest.zip INTO postgresql:///ip4r BEFORE LOAD DO $$ create extension if not exists ip4r; $$, $$ create schema if not exists geolite; $$, EXECUTE 'geolite.sql' LOAD CSV FROM FILENAME MATCHING ~/GeoLiteCity-Location.csv/ WITH ENCODING iso-8859-1 ( locId, country, region null if blanks, city null if blanks, postalCode null if blanks, latitude, longitude, metroCode null if blanks, areaCode null if blanks ) INTO postgresql:///ip4r?geolite.location ( locid,country,region,city,postalCode, location point using (format nil "(~a,~a)" longitude latitude), metroCode,areaCode ) WITH skip header = 2, fields optionally enclosed by '"', fields escaped by double-quote, fields terminated by ',' AND LOAD CSV FROM FILENAME MATCHING ~/GeoLiteCity-Blocks.csv/ WITH ENCODING iso-8859-1 ( startIpNum, endIpNum, locId ) INTO postgresql:///ip4r?geolite.blocks ( iprange ip4r using (ip-range startIpNum endIpNum), locId ) WITH skip header = 2, fields optionally enclosed by '"', fields escaped by double-quote, fields terminated by ',' FINALLY DO $$ create index blocks_ip4r_idx on geolite.blocks using gist(iprange); $$; The `archive` command accepts the following clauses and options: - *FROM* Filename or HTTP URI where to load the data from. When given an HTTP URL the linked file will get downloaded locally before processing. If the file is a `zip` file, the command line utility `unzip` is used to expand the archive into files in `$TMPDIR`, or `/tmp` if `$TMPDIR` is unset or set to a non-existing directory. Then the following commands are used from the top level directory where the archive has been expanded. - command [ *AND* command ... ] A series of commands against the contents of the archive, at the moment only `CSV`,`'FIXED` and `DBF` commands are supported. Note that commands are supporting the clause *FROM FILENAME MATCHING* which allows the pgloader command not to depend on the exact names of the archive directories. The same clause can also be applied to several files with using the spelling *FROM ALL FILENAMES MATCHING* and a regular expression. The whole *matching* clause must follow the following rule: FROM [ ALL FILENAMES | [ FIRST ] FILENAME ] MATCHING - *FINALLY DO* SQL Queries to run once the data is loaded, such as `CREATE INDEX`. ## LOAD MYSQL DATABASE This command instructs pgloader to load data from a database connection. The only supported database source is currently *MySQL*, and pgloader supports dynamically converting the schema of the source database and the indexes building. A default set of casting rules are provided and might be overloaded and appended to by the command. Here's an example using as many options as possible, some of them even being defaults. Chances are you don't need that complex a setup, don't copy and paste it, use it only as a reference! LOAD DATABASE FROM mysql://root@localhost/sakila INTO postgresql://localhost:54393/sakila WITH include drop, create tables, create indexes, reset sequences, workers = 8, concurrency = 1, multiple readers per thread, rows per range = 50000 SET PostgreSQL PARAMETERS maintenance_work_mem to '128MB', work_mem to '12MB', search_path to 'sakila, public, "$user"' SET MySQL PARAMETERS net_read_timeout = '120', net_write_timeout = '120' CAST type bigint when (= precision 20) to bigserial drop typemod, type date drop not null drop default using zero-dates-to-null, -- type tinyint to boolean using tinyint-to-boolean, type year to integer MATERIALIZE VIEWS film_list, staff_list -- INCLUDING ONLY TABLE NAMES MATCHING ~/film/, 'actor' -- EXCLUDING TABLE NAMES MATCHING ~ -- DECODING TABLE NAMES MATCHING ~/messed/, ~/encoding/ AS utf8 -- ALTER TABLE NAMES MATCHING 'film' RENAME TO 'films' -- ALTER TABLE NAMES MATCHING ~/_list$/ SET SCHEMA 'mv' ALTER TABLE NAMES MATCHING ~/_list$/, 'sales_by_store', ~/sales_by/ SET SCHEMA 'mv' ALTER TABLE NAMES MATCHING 'film' RENAME TO 'films' ALTER TABLE NAMES MATCHING ~/./ SET (fillfactor='40') ALTER SCHEMA 'sakila' RENAME TO 'pagila' BEFORE LOAD DO $$ create schema if not exists pagila; $$, $$ create schema if not exists mv; $$, $$ alter database sakila set search_path to pagila, mv, public; $$; The `database` command accepts the following clauses and options: - *FROM* Must be a connection URL pointing to a MySQL database. If the connection URI contains a table name, then only this table is migrated from MySQL to PostgreSQL. See the `SOURCE CONNECTION STRING` section above for details on how to write the connection string. Environment variables described in can be used as default values too. If the user is not provided, then it defaults to `USER` environment variable value. The password can be provided with the environment variable `MYSQL_PWD`. The host can be provided with the environment variable `MYSQL_HOST` and otherwise defaults to `localhost`. The port can be provided with the environment variable `MYSQL_TCP_PORT` and otherwise defaults to `3306`. - *WITH* When loading from a `MySQL` database, the following options are supported, and the default *WITH* clause is: *no truncate*, *create schema*, *create tables*, *include drop*, *create indexes*, *reset sequences*, *foreign keys*, *downcase identifiers*, *uniquify index names*. *WITH* options: - *include drop* When this option is listed, pgloader drops all the tables in the target PostgreSQL database whose names appear in the MySQL database. This option allows for using the same command several times in a row until you figure out all the options, starting automatically from a clean environment. Please note that `CASCADE` is used to ensure that tables are dropped even if there are foreign keys pointing to them. This is precisely what `include drop` is intended to do: drop all target tables and recreate them. Great care needs to be taken when using `include drop`, as it will cascade to *all* objects referencing the target tables, possibly including other tables that are not being loaded from the source DB. - *include no drop* When this option is listed, pgloader will not include any `DROP` statement when loading the data. - *truncate* When this option is listed, pgloader issue the `TRUNCATE` command against each PostgreSQL table just before loading data into it. - *no truncate* When this option is listed, pgloader issues no `TRUNCATE` command. - *disable triggers* When this option is listed, pgloader issues an `ALTER TABLE ... DISABLE TRIGGER ALL` command against the PostgreSQL target table before copying the data, then the command `ALTER TABLE ... ENABLE TRIGGER ALL` once the `COPY` is done. This option allows loading data into a pre-existing table ignoring the *foreign key constraints* and user defined triggers and may result in invalid *foreign key constraints* once the data is loaded. Use with care. - *create tables* When this option is listed, pgloader creates the table using the meta data found in the `MySQL` file, which must contain a list of fields with their data type. A standard data type conversion from DBF to PostgreSQL is done. - *create no tables* When this option is listed, pgloader skips the creation of table before loading data, target tables must then already exist. Also, when using *create no tables* pgloader fetches the metadata from the current target database and checks type casting, then will remove constraints and indexes prior to loading the data and install them back again once the loading is done. - *create indexes* When this option is listed, pgloader gets the definitions of all the indexes found in the MySQL database and create the same set of index definitions against the PostgreSQL database. - *create no indexes* When this option is listed, pgloader skips the creating indexes. - *drop indexes* When this option is listed, pgloader drops the indexes in the target database before loading the data, and creates them again at the end of the data copy. - *uniquify index names*, *preserve index names* MySQL index names are unique per-table whereas in PostgreSQL index names have to be unique per-schema. The default for pgloader is to change the index name by prefixing it with `idx_OID` where `OID` is the internal numeric identifier of the table the index is built against. In somes cases like when the DDL are entirely left to a framework it might be sensible for pgloader to refrain from handling index unique names, that is achieved by using the *preserve index names* option. The default is to *uniquify index names*. Even when using the option *preserve index names*, MySQL primary key indexes named "PRIMARY" will get their names uniquified. Failing to do so would prevent the primary keys to be created again in PostgreSQL where the index names must be unique per schema. - *foreign keys* When this option is listed, pgloader gets the definitions of all the foreign keys found in the MySQL database and create the same set of foreign key definitions against the PostgreSQL database. - *no foreign keys* When this option is listed, pgloader skips creating foreign keys. - *reset sequences* When this option is listed, at the end of the data loading and after the indexes have all been created, pgloader resets all the PostgreSQL sequences created to the current maximum value of the column they are attached to. The options *schema only* and *data only* have no effects on this option. - *reset no sequences* When this option is listed, pgloader skips resetting sequences after the load. The options *schema only* and *data only* have no effects on this option. - *downcase identifiers* When this option is listed, pgloader converts all MySQL identifiers (table names, index names, column names) to *downcase*, except for PostgreSQL *reserved* keywords. The PostgreSQL *reserved* keywords are determined dynamically by using the system function `pg_get_keywords()`. - *quote identifiers* When this option is listed, pgloader quotes all MySQL identifiers so that their case is respected. Note that you will then have to do the same thing in your application code queries. - *schema only* When this option is listed pgloader refrains from migrating the data over. Note that the schema in this context includes the indexes when the option *create indexes* has been listed. - *data only* When this option is listed pgloader only issues the `COPY` statements, without doing any other processing. - *single reader per thread*, *multiple readers per thread* The default is *single reader per thread* and it means that each MySQL table is read by a single thread as a whole, with a single `SELECT` statement using no `WHERE` clause. When using *multiple readers per thread* pgloader may be able to divide the reading work into several threads, as many as the *concurrency* setting, which needs to be greater than 1 for this option to kick be activated. For each source table, pgloader searches for a primary key over a single numeric column, or a multiple-column primary key index for which the first column is of a numeric data type (one of `integer` or `bigint`). When such an index exists, pgloader runs a query to find the *min* and *max* values on this column, and then split that range into many ranges containing a maximum of *rows per range*. When the range list we then obtain contains at least as many ranges than our concurrency setting, then we distribute those ranges to each reader thread. So when all the conditions are met, pgloader then starts as many reader thread as the *concurrency* setting, and each reader thread issues several queries with a `WHERE id >= x AND id < y`, where `y - x = rows per range` or less (for the last range, depending on the max value just obtained. - *rows per range* How many rows are fetched per `SELECT` query when using *multiple readers per thread*, see above for details. - *SET MySQL PARAMETERS* The *SET MySQL PARAMETERS* allows setting MySQL parameters using the MySQL `SET` command each time pgloader connects to it. - *CAST* The cast clause allows to specify custom casting rules, either to overload the default casting rules or to amend them with special cases. A casting rule is expected to follow one of the forms: type [ ... ] to [