Maison développement back-end tutoriel php DB2表数据迁移 db2命令 db2下载 db2数据库入门教

DB2表数据迁移 db2命令 db2下载 db2数据库入门教

Jul 29, 2016 am 08:52 AM
db2 迁移

系统用到一个远程数据库。地点在USA,连接速度特别慢。DBA又不给导数据库
只好自己写一个数据库表迁移的方法。但是只能一次一张表慢慢的导。使用PHP编写

<code><span><?php </span><span>//原数据库</span><span>$databaseOri</span> = <span>'原数据库名称'</span>;
    <span>$hostnameOri</span> = <span>'IP地址'</span>;
    <span>$portOri</span> = <span>'端口号'</span>;
    <span>$userOri</span> = <span>'用户名'</span>;
    <span>$passwordOri</span> = <span>'密码'</span>;
    <span>$csOri</span>=<span>"DATABASE=$databaseOri;HOSTNAME=$hostnameOri;PORT=$portOri;PROTOCOL=TCPIP;UID=$userOri;PWD=$passwordOri;"</span>;
    <span>$dbOri</span> = db2_connect (<span>$csOri</span>, <span>$userOri</span>, <span>$passwordOri</span>);
    <span>//目标数据库</span><span>$databaseDes</span> = <span>'要转移到的数据库的名称'</span>;
    <span>$hostnameDes</span> = <span>'IP地址'</span>;
    <span>$portDes</span> = <span>'端口号'</span>;
    <span>$userDes</span> = <span>'用户名'</span>;
    <span>$passwordDes</span> = <span>'密码'</span>;
    <span>$csDes</span>=<span>"DATABASE=$databaseDes;HOSTNAME=$hostnameDes;PORT=$portDes;PROTOCOL=TCPIP;UID=$userDes;PWD=$passwordDes;"</span>;
    <span>$dbDes</span> = db2_connect (<span>$csDes</span>, <span>$userDes</span>, <span>$passwordDes</span>);

    <span>//执行sql的方法</span><span><span>function</span><span>fetcher</span><span>(<span>$db</span>, <span>$query</span>,<span>$par</span> = array<span>()</span>)</span>{</span><span>$stmt</span> = db2_prepare(<span>$db</span>, <span>$query</span>);
        <span>$res</span>=<span>array</span>();
        <span>if</span>(<span>$stmt</span>) {
          <span>//print_r($stmt);</span><span>$ex</span> = db2_execute(<span>$stmt</span>,<span>$par</span>);
          <span>if</span>(<span>$ex</span>) {
            <span>try</span>{
                <span>while</span>(<span>$row</span> = db2_fetch_assoc(<span>$stmt</span>)) {
                    array_push(<span>$res</span>, <span>$row</span>);
                } 
            }<span>catch</span>(<span>Exception</span><span>$e</span>){}
          }<span>else</span>{
            print_r(<span>$query</span>);
          }
        }
        <span>return</span><span>$res</span>;
    }

    <span>//插入数据库的方法</span><span><span>function</span><span>insertIntoDes</span><span>(<span>$db</span>, <span>$query</span>,<span>$par</span> = array<span>()</span>)</span>{</span><span>$stmt</span> = db2_prepare(<span>$db</span>, <span>$query</span>);
        <span>$res</span>=<span>array</span>();
        <span>if</span>(<span>$stmt</span>) {
          <span>$ex</span> = db2_execute(<span>$stmt</span>,<span>$par</span>);
          <span>if</span>(!<span>$ex</span>){
            print_r(<span>$query</span>);
          }
        }
        <span>return</span><span>$res</span>;
    }

    <span><span>function</span><span>transferDB</span><span>(<span>$tableName</span>,<span>$dbOri</span>,<span>$dbDes</span>)</span> {</span><span>//拼出要转移的table的所有字段名</span><span>$tableCloums</span> = fetcher(
            <span>$dbOri</span>,
            <span>"select NAME from sysibm.syscolumns where tbname='"</span>.<span>$tableName</span>.<span>"'"</span>,
            <span>array</span>()
        );
        <span>$tableParams</span> = <span>""</span>;
        <span>$insertParamsLength</span> = count(<span>$tableCloums</span>);
        <span>for</span>(<span>$temp</span>=<span>0</span>;<span>$temp</span>$insertParamsLength</span>;<span>$temp</span>++){
            <span>$tmpName</span> = <span>$tableCloums</span>[<span>$temp</span>][<span>"NAME"</span>];
            <span>$tableParams</span> = <span>$tableParams</span>.<span>$tmpName</span>;
            <span>//print_r($tableCloums[$temp]["NAME"]);</span><span>if</span>(<span>$temp</span> $insertParamsLength - <span>1</span> ){
                <span>$tableParams</span> = <span>$tableParams</span>.<span>","</span>;
            }
        }
        <span>//找出table的主键</span><span>$resultKeyArray</span> = fetcher(
            <span>$dbOri</span>,
            <span>"select NAME from sysibm.syscolumns where tbname='"</span>.<span>$tableName</span>.<span>"' and keyseq = '1'"</span>,
            <span>array</span>()
        );
        <span>if</span>(<span>$resultKeyArray</span>[<span>0</span>][<span>"NAME"</span>]){
            <span>$keyCloum</span> = <span>$resultKeyArray</span>[<span>0</span>][<span>"NAME"</span>];
        }<span>else</span>{
            <span>$keyCloum</span> = <span>"ID"</span>;
        }


        <span>//获取表的所有行数,因为如果表太大有几百万行的话,一下全导入到内存中会照成内存溢出</span><span>$count</span> = fetcher(
            <span>$dbOri</span>,
            <span>"select COUNT(*) from public."</span>.<span>$tableName</span>,
            <span>array</span>()
        );
        <span>$dataCount</span> = <span>$count</span>[<span>0</span>][<span>1</span>];
        <span>//确定要执行几次</span><span>$executeloops</span> = floor(<span>$dataCount</span> / <span>10000</span> + <span>1</span>);
        <span>//$executeloops = 1;</span><span>//循环执行</span><span>for</span>(<span>$i</span>=<span>0</span>;<span>$i</span>$executeloops;<span>$i</span>++){
            <span>$pageIndex</span> = <span>$i</span>;
            <span>$beginIndex</span> = <span>$i</span>*<span>10000</span>;
            <span>$endIndex</span> = (<span>$i</span>+<span>1</span>) * <span>10000</span>;
            <span>//通过分页查询,每次从原表中获取1万条数据</span><span>$getDataFromOriTab</span> = 
            <span>"select "</span>.<span>$tableParams</span>.<span>" from (
                select ROW_NUMBER() OVER(ORDER BY "</span>.<span>$keyCloum</span>.<span>" DESC) AS ROWNUM, "</span>.<span>$tableParams</span>.<span>" from public."</span>.<span>$tableName</span>.<span>"  
            ) a where ROWNUM > "</span>.<span>$beginIndex</span>.<span>" and ROWNUM .<span>$endIndex</span> ;
            <span>//fwrite($myfile, $getDataFromOriTab);</span><span>$tmpData</span> = fetcher(<span>$dbOri</span>,<span>$getDataFromOriTab</span>,<span>array</span>());
            <span>//拼接出insert语句中字段的value的值</span><span>$valueStr</span> = <span>""</span>;
            <span>foreach</span>(<span>$tmpData</span><span>as</span><span>$index</span> => <span>$row</span>){
                <span>$valueStr</span> = <span>""</span>;
                <span>foreach</span> (<span>$row</span><span>as</span><span>$cloumName</span> => <span>$value</span>) {
                    <span>if</span>(<span>empty</span>(<span>$value</span>)){
                        <span>$valueStr</span> = <span>$valueStr</span> . <span>"'',"</span>;
                    }<span>else</span><span>if</span> (is_null(<span>$value</span>)) {
                        <span>$valueStr</span> = <span>$valueStr</span> . <span>"null,"</span>;
                    }<span>else</span>{
                        <span>$valueStr</span> = <span>$valueStr</span> . <span>"$value,"</span>;
                    }
                }
                <span>$valueStr</span> = substr(<span>$valueStr</span>, <span>0</span>, -<span>1</span>);
                <span>$insertSql</span> = <span>"INSERT INTO public."</span>.<span>$tableName</span>.<span>" ("</span>.<span>$tableParams</span>.<span>") VALUES ("</span>.<span>$valueStr</span>.<span>");"</span>;
                insertIntoDes(<span>$dbDes</span>,<span>$insertSql</span>,<span>array</span>()); 
            }
        }

    }
    <span>//参数为要导的表的表名</span>
    transferDB(<span>"表名"</span>,<span>$dbOri</span>,<span>$dbDes</span>);
<span>?></span></span></code>
Copier après la connexion
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了DB2表数据迁移,包括了db2,迁移方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment migrer l'historique des discussions WeChat vers un nouveau téléphone Comment migrer l'historique des discussions WeChat vers un nouveau téléphone Mar 26, 2024 pm 04:48 PM

1. Ouvrez l'application WeChat sur l'ancien appareil, cliquez sur [Moi] dans le coin inférieur droit, sélectionnez la fonction [Paramètres] et cliquez sur [Chat]. 2. Sélectionnez [Migration et sauvegarde de l'historique des discussions], cliquez sur [Migrer] et sélectionnez la plate-forme vers laquelle vous souhaitez migrer l'appareil. 3. Cliquez sur [Sélectionner les discussions à migrer], cliquez sur [Sélectionner tout] dans le coin inférieur gauche ou sélectionnez vous-même les enregistrements de discussion. 4. Après la sélection, cliquez sur [Démarrer] dans le coin inférieur droit pour vous connecter à ce compte WeChat à l'aide du nouvel appareil. 5. Scannez ensuite le code QR pour lancer la migration des enregistrements de discussion. Les utilisateurs n'ont qu'à attendre la fin de la migration.

Linux et Docker : Comment migrer et synchroniser les conteneurs entre les hôtes ? Linux et Docker : Comment migrer et synchroniser les conteneurs entre les hôtes ? Jul 29, 2023 pm 02:52 PM

Linux et Docker : Comment migrer et synchroniser les conteneurs entre les hôtes ? Résumé : Docker est une technologie de conteneurisation populaire qui fournit une solution de virtualisation légère. Dans un environnement multi-hôtes, il est très courant de migrer et de synchroniser les conteneurs entre les hôtes. Cet article explique comment utiliser Linux et Docker pour implémenter la migration entre hôtes et la synchronisation des conteneurs, et fournit un exemple de code pour référence. Introduction L'essor de la technologie de conteneurisation rend le déploiement et la migration des applications plus flexibles et plus efficaces. sur plusieurs hôtes

Comment migrer et intégrer des projets dans GitLab Comment migrer et intégrer des projets dans GitLab Oct 27, 2023 pm 05:53 PM

Comment migrer et intégrer des projets dans GitLab Introduction : Dans le processus de développement logiciel, la migration et l'intégration de projets sont une tâche importante. En tant que plate-forme d'hébergement de code populaire, GitLab fournit une série d'outils et de fonctions pratiques pour prendre en charge la migration et l'intégration de projets. Cet article présentera les étapes spécifiques de la migration et de l'intégration du projet dans GitLab, et fournira quelques exemples de code pour aider les lecteurs à mieux comprendre. 1. Migration de projet La migration de projet consiste à migrer la base de code existante d'un système de gestion de code source vers GitLab

Quelle est la différence entre la syntaxe DB2 et Oracle Quelle est la différence entre la syntaxe DB2 et Oracle Jul 05, 2023 am 10:39 AM

Différences de syntaxe entre db2 et oracle : 1. Différences de syntaxe SQL. Bien que db2 et oracle utilisent tous deux un langage de requête structuré, ils présentent certaines différences de syntaxe ; 2. db2 et oracle ont des types de données différents. être défini lors de la création de la table ou ajouté après l'utilisation de l'instruction "ALTER TABLE". Oracle doit être défini ensemble lors de la création de la table 4. Il existe également quelques différences dans la syntaxe des procédures et fonctions stockées db2 et Oracle.

Comment transférer l'historique des discussions WeChat vers un autre téléphone mobile Comment transférer l'historique des discussions WeChat vers un autre téléphone mobile May 08, 2024 am 11:20 AM

1. Sur l'ancien appareil, cliquez sur « Moi » → « Paramètres » → « Chat » → « Migration et sauvegarde de l'historique des discussions » → « Migrer ». 2. Sélectionnez l'appareil de la plate-forme cible à migrer, sélectionnez les enregistrements de discussion à migrer et cliquez sur « Démarrer ». 3. Connectez-vous avec le même compte WeChat sur le nouvel appareil et scannez le code QR pour démarrer la migration de l'historique des discussions.

Modernisation du cloud avec C++ : migration des applications héritées vers le cloud Modernisation du cloud avec C++ : migration des applications héritées vers le cloud Jun 01, 2024 am 09:21 AM

La meilleure façon de déplacer les anciennes applications C++ vers le cloud : Restructuration : migrez le code de l'application vers une plate-forme cloud native (telle que Kubernetes) et exploitez les services cloud. Cloudification : déployez des applications sur des plates-formes cloud et utilisez les services cloud sans refactorisation du code.

Comment migrer l'historique des discussions WeChat vers un autre téléphone Comment migrer l'historique des discussions WeChat vers un autre téléphone Mar 26, 2024 pm 04:50 PM

En ouvrant WeChat sur l'ancien appareil, en sélectionnant « Migration et sauvegarde de l'historique des discussions » et en suivant les invites, les utilisateurs peuvent migrer leur historique de discussions vers le nouvel appareil. Le processus de migration consiste à sélectionner les discussions à migrer, à scanner le code QR et à attendre la fin de la migration.

Comment effectuer une migration de serveur dans le système Linux Comment effectuer une migration de serveur dans le système Linux Jun 18, 2023 pm 10:01 PM

Dans les systèmes informatiques d'entreprise, la migration des serveurs est une tâche régulière qui peut aider les entreprises à améliorer l'utilisation des serveurs, à répondre aux besoins de l'entreprise, à mettre à jour l'équipement matériel, etc. Bien que la migration de serveurs dans les systèmes Linux présente certains défis, avec une planification et une mise en œuvre raisonnables, ce travail peut être rendu simple et efficace. Ci-dessous, nous présenterons quelques étapes clés pour la migration de serveur dans les systèmes Linux. Travail de préparation Avant d'effectuer la migration du serveur, certaines préparations doivent être effectuées sur le serveur source et le serveur cible.

See all articles